WLAN トラフィックをキャプチャする

Wi-Fi パケットをキャプチャすると、デバイスで実行されているソフトウェアに到達する前にマスクされる詳細やインタラクションを確認できます。このため、Wi-Fi パケットのキャプチャは、一部の種類のバグにとって重要なツールとなります。

主な手順は次のとおりです。

  1. スニッフィングする適切なチャネルを見つけます。
  2. トラフィックをキャプチャします。
  3. キャプチャと WLAN パスワードのハッシュを共有します。

1. 適切なチャネルと幅を決定する

WLAN ネットワークは次の周波数帯で動作します。

ネットワーク内の各アクセス ポイント(ルーター、メッシュノードなど)には、通常、一意の 2.4 GHz チャンネルと 5 GHz チャンネルがあり、デバイスがどちらに接続されているかを確認する必要があります。次のように、いくつかのオプションがあります。

ルーターのコントロール パネルを使用する

Nest WiFi を使用している場合は、このオプションをスキップします。この情報は公開されません。

ほとんどのルーターには、接続されているデバイスのリストと、それらのデバイスが使用しているチャネルと幅が表示されます。

  1. こちらのガイドに沿って、ルーターの IP アドレスを確認します。
  2. ウェブブラウザでルーターのアドレス(例: http://192.168.1.1)にアクセスします。
  3. ログインします。パスワードがわからない場合は、ルーターのタグを確認するか、Router Passwords を使用します。
  4. 「クライアント」や「接続されているデバイス」などの名前のページを探します。たとえば、Netgear ルーターのページは次のようになります。Eero デバイスの場合も同様です。

    Netgear のクライアント ビュー

  5. ステップ 4 の情報を特定のチャネルと帯域幅にマッピングするには、設定の別の場所を確認する必要がある場合があります。たとえば、Netgear ルーターの場合:

    Netgear のチャンネル ビュー

Mac がすでに同じチャンネルに接続されている場合は、Mac を使用します。

キーボードの Option キーを押しながら、Mac のステータスバーの右上にある WLAN アイコンをクリックします。通常の WLAN メニューに、いくつかのオプションと情報が追加されて表示されます。利用できないメニュー項目を確認し、[チャンネル] と記載されている項目を探します。

`Channel 60 (DFS, 5GHz, 40MHz)`

Mac WLAN

チャネルと幅が見つからない

他の方法で問題が解決しない場合は、次の方法をお試しください。

  1. AP が使用しているすべてのチャネルをリストします(通常、AP またはメッシュ ポイントごとに 2 つ)。

    a. 推奨: Android スマートフォンの場合は、Wifiman や Aruba Utilities などのアプリを使用できます。

    a. Mac では、/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport-s を使用してオプションを一覧表示できます。

  2. 以下の手順に沿って、各チャンネルで短い(15 秒でも十分)キャプチャを実行します。

  3. Wireshark をインストールします(サポートが必要な場合は、Wireshark をインストールするをご覧ください)。

  4. Wireshark を使用して各キャプチャを開き、wlan.addr == YOUR_DEVICE'S_MAC の表示フィルタを適用して、パケットが表示されるかどうかを確認します。

2. キャプチャを開始する

重要: 4-way handshake のキャプチャ

Wi-Fi のセキュリティが有効になっている場合は、キャプチャしたパケットを復号するために暗号鍵を知る必要があります。暗号鍵は、デバイスがネットワークに接続するときに行われる 4 ウェイ ハンドシェイクから派生し、デバイスと AP 間の接続ごとに一意です。

このため、Wi-Fi ペイロードを復号するには、4 ウェイ ハンドシェイクをキャプチャする必要があります。キャプチャを開始したときにデバイスがすでにネットワークに接続されている場合は、スニッフィングが開始されたら、デバイスを切断して再接続(または再起動)します。

Mac でキャプチャする

キーボードの Option キーを押しながら、WLAN アイコンをクリックし、[Open Wireless Diagnostics…] を選択します。

Mac WLAN キャプチャ

ワイヤレス診断のメニューバーから、[Window] > [Sniffer] を選択します。

Mac WLAN スニファー

チャネルと幅を、先ほど取得した値に設定します(スクリーンショットの例は、チャネル 60、幅 40 MHz の場合)。

Mac WLAN のチャネルと幅

Start を押してパスワードを入力します。次に、問題の再現を試みます。 4-way handshake のキャプチャに記載されているように、接続から 4-way handshake をキャプチャしてください。

完了したら、Stop を押します。すべてのトラフィックを含む新しい *.pcap ファイルが /var/tmp にあります。ファイル名の例: (null)_ch100_2018-11-06_10.52.01.pcap。

Linux でキャプチャする

  1. Wi-Fi をオフにします。これは、次のいずれかの方法で行えます。

    • GUI を使用する(推奨)
    • Network Manager CLI を使用して、WLAN インターフェースの管理を停止するように指示します。sudo nmcli dev set <wlan-ifname> managed on
    • 別のネットワーク マネージャーを使用している場合は、それに応じて調整してください。
  2. このスクリプトを保存します。<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 $@
  3. 前述のスクリプトを実行し、スニッフィングするチャネルと最大帯域幅を渡します。たとえば、80 MHz 帯域幅のチャネル 153 の場合は、次のようにします。

    ./setup-wifi-capture chan 153 80 MHz
  4. Wireshark を開くと、wlan インターフェースでパケットをキャプチャできるようになります。

3. キャプチャを共有する

  1. WPA PSK(Raw Key)Generator を使用して、パスワードのハッシュを生成します。これにより、平文のパスワードを知らなくてもキャプチャを復号できます。

  2. 他のユーザーがキャプチャを復号できるように、生成された 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 + , **)を開きます。

  1. [Protocols] カテゴリの [IEEE 802.11] セクションを見つけて、[Enable decryption] がオンになっていることを確認します。

    Mac Wireshark の設定

  2. [復号鍵] ラベルの横にある [編集] ボタンをクリックします。

  3. 左下にある「+」ボタンをクリックし、[wpa-pwd] オプションを選択します。

    Mac Wireshark WPA とパスワード

  4. 新しく作成した行のキー列(wpa-pwd 文字列のすぐ横)をクリックし、WPA2 PSK と SSID を <password>:<ssid> の形式で入力します。たとえば、ネットワーク名が MyHomeNetwork で、WPA2 PSK が myp4ssword の場合は、myp4ssword:MyHomeNetwork と入力します。

    Mac Wireshark SSID

  5. [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 構成プロファイルをご覧ください。