Wi-Fi パケットをキャプチャすると、デバイスで実行されているソフトウェアに到達する前にマスクされている詳細やインタラクションを確認できるため、特定の種類のバグの調査に役立ちます。
主な手順は次のとおりです。
- スニッフィングする適切なチャンネルを見つけます。
- トラフィックをキャプチャします。
- キャプチャと WLAN パスワードのハッシュを共有します。
1. 適切なチャンネルと幅を特定する
WLAN ネットワークは次の要素で動作します。
- チャンネル(通常は番号で示されます)。1 ~ 13 は 2.4 GHz チャンネル、 36 ~ 200 は 5 GHz チャンネルです。
- 特定の幅(20 MHz、40 MHz、80 MHz、160 MHz)
ネットワーク内の各アクセス ポイント(ルーター、メッシュノードなど)には通常、固有の 2.4 GHz チャンネルと 5 GHz チャンネルがあり、デバイスが接続されているチャンネルを特定する必要があります。次のように、いくつかのオプションがあります。
ルーターのコントロール パネルを使用する
Nest WiFi を使用している場合は、このオプションをスキップしてください。情報は公開されません。
ほとんどのルーターには、接続されているデバイスと、使用しているチャンネルと幅のリストがあります。
- こちらのガイドを使用して、ルーターの IP アドレスを確認します。
- ウェブブラウザでルーターのアドレス( http://192.168.1.1など)に移動します。
- ログインします。パスワードがわからない場合は、ルーターのタグを探すか、 Router Passwords を使用します。
「クライアント」や「接続されているデバイス」などの名前のページを探します。たとえば、Netgear ルーターのページは次のようになります。 Eero デバイスの場合も同様です 。
場合によっては、設定の別の場所で、ステップ 4 の情報を特定のチャンネルと帯域幅にマッピングする必要があります。たとえば、Netgear ルーターの場合:
Mac が同じチャンネルにすでに接続されている場合は、Mac を使用する
キーボードのOption キーを押しながら、Mac のステータス バーの右上にある WLAN アイコンをクリックします。通常の WLAN メニューが表示され、いくつかのオプションと情報が表示されます。使用できないメニュー項目を確認し、「Channel:」と表示されている項目を探します。
`Channel 60 (DFS, 5GHz, 40MHz)`
チャンネルと幅が見つからない
他の方法で解決しない場合は、次のことを試してください。
AP が使用しているすべてのチャンネルを一覧表示します(通常は AP またはメッシュポイントごとに 2 つ)。
a. 推奨 Android スマートフォンを使用している場合は、 Wifiman や Aruba Utilities などのアプリを使用できます。
a. Mac では、
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport-sを使用してオプションを一覧表示できます。以下の手順に沿って、各チャンネルで短いキャプチャ(15 秒でも十分)を実行します。
Wireshark をインストールします(手順については、 Wireshark をインストールするをご覧ください)。
Wireshark を使用して各キャプチャを開き、
wlan.addr == YOUR_DEVICE'S_MACの表示フィルタを適用して、パケットが表示されるかどうかを確認します。
2. キャプチャを開始する
重要: 4 ウェイ ハンドシェイクをキャプチャする
Wi-Fi のセキュリティがオンになっている場合は、キャプチャしたパケットを復号化するための暗号鍵が必要です。暗号鍵は、デバイスがネットワークに接続するときに発生する 4 ウェイ ハンドシェイクから派生し、デバイスと AP 間の接続ごとに固有です。
そのため、Wi-Fi ペイロードを復号化するには、4 ウェイ ハンドシェイクをキャプチャする必要があります 。キャプチャを開始したときにデバイスがすでにネットワークに接続されている場合は、スニッフィングを開始したら、デバイスの接続を切断して再接続するか、再起動します。
Mac でキャプチャする
キーボードの Option キーを押しながら WLAN アイコンをクリックし、[Open Wireless Diagnostics…](ワイヤレス診断を開く...)を選択します。
ワイヤレス診断のメニューバーから、[Window] > [Sniffer] (ウィンドウ > スニッファ)を選択します。
チャンネルと幅を先ほど取得した値に設定します(スクリーンショットの例はチャンネル 60、幅 40 MHz です)。
[Start] を押してパスワードを入力します。次に、問題の再現を試みます。
4 ウェイ ハンドシェイクをキャプチャするに記載されているように、接続から 4 ウェイ ハンドシェイクをキャプチャしてください。
4 ウェイ ハンドシェイクをキャプチャする。
完了したら、[Stop] を押します。すべてのトラフィックを含む新しい *.pcap ファイルが /var/tmp にあります。ファイル名の例: (null)_ch100_2018-11-06_10.52.01.pcap
Linux でキャプチャする
Wi-Fi をオフにします。次のいずれかの方法でオフにできます。
- GUI を使用する(推奨)
- Network Manager CLI を使用して、WLAN
インターフェースの管理を停止するように指示する:
sudo nmcli dev set <wlan-ifname> managed on - 別のネットワーク マネージャーを使用している場合は、適宜調整してください。
このスクリプトを保存します。
<wlan-ifname>は、Wi-Fi インターフェースの名前に置き換えます。このドキュメントでは、スクリプト名はsetup-wifi-captureであることを前提としています。#!/usr/bin/env bash sudo ifconfig <wlan-ifname> down sudo rfkill unblock wifi sudo iwconfig <wlan-ifname> mode monitor sudo ifconfig <wlan-ifname> up sudo iw dev <wlan-ifname> set channel $@前のスクリプトを実行し、スニッフィングするチャンネルと最大の帯域幅を渡します(例: チャンネル 153、帯域幅 80 MHz)。
./setup-wifi-capture chan 153 80 MHzWireshark を開くと、wlan インターフェースでパケットをキャプチャできるようになります。
3. キャプチャを共有する
WPA PSK(Raw Key)Generator を使用して、パスワードのハッシュを生成します。これにより、平文のパスワードを知らなくてもキャプチャを復号化できます。
生成された PSK も共有する必要があります。これにより、他のユーザーがキャプチャを復号化できます。
付録
Wireshark をインストールする
Wireshark は、Linux で apt install wireshark を使用してインストールするか、 Wireshark ウェブサイトからオンラインでダウンロードできます。
トラフィックを復号化するように Wireshark を設定する
キャプチャ ファイルを共有する場合は必要ありません。Wireshark で復号化されたトラフィックを自分で確認する場合にのみ行ってください。
Wi-Fi で WPA2 セキュリティを使用する場合、WPA2-PSK はトラフィックの暗号化と復号化に直接使用されません。パケットを復号化するためにキャプチャする必要がある 4 ウェイ ハンドシェイクで 使用されます。ただし、キャプチャしようとしているのが Wi-Fi への接続に関する問題や接続の切断に関する問題のみで、Wi-Fi 管理フレームから取得できる場合は、4 ウェイ ハンドシェイクをキャプチャする必要はありません。いずれにしても、キャプチャしても問題はありません。
Wireshark を開き、[Preferences](設定)ページを開きます([Wireshark] メニュー > [Preferences] または **Cmd + , ** )。
[Protocols](プロトコル)カテゴリで [IEEE 802.11] セクションを見つけ、[Enable decryption](復号化を有効にする)がオンになっていることを確認します。
[Decryption Keys](復号鍵)ラベルの横にある [Edit](編集)ボタンをクリックします。
左下にある [+] ボタンをクリックし、[wpa-pwd] オプションを選択します。
新しく作成した行のキー列(wpa-pwd 文字列のすぐ右)をクリックし、 WPA2 PSK と SSID を
<password>:<ssid>の形式で入力します。 たとえば、ネットワーク名がMyHomeNetworkで、WPA2 PSK がmyp4sswordの場合は、myp4ssword:MyHomeNetworkと入力します。
[OK] をクリックして確定します。
詳細については、Wireshark の公式ガイド(スクリーンショット付き)の 802.11 を復号化する方法をご覧ください。
tshark を使用する場合は、次の引数を渡します。
tshark -o wlan.enable_decryption:TRUE -o 'uat:80211_keys:"wpa-pwd","<psk>:<ssid>"'
Wireshark 802.11 データを色分けする
metageek.com に便利な 802.11 カラー プロファイルがあります: Wireshark 構成プロファイルをご覧ください。