Wi-Fiセキュリティ監査の第一歩👣
こんにちは! 👋 Wi-Fiのセキュリティに関心がある皆さん、特にWi-Fi Protected Setup (WPS) の脆弱性について調査している方なら、reaver
というツールをご存知かもしれません。reaver
はWPS PINのブルートフォース攻撃を行う強力なツールですが、その攻撃対象を見つけるために不可欠なのが、今回ご紹介する wash
コマンドです。
wash
は、reaver
パッケージに含まれる補助的なツールで、周囲にあるWi-Fiアクセスポイント(AP)をスキャンし、その中からWPSが有効になっているAPを特定するために設計されています。WPSは、ユーザーが複雑なパスワードを入力することなく、簡単にWi-Fiに接続できるようにするための規格ですが、特にPIN方式にはブルートフォース攻撃に対して脆弱な実装が存在することが知られています。wash
は、これらの潜在的に脆弱なAPを見つけ出すための最初のステップとなります。
具体的には、wash
は無線インターフェースを監視モード(モニターモード)にして、APが発するビーコンフレームやプローブ応答をキャプチャ・解析します。これにより、各APのBSSID(MACアドレス)、チャンネル、電波強度(RSSI)、対応しているWPSのバージョン、そして重要なWPSロック状態などを一覧表示します。この情報をもとに、reaver
で攻撃を試みるべきターゲットを効率的に絞り込むことができるのです。🔍
このブログ記事では、wash
のインストール方法から基本的な使い方、便利なオプション、出力結果の読み方、そしてトラブルシューティングまで、包括的に解説していきます。この記事を読めば、あなたも wash
を使いこなし、Wi-Fiセキュリティ監査のスキルを一段階レベルアップできるはずです! 💪
⚠️ 法令遵守と倫理について
wash
および reaver
は、Wi-Fiネットワークのセキュリティを評価するためのツールですが、自分自身が管理するネットワーク、または明示的な許可を得たネットワークに対してのみ使用してください。許可なく他人のネットワークに対してこれらのツールを使用することは、不正アクセス禁止法などの法律に抵触する可能性があり、重大な法的・倫理的問題を引き起こします。ツールの使用は自己責任において、法規制と倫理を遵守して行ってください。
🛠️ Washのインストールと準備
wash
は独立したソフトウェアではなく、reaver
パッケージの一部として提供されています。したがって、wash
を使うためには reaver
をインストールする必要があります。
インストール方法
多くのLinuxディストリビューション、特にKali Linuxのようなペネトレーションテスト用途のディストリビューションでは、reaver
は標準でインストールされているか、パッケージマネージャーから簡単にインストールできます。
Debian / Ubuntu / Kali Linux ベースの場合:
sudo apt update
sudo apt install reaver
Arch Linux ベースの場合:
sudo pacman -S reaver
macOSの場合は、MacPortsなどを利用してインストールできる場合があります。
sudo port install reaver
また、最新版を使いたい場合や、特定の機能(libnl
サポートなど)を有効にしてビルドしたい場合は、GitHubのreaver-wps-fork-t6xリポジトリからソースコードをクローンして自分でコンパイルすることも可能です。
# 必要な依存関係をインストール (Debian/Ubuntu系の場合)
sudo apt install build-essential libpcap-dev sqlite3 libsqlite3-dev libpcap0.8-dev
# ソースコードを取得
git clone https://github.com/t6x/reaver-wps-fork-t6x.git
cd reaver-wps-fork-t6x/src
# ビルドとインストール
./configure
make
sudo make install
※ ソースからビルドする場合、環境によっては追加のライブラリ(例: libnl-3-dev
, libnl-genl-3-dev
)が必要になることがあります。
実行に必要な環境
wash
を使用するには、以下の準備が必要です。
-
root権限: ネットワークインターフェースを制御し、生パケットをキャプチャするため、通常はroot権限(
sudo
)が必要です。 -
モニターモード対応の無線LANアダプター:
wash
は、周囲のWi-Fiパケットを promiscuous mode(無差別モード)で受信する必要があります。これには、無線LANアダプターが「モニターモード(Monitor Mode)」に対応している必要があります。すべてのアダプターが対応しているわけではないため、事前に確認が必要です。Atheros, Ralink, Realtekなどのチップセットを搭載したアダプターの一部がよく利用されます。 -
モニターモードへの切り替え: アダプターがモニターモードに対応していても、通常はマネージドモード(Managed Mode)で動作しています。
wash
を実行する前に、手動でモニターモードに切り替える必要があります。これにはairmon-ng
(aircrack-ng
スイートの一部)などのツールがよく使われます。
モニターモードへの切り替え手順 (airmon-ngを使用)
-
利用可能な無線インターフェースを確認します。
iwconfig
または
ip link show
(例:
wlan0
) -
airmon-ng
を使って、干渉する可能性のあるプロセスを確認し、必要であれば停止します。(このステップは必須ではない場合もありますが、問題発生時には試す価値があります)sudo airmon-ng check kill
-
指定したインターフェースでモニターモードを開始します。
sudo airmon-ng start wlan0
これにより、新しいモニターモード用のインターフェースが作成されることが多いです(例:
wlan0mon
やmon0
)。成功すると、作成されたインターフェース名が表示されます。 -
(オプション) モニターモードになっているか確認します。
iwconfig
作成されたインターフェースの Mode が “Monitor” になっていれば成功です。
これで wash
を実行する準備が整いました! ✨
🚀 Washの基本的な使い方と出力の見方
wash
の基本的な構文は非常にシンプルです。モニターモードのインターフェースを指定して実行するだけです。
基本コマンド
モニターモードのインターフェースが wlan0mon
である場合、以下のコマンドを実行します。
sudo wash -i wlan0mon
実行すると、wash
は周囲のWPS対応アクセスポイントをスキャンし始め、以下のような形式で結果を表示します。
Wash v1.6.6 WiFi Protected Setup Scan Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner
BSSID Ch dBm WPS Lck Vendor ESSID
--------------------------------------------------------------------------------
B8:A3:86:0C:25:64 1 -77 1.0 No RalinkTe RT-36
28:28:5D:A4:E9:66 1 -75 1.0 No RalinkTe Keenetic-0433
E0:3F:49:6A:57:78 6 -73 1.0 No Unknown ASUS
60:A4:4C:E0:FD:94 6 -77 2.0 No Broadcom Ivan S.
00:11:22:33:44:55 11 -60 1.0 Yes Atheros MyHomeNetwork
出力結果の解説
表示される各列の意味は以下の通りです。
列名 | 説明 |
---|---|
BSSID |
アクセスポイントのMACアドレス(Base Service Set Identifier)。これは各APに固有の識別子です。 |
Ch |
アクセスポイントが動作しているWi-Fiチャンネル。 |
dBm |
受信信号強度表示(Received Signal Strength Indication)。数値が大きいほど(マイナスなので0に近いほど)信号が強いことを示します。一般的に -70 dBm 以上であれば比較的良好な接続が期待できます。wash のバージョンや環境によっては、この値が正しく表示されない場合もありましたが、近年のバージョンでは改善されています。 |
WPS |
アクセスポイントが対応しているWPSのバージョン(例: 1.0, 2.0)。 |
Lck |
WPSがロックされているかどうかを示します (Locked?)。「Yes」または「1」と表示されている場合、ブルートフォース攻撃対策としてWPS機能が一時的または永続的にロックされていることを意味します。reaver で攻撃を試みても、ロックされているAPに対してはPINの試行が失敗します。ロックが解除されるまで待つか、他のターゲットを探す必要があります。「No」または「0」であれば、ロックされていない状態です。 |
Vendor |
アクセスポイントのベンダー(製造元)情報。これはMACアドレスのOUI(Organizationally Unique Identifier)部分から推測されるか、またはプローブ応答から取得されます(-s, --scan オプション使用時)。チップセットメーカー名が表示されることもあります(例: RalinkTe, Broadcom, Atheros)。Pixie Dust攻撃などの特定の攻撃が有効なベンダーかどうかの判断材料になります。 |
ESSID |
アクセスポイントのネットワーク名(Extended Service Set Identifier)。いわゆるWi-Fi名です。 |
この出力を見れば、どのAPがWPSに対応しており、reaver
による攻撃の潜在的なターゲットとなり得るかが一目でわかります。特に Lck
が “No” になっているAPが有望な候補となります。🎯
🔧 Washの便利なオプション
wash
には、スキャンをより効率的かつ詳細に行うための様々なオプションが用意されています。よく使われるものをいくつか見ていきましょう。
オプション (短い形式) | オプション (長い形式) | 説明 |
---|---|---|
-i <iface> |
--interface=<iface> |
必須: パケットキャプチャに使用するモニターモードのインターフェース名を指定します。 (例: -i wlan0mon ) |
-f [FILE...] |
--file [FILE...] |
ライブキャプチャの代わりに、指定したpcapファイルからパケットを読み込んで解析します。複数のファイルを指定できます。 (例: -f capture1.pcap capture2.pcap ) |
-c <num> |
--channel=<num> |
特定のチャンネルのみをスキャンします。デフォルトでは利用可能な全チャンネルをスキャンします。 (例: -c 6 はチャンネル6のみスキャン) |
-o <file> |
--out-file=<file> |
スキャン結果(標準出力に出る内容)を指定したファイルに書き出します。(注: -O オプションとは異なります) |
-O <filename> |
--output-file=<filename> |
関心のあるパケット(WPS IEを含むビーコンなど)を指定したpcapファイルに書き込みます。デバッグや詳細分析に役立ちます。 |
-n |
--probes=<num> |
スキャンモード(-s )使用時、各APに送信するプローブ要求の最大数を指定します。デフォルトは15です。 |
-D |
--daemonize |
wash をバックグラウンドプロセス(デーモン)として実行します。 |
-5 |
--5ghz |
5GHz帯のチャンネルをスキャンします。デフォルトは2.4GHz帯です。両方を同時にスキャンすることはできません(-2 または -5 を指定)。 |
-2 |
--2ghz |
2.4GHz帯のチャンネルをスキャンします。これがデフォルトの動作です。 |
-s |
--scan |
スキャンモードを使用します。デフォルトのサーベイモード(-u )はビーコンを passively に待つのに対し、スキャンモードは各APにプローブ要求を actively に送信し、プローブ応答からより詳細な情報(ベンダー情報など)を取得しようとします。 |
-u |
--survey |
サーベイモードを使用します。これはデフォルトの動作で、ビーコンフレームを passively(受動的)に監視します。 |
-a |
--all |
WPSが有効かどうかに関わらず、検出されたすべてのアクセスポイントを表示します。WPSが無効なAPは、WPSバージョンとLckの列が空欄になります。周辺のネットワーク状況を広く把握したい場合に便利です。 |
-j |
--json |
APのプローブ応答から得られた拡張WPS情報(シリアル番号、モデル名など)をJSON形式で出力します。スクリプトで処理する場合に便利です。-s オプションと併用する必要があります。このオプションを使うと、プローブ応答を待つため、スキャン速度は若干低下します。 |
-C |
--ignore-fcs |
フレームチェックシーケンス(FCS)エラーを無視します。一部のドライバや環境ではFCSエラーが多発し、正常なパケットが破棄されてしまうことがあります。そのような場合にこのオプションを指定すると、スキャン結果が表示されるようになることがあります。ただし、破損したパケットを処理することになるリスクもあります。 |
-U |
--utf8 |
ESSIDをUTF-8として表示します。ESSIDのサニタイズを行わないため、潜在的な表示上の問題やセキュリティリスクを含む可能性があります(非推奨)。 |
-h |
--help |
ヘルプメッセージを表示して終了します。 |
-v |
--version |
バージョン情報を表示して終了します。 |
実践的な使用例
これらのオプションを組み合わせることで、より目的に合ったスキャンが可能になります。
-
チャンネル6のみをスキャンし、FCSエラーを無視する:
sudo wash -i wlan0mon -c 6 -C
-
5GHz帯をスキャンし、WPSの有無に関わらず全APを表示する:
sudo wash -i wlan0mon -5 -a
-
スキャンモードで詳細情報を取得し、JSON形式で出力する:
sudo wash -i wlan0mon -s -j
-
スキャン結果をファイルに保存しつつ、画面にも表示する:
sudo wash -i wlan0mon | tee wash_results.txt
(
-o
オプションとは異なり、パイプとtee
コマンドを使うとリアルタイムで画面確認もできます) -
特定のESSID(例: “MyNetwork”)を持つAPのみを表示する (grepと組み合わせる):
sudo wash -i wlan0mon | grep MyNetwork
wash
自体にESSIDフィルタはありませんが、パイプ機能によりgrep
などの標準的なUnix/Linuxコマンドと簡単に連携できます。
これらのオプションを使いこなすことで、wash
は単なるWPSスキャナーから、より高度なWi-Fi調査ツールへと進化します。🔬
🤔 トラブルシューティングと注意点
wash
を使用していると、時々予期しない問題に遭遇することがあります。ここでは、よくある問題とその対処法、および注意点をいくつか紹介します。
よくある問題と対処法
- 問題:
wash
を実行しても何も表示されずにすぐに終了する。 -
- 原因1: インターフェースがモニターモードになっていない。
iwconfig
コマンドでインターフェースのモードを確認してください。”Monitor” になっていない場合は、airmon-ng start <iface>
で再度モニターモードに設定してください。 - 原因2: インターフェースの指定が間違っている。
-i
オプションで指定したインターフェース名が正しいか確認してください (wlan0
ではなくwlan0mon
やmon0
など)。 - 原因3: 周囲にWPS対応のAPが存在しない。 場所を変えて試すか、
-a
オプションを付けてWPS非対応APも表示されるか確認してみてください。 - 原因4: ドライバーやハードウェアの互換性問題。 使用している無線LANアダプターとLinuxカーネル/ドライバーの組み合わせによっては、モニターモードが正常に機能しない場合があります。別のアダプターを試す、ドライバーを更新/変更するなどの対策が必要になることがあります。
- 原因5: FCSエラーが多発している。
-C
(--ignore-fcs
) オプションを付けて実行してみてください。 - 原因6: チャンネルの問題。 APが使用しているチャンネルを
wash
がスキャンしていない可能性があります。特定のチャンネルに固定されている場合は、-c
オプションでそのチャンネルを指定するか、オプションなしで全チャンネルをスキャンしてみてください。5GHz帯のAPを探している場合は-5
オプションが必要です。 - 原因7:
reaver
の設定ディレクトリが存在しない。 古いバージョンの問題かもしれませんが、/etc/reaver
ディレクトリが存在しないとwash
が動作しない場合がありました。必要であればsudo mkdir /etc/reaver
で作成してみてください。
- 原因1: インターフェースがモニターモードになっていない。
- 問題: “Interface doesn’t support monitor mode” のようなエラーが表示される。
-
使用している無線LANアダプターがモニターモードに対応していないか、対応していてもドライバーが正しく認識・設定されていない可能性があります。アダプターのチップセットを確認し、Linuxでのモニターモード対応状況を調べてください。
- 問題: dBm (信号強度) が常に同じ値または不正確な値になる。
-
これは特定のチップセット(特に古いRalinkやAtherosの一部)とドライバーの組み合わせで見られたバグです。最新版の
reaver
/wash
(特に reaver-wps-fork-t6x) では修正されていることが多いです。もし古いバージョンを使用している場合は、アップデートを検討してください。 - 問題: “Found packet with bad FCS, skipping…” というメッセージが大量に表示される。
-
これはフレームチェックシーケンス(FCS)のエラーを示しています。受信したパケットが破損しているか、ドライバレベルでの問題の可能性があります。
-C
(--ignore-fcs
) オプションを使用すると、これらのパケットを無視せずに処理しようとしますが、根本的な解決にはならない場合があります。
注意点
-
reaver
との連携:wash
はあくまでスキャンツールです。実際にWPS PINのクラックを試みるには、wash
で得られたBSSIDとチャンネル情報をreaver
コマンドの引数として渡す必要があります。(例:sudo reaver -i wlan0mon -b XX:XX:XX:XX:XX:XX -c 6 -vv
) -
WPSロック (Lck) の意味:
Lck
が “Yes” のAPに対してreaver
を実行しても、すぐに失敗するか、非常に時間がかかる(ロックが解除されるのを待つため)可能性があります。効率的に攻撃を行うには、”No” のターゲットを選ぶのが基本です。ただし、ロック機構の実装によっては、短時間でロックが解除される場合や、特定の攻撃(Pixie Dustなど)には影響されない場合もあります。 -
スキャン時間: 全チャンネルをスキャンする場合、特に
-s
や-j
オプションを使用すると、完了までに時間がかかることがあります。特定のチャンネルのみをスキャンする (-c
) ことで時間を短縮できます。 -
ツールのバージョン:
reaver
とwash
は継続的に開発・フォークされています。特に reaver-wps-fork-t6x は多くの改良や新機能(Pixie Dust攻撃対応、JSON出力、-a
オプションなど)が追加されています。可能であれば、最新の安定版や開発版を使用することをお勧めします。
これらの点を理解しておくことで、wash
をより効果的に、そしてトラブルなく利用することができるでしょう。🔧
📝 まとめ
今回は、reaver
スイートに含まれるWPSスキャンツール wash
について、その役割、インストール、使い方、オプション、そしてトラブルシューティングまで詳しく解説しました。
wash
は、Wi-Fiセキュリティ監査、特にWPSの脆弱性を調査する際の最初の情報収集ステップとして非常に重要なツールです。以下の点を押さえておきましょう。
wash
はWPSが有効なアクセスポイントを検出する。- 実行にはroot権限とモニターモード対応の無線LANアダプターが必要。
airmon-ng
などでインターフェースをモニターモードにする必要がある。- 基本的な使い方は
sudo wash -i <monitor-interface>
。 - 出力結果の
BSSID
,Ch
,Lck
列が特に重要。 -c
,-a
,-s
,-j
,-C
などのオプションでスキャンをカスタマイズできる。Lck
が “Yes” のAPはreaver
での攻撃が困難な場合が多い。- 許可のないネットワークへの使用は厳禁! 🚫
wash
で得られた情報を元に、reaver
や PixieWPS などのツールを適切に使用することで、WPSの脆弱性診断を効率的に進めることができます。
ただし、繰り返しになりますが、これらのツールは強力であるため、必ず法と倫理を遵守し、許可されたネットワークに対してのみ使用してください。
この記事が、皆さんのWi-Fiセキュリティに関する知識と技術の向上に役立てば幸いです。🛡️ Happy Hacking! (ethically, of course!) 😉
コメント