
非推奨、wifipumpkin3 -> https://github.com/P0cL4bs/wifipumpkin3

WiFi-Pumpkin - 不正Wi-Fiアクセスポイント攻撃のためのフレームワーク
WiFi-Pumpkinは、不正なAPフレームワークであり、無防備なターゲットとの間で正当なトラフィックを転送しながら、これらの偽のネットワークを簡単に作成できます。機能は豊富で、不正なWi-Fiアクセスポイント、クライアントAPへのdeauth攻撃、プローブリクエストおよび認証情報モニター、透過プロキシ、Windowsアップデート攻撃、フィッシングマネージャー、ARPポイズニング、DNSスプーフィング、Pumpkin-Proxy、画像のオンザフライキャプチャなどがあります。さらに、WiFi-PumpkinはWi-Fiセキュリティ監査のための非常に完全なフレームワークであり、機能リストは非常に広範囲です。

git clone https://github.com/P0cL4bs/WiFi-Pumpkin.git
cd WiFi-Pumpkin
./installer.sh --install
または、.debファイルをダウンロードしてインストールします
sudo dpkg -i wifi-pumpkin-0.8.8-all.deb
sudo apt-get -f install # force install dependencies if not install normally
インストールについてはwikiを参照してください: Installation
1HBXz6XX3LcHqUnaca5HRqq6rPUmA3pf6f

透過プロキシ(mitmproxy)を使用すると、リクエストとレスポンスを変更してHTTPトラフィックをインターセプトおよび操作でき、訪問したターゲットにJavaScriptを注入できます。"plugins/extension/"ディレクトリにPythonファイルを作成することで、ページにデータを注入するモジュールを簡単に実装でき、自動的にPumpkin-Proxyタブにリストされます。
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ストリームの間に配置できるプロキシです。(scapyモジュール)を使用してリクエストとレスポンスのストリームをフィルタリングし、WiFi-PumpkinによってインターセプトされたTCPプロトコルのパケットを積極的に変更します。このプラグインは、インターセプトされたデータを表示または変更するためのモジュールを使用しており、モジュールの実装は最も簡単です。"plugins/analyzers/"にカスタムモジュールを追加するだけで、自動的に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-Proxyについてはwikiを参照してください
プラグインCaptive-Portalは、攻撃者がWebサーバーとiptablesトラフィックキャプチャルールを組み合わせてワイヤレスアクセスポイントを構築し、フィッシングポータルを作成することを可能にします。ユーザーはパスワードなしでこれらのネットワークに自由に接続でき、しばしばWebを閲覧する前にパスワードが必要なログインページに誘導されます。
キャプティブポータルについてはwikiを参照してください
スクリーンショットについてはwikiを参照してください
FAQについてはwikiを参照してください
バグの報告、パッチの送信、またはこのプロジェクトに関する提案がある場合は、バグ報告を行うか、プルリクエストを送信してください。
| プラグイン | 説明 |
|---|
| Dns2proxy | このツールは、DNSサーバーを被害者に変更した後のポストエクスプロイテーションのための異なる機能を提供します。 |
| Sstrip2 | Sslstripは、Moxie MarlinspikeのSSLストリッピング攻撃を実装したMITMツールで、@LeonardoNve/@xtr4ngeのフォーク版に基づいています。 |
| Sergio_proxy | Sergio Proxy(収集された入力と出力の超効果的なレコーダー)は、Twistedフレームワーク用にPythonで書かれたHTTPプロキシです。 |
| BDFProxy | MITM経由のバイナリパッチ:BackdoorFactory + mitmProxy。bdfproxy-ngは、オリジナルのBDFProxy @secretsquirrelのフォークおよびレビュー版です。 |
| Responder | ResponderはLLMNR、NBT-NS、MDNSポイズナー。作者:Laurent Gaffie |
| PumpkinProxy | HTTPデータをインターセプトするプロキシサーバーで、リクエストとレスポンスをオンザフライで傍受できます。 |
| CaptivePortals | キャプティブポータルは、攻撃者がユーザーがWebを閲覧する前にパスワードが必要なログインページを開くまで、インターネットアクセスをブロックできるようにします。 |