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)にアクセスします。
- ログインします。パスワードがわからない場合は、ルーターのタグを確認するか、ルーターのパスワードを使用します。
「クライアント」や「接続されたデバイス」などの名前のページを探します。たとえば、Netgear ルーターのページは次のようになります。Eero デバイスの場合も同様です。
手順 4 の情報を特定のチャンネルと帯域幅にマッピングするには、設定の別の場所を確認する必要がある場合があります。たとえば、Netgear ルーターの場合:
Mac を使用する(すでに同じチャンネルに接続されている場合)
キーボードの Option キーを押しながら、Mac のステータスバーの右上にある WLAN アイコンをクリックします。通常の WLAN メニューが表示され、いくつかのオプションと情報が追加されています。利用できないメニュー項目を確認し、[Channel](チャンネル)と記載されている項目を探します。
`Channel 60 (DFS, 5GHz, 40MHz)`
チャンネルと幅が見つからない
他の方法で解決しない場合は、次の方法をお試しください。
アクセス ポイントが使用しているすべてのチャネルをリストします(通常、アクセス ポイントまたはメッシュ ポイントごとに 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 アイコンをクリックし、[ワイヤレス診断を開く…] を選択します。
ワイヤレス診断のメニューバーで、[Window] > [Sniffer] を選択します。
チャネルと幅を、先ほど取得した値に設定します(スクリーンショットの例は、チャネル 60、幅 40 MHz の場合です)。
Start
を押してパスワードを入力します。問題を再現してみます。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 MHz
Wireshark を開くと、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 + , **)。
[プロトコル] カテゴリの [IEEE 802.11] セクションを見つけ、[復号を有効にする] がオンになっていることを確認します。
[復号鍵] ラベルの横にある [編集] ボタンをクリックします。
左下の [+] ボタンをクリックし、[wpa-pwd] オプションを選択します。
新しく作成した行のキー列(wpa-pwd 文字列のすぐ右)をクリックし、
<password>:<ssid>
の形式で WPA2 PSK と SSID を入力します。たとえば、ネットワーク名がMyHomeNetwork
で、WPA2 PSK がmyp4ssword
の場合は、myp4ssword:MyHomeNetwork
と入力します。[OK] をクリックして確定します
詳細については、Wireshark の公式ガイド(スクリーンショット付き)の How to Decrypt 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 構成プロファイルをご覧ください。