GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

P0cL4bs

WiFi-Pumpkin – 悪意のあるWi-Fiアクセスポイント攻撃のためのフレームワーク

投稿日:

悪意のあるWi-Fiアクセスポイント攻撃のためのフレームワーク

WiFi-Pumpkin – 不正なWi-Fiアクセスポイント攻撃のためのフレームワーク

説明

WiFi-Pumpkinは、Wi-Fiセキュリティを監査するための非常に完全なフレームワークです。 主な機能は、偽のAPを作成し、Man In The Middle攻撃を行う機能ですが、機能のリストはかなり広範囲です。

インストール

  • Python 2.7
 git clone https://github.com/P0cL4bs/WiFi-Pumpkin.git
 cd WiFi-Pumpkin
 ./installer.sh --install

インストールする.debファイルをダウンロードする

sudo dpkg -i wifi-pumpkin-0.8.5-all.deb
sudo apt-get -f install # force install dependencies if not install normally

インストールのためにwikiを参照してください

特徴

  • 不正なWi-Fiアクセスポイント
  • Deauth攻撃クライアントAP
  • プローブリクエストモニタ
  • DHCP餓死攻撃
  • 資格情報モニタ
  • 透過プロキシ
  • Windows Updateアタック
  • フィッシングマネージャー
  • 部分バイパスHSTSプロトコル
  • ビーフフックをサポート
  • ARP毒
  • DNSのなりすまし
  • MITMによるパッチバイナリ
  • カルマ攻撃(サポートhostapd-mana)
  • LLMNR、NBT-NS、MDNSポイズナー(レスポンダ)
  • パンプキンプロキシ(ProxyServer(mitmproxy API))
  • オンザフライで画像をキャプチャする
  • TCP-Proxy( scapy付き

寄付

パトリオン:

paypal:

BTC経由:

1HBXz6XX3LcHqUnaca5HRqq6rPUmA3pf6f

プラグイン

プラグイン 説明
Dns2proxy このツールは、DNSサーバーを被害者に変更した後、別の機能を提供します。
Sstrip2 Sslstripは、Moxie MarlinspikeのSSLストリッピング攻撃をベースにしたバージョンfork @ LeonardoNve / @ xtr4ngeを実装するMITMツールです。
Sergio_proxy Sergio Proxy(集約された入力と出力のスーパー有効レコーダー)は、TwistedフレームワークのためにPythonで書かれたHTTPプロキシです。
BDFProxy MITMによるパッチバイナリ:BackdoorFactory + mitmProxy、bdfproxy-ngはフォークであり、元のBDFProxy @secretsquirrelのレビューです。
レスポンダー レスポンダはLLMNR、NBT-NS、MDNSポイズンジャーです。 著者:Laurent Gaffie

透過プロキシ

アクセスしたターゲットにJavaScriptを注入できるようにする、要求と応答を変更するHTTPトラフィックをインターセプトして操作するために使用できる透過プロキシ(mitmproxy)。 あなたは簡単にディレクトリに “pythonファイルを作成するページにデータを注入するモジュールを実装することができます/ plugins / extension /”自動的にPumpkin-Proxyタブに表示されます。

プラグインの例Dev

from mitmproxy.models import decoded # for decode content html
from plugins.extension.plugin import PluginTemplate

class Nameplugin(PluginTemplate):
   meta = {
       'Name'      : 'Nameplugin',
       'Version'   : '1.0',
       'Description' : 'Brief description of the new plugin',
       'Author'    : 'by dev'
   }
   def __init__(self):
       for key,value in self.meta.items():
           self.__dict__[key] = value
       # if you want set arguments check refer wiki more info. 
       self.ConfigParser = False # No require arguments 

   def request(self, flow):
       print flow.__dict__
       print flow.request.__dict__ 
       print flow.request.headers.__dict__ # request headers
       host = flow.request.pretty_host # get domain on the fly requests 
       versionH = flow.request.http_version # get http version 
       
       # get redirect domains example
       # pretty_host takes the "Host" header of the request into account,
       if flow.request.pretty_host == "example.org":
           flow.request.host = "mitmproxy.org"
           
       # get all request Header example 
       self.send_output.emit("\n[{}][HTTP REQUEST HEADERS]".format(self.Name))
       for name, valur in flow.request.headers.iteritems():
           self.send_output.emit('{}: {}'.format(name,valur))
           
       print flow.request.method # show method request 
       # the model printer data
       self.send_output.emit('[NamePlugin]:: this is model for save data logging')

   def response(self, flow):
       print flow.__dict__
       print flow.response.__dict__
       print flow.response.headers.__dict__ #convert headers for python dict
       print flow.response.headers['Content-Type'] # get content type
        
       #every HTTP response before it is returned to the client
       with decoded(flow.response):
           print flow.response.content # content html
           flow.response.content.replace('</body>','<h1>injected</h1></body>') # replace content tag 
      
       del flow.response.headers["X-XSS-Protection"] # remove protection Header
       
       flow.response.headers["newheader"] = "foo" # adds a new header
       #and the new header will be added to all responses passing through the proxy

プラグインについて

wikiのプラグイン

TCPプロキシサーバー

TCPストリームに置くことができるプロキシです。 要求と応答ストリームを( scapyモジュールで) フィルタリングし、WiFi-Pumpkinによって傍受されるTCPプロトコルのパケットをアクティブに変更します。 このプラグインはモジュールを使用して傍受されたデータを表示したり変更したりすることができます。モジュールの実装は最も簡単です。カスタムモジュールを「プラグイン/アナライザ/」に追加するだけで自動的にTCP-Proxyタブに表示されます。

from scapy.all import *
from scapy_http import http # for layer HTTP
from default import PSniffer # base plugin class

class ExamplePlugin(PSniffer):
    _activated     = False
    _instance      = None
    meta = {
        'Name'      : 'Example',
        'Version'   : '1.0',
        'Description' : 'Brief description of the new plugin',
        'Author'    : 'your name',
    }
    def __init__(self):
        for key,value in self.meta.items():
            self.__dict__[key] = value

    @staticmethod
    def getInstance():
        if ExamplePlugin._instance is None:
            ExamplePlugin._instance = ExamplePlugin()
        return ExamplePlugin._instance

    def filterPackets(self,pkt): # (pkt) object in order to modify the data on the fly
        if pkt.haslayer(http.HTTPRequest): # filter only http request 
        
            http_layer = pkt.getlayer(http.HTTPRequest) # get http fields as dict type
            ip_layer = pkt.getlayer(IP)# get ip headers fields as dict type
            
            print http_layer.fields['Method'] # show method http request
            # show all item in Header request http
            for item in http_layer.fields['Headers']:
                print('{} : {}'.format(item,http_layer.fields['Headers'][item]))
            
            print ip_layer.fields['src'] # show source ip address 
            print ip_layer.fields['dst'] # show destiny ip address 
            
            print http_layer # show item type dict
            print ip_layer # show item type dict
            
            return self.output.emit({'name_module':'send output to tab TCP-Proxy'}) 

TCPプロキシについて

WikiのTCP-Proxy

スクリーンショット

wikiのスクリーンショット

よくある質問

wiki に関するよくある質問

お問い合わせ

バグを報告したい、パッチを送ったり、このプロジェクトに関する提案をしたり、私たちを落としたり、 プルリクエストを開く







-P0cL4bs
-, , , , , , ,

執筆者: