【重要・免責事項】
この記事は、現在では極めて脆弱となったWEP暗号化方式の危険性を技術的に周知・啓発することを目的としています。
検証は必ず自身が所有するルーター、または事前に許可を得た実験環境で行ってください。
許可のない第三者のネットワークに対するパケットキャプチャや解析行為は、不正アクセス禁止法や電波法などの法律に抵触する恐れがあります。
はじめに
ハッキングシミュレーションゲーム『Grey Hack』を始めると、まず脆弱なWi-Fiのパスワードをクラックしてインターネット接続を確立することを迫られます。
そこで使うツールを調べてみると、どうやら現実世界に実在するものばかりであることが判明しました。
そうなると、俄然「現実の環境でもやってみたい!」と思い、検証してみることにしました。
実行環境
- マシン: Mac Studio (macOS Tahoe 26.4.1)
- Wi-Fiルーター: WEPという古いセキュリティ規格で電波を出せるルーター(メルカリで購入)
- クライアントPC: 上記の検証用Wi-Fiルーターに接続したPC(パケット量産用)
当初想定していた手順(よくあるLinux向けの手順)
-
aircrack-ngというツール一式をインストール -
sudo airmon-ng start wlan0
周囲のワイヤレスパケットを受信できるように無線LANカードをモニターモードにする。(wlan0は環境に合わせる) -
sudo airodump-ng wlan0mon
飛んでいるWi-FiのMACアドレス(BSSID)とチャンネルをスキャン -
sudo aireplay-ng (options) (interface)
ルーターにパケットを送りつけ、WEP解析に必要なデータを強制収集 -
aircrack-ng result.cap
取得したデータを元にWEPのパスワードをクラック
遭遇した問題と対応
問題1:airmon-ng コマンドが使えない / airport コマンドも不可
どうやらmacOSでは、無線LANドライバをサードパーティーツールなどから直接コントロール(モニターモードへの強制変更など)できない仕様のようです。
また、以前のmacOS環境では標準の airport コマンドをハックしてキャプチャする方法が有名でしたが、今回の macOS Tahoe 26.4.1 環境では完全に使えなくなっていました。
【対応】macOS標準の「ワイヤレス診断」を活用する
コマンドは使えませんが、Wi-Fiパケットのキャプチャ自体はmacOSの標準機能(GUI)で可能でした。
- メニューバーのWi-Fiマークを
Optionキーを押しながらクリック - 「"ワイヤレス診断"を開く...」 を選択
- ウィンドウが開いたら、アプリはそのままにして上のメニューバーから 「ウインドウ」 > 「スニファ」 を選択
- チャンネルとチャンネル幅を選択(今回は2.4GHz帯のため、環境に合わせて13チャンネル / 20MHz を選択)
- 「開始」をクリックしてキャプチャを開始
- 任意のタイミングで「中止」を押す
-
/var/tmpディレクトリに.pcap(または.wcap)ファイルが保存される
問題2:Macはパケットのインジェクション(注入)ができない
Mac Studioの内蔵無線LANカード(おそらく他のMacも同様)は、パケットのインジェクションに対応していません。
つまり、aireplay-ng コマンドを使って、解析に必要なパケットを能動的にルーターから引き出す(量産させる)ことができません。
【対応】ターゲットWi-Fiに自分で通信を起こさせる
インジェクションができない場合の対応策は2つあります。
- パケットインジェクションに対応した外付けWi-Fiアダプターを購入してMacに繋ぐ
- クラック対象のWi-Fiに接続した別のPCに、自発的に大量の通信をさせてそれを待ち伏せ(キャプチャ)する
今回は手軽に試せる 2 の方法を採用しました。
以上を踏まえて実際に実行した手順
- Macに
aircrack-ngをインストール - 検証用Wi-Fiに接続したPCで、4K動画を40分間再生させて通信を発生させる
- その間に、Macの「スニファ」機能でひたすらWi-Fiパケットをキャプチャする
- キャプチャしたデータを
aircrack-ngコマンドに読み込ませる
問題3:パケットは大量にあるのにクラック失敗
40分間の4K動画再生により、約680万個という膨大なパケットをキャプチャできました。「これだけあれば一瞬で終わるだろう」と思って実行しましたが、なんと失敗。
原因を調べたところ、オプションを指定せずに aircrack-ng <ファイル名> を実行した場合、デフォルトではPTW攻撃というアルゴリズムが動く仕様でした。この攻撃は「中身が予想しやすいパケット(主にARPパケット)」を前提としています。
今回はYouTubeの動画データ(HTTPSなどの暗号化通信)が大半を占めていたため、パケットの総数は多くても、PTW攻撃に必要なARPパケットが圧倒的に不足していたのが失敗の原因でした。
【対応】KoreK攻撃のオプション(-K)を指定する
パケットの種類(ARPかどうか)を問わず、暗号化パケットに含まれるIV(初期化ベクトル)を統計的に処理して力技で解析する KoreK攻撃(-K オプション) に切り替えます。
aircrack-ng -K target_file.pcap
これでクラックが成功
KEY FOUND! という文字に続いて設定していたWEPのパスワードが表示された
あとがき
ゲーム『Grey Hack』に感化されて始めたWi-Fiのパスワードクラック実験でしたが、いざ現実でやってみると、
- Macの内蔵無線LANがパケットインジェクション非対応
- airmon-ng コマンドが使えない
- 定番だった airport コマンドもmacOS Tahoeで(恐らく)廃止
など、ネットにある過去のブログ記事の手順通りでは全く歯が立ちませんでした。
Mac環境ならではの壁が多かったですが、OS標準のスニファ機能と -K オプションの仕様にたどり着くことで、なんとか成功まで漕ぎ着けました。