Github: https://github.com/P0cL4bs/WiFi-Pumpkin
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 に関するよくある質問