はじめに
無線LANのトラブルシューティングでは、他デバイスのパケットのキャプチャが必要になる場合があります。無線LANによる通信では、自デバイスが送受信するパケット以外をキャプチャするためには、monitor modeでの動作に対応したデバイスが必要です。monitor modeは、有線LANで言うpromiscus modeのようなものですが、すべての環境でその動作がサポートされるものではありません。
monitor modeでの動作はプラットフォーム、無線LANアダプタ、ドライバ等に強く依存しており、残念ながら多くの場合Windowsでは正常に動作することは期待できません。(有償の高額なソフトウェアや専用デバイスが必要になります)
そこで、比較的簡単に無線LANのパケットキャプチャを実行できるMac(macbook)やLinuxでの方法をご紹介します。
本記事は、無線LAN環境でのトラブルシューティングを目的とするものです。不正な目的での利用は法律により罰せられる可能性があります。
参考: 国民のためのサイバーセキュリティサイト > 基礎知識 > サイバーセキュリティ関連の法律・ガイドライン
事前準備
- 無線LANデバイス(内臓・USB)のmonitor modeのサポート(チップセットが対応)を確認
- ドライバが提供されていることを確認
※ 販売間もない無線LANデバイス(USB)のドライバは提供されていない場合が多くあります
キャプチャ手順
Mac(macbook)
標準機能の「ワイヤレス診断」により最も簡単に無線LANのパケットキャプチャが可能です。
1. [Option]キーを押しながら[Wi-Fi]メニューから[ワイヤレス診断]を選択
2. [ウィンドウ]から[スニファ(Sniffer)]を選択、[チャンネル]と[チャンネル幅]を選択、[開始]をクリック
monitor mode(監視モード)で動作中は以下のようなアイコンに変わります
3. monitor mode(監視モード)を終了
[中止]をクリックして、monitor mode(監視モード)を終了します
/var/tmpに[hostname_ch132_YYYY-MM-DD]で始まるファイル名で保存されます(macOS Ventura 13.0)
※ 環境により異なる場合があります
参考: Macでワイヤレス診断を使用する
Linux
- 無線LANデバイス(内臓・USB)のmonitor modeのサポート(チップセットが対応)を確認
- ドライバが提供されていることを確認
- 無線LANのmode変更可能なツールセット(Aircrack-ngなど)をインストール
※ Kali Linuxは、Aircrack-ngがプリインストールされており、インストール不要なLive CDでの
動作が可能です。
1. 無線LANインタフェースをmonitor modeに変更します
1-1. 現在の設定を確認します
# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
1-2. monitor modeへの変更に影響を及ぼす可能性のあるプロセスを確認し、停止します
# airmon-ng check <<- 影響を及ぼす可能性のあるプロセスの確認
Found 3 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before putting
the card in monitor mode, they will interfere by changing channels
and sometimes putting the interface back in managed mode
PID Name
1027 NetworkManager
1085 wpa_supplicant
2389 dhclient
# airmon-ng check kill <<- プロセス終了
Killing these processes:
PID Name
1085 wpa_supplicant
# airmon-ng check <<- 再度実行し、何も表示されないことを確認
1-3(a). monitor modeへの変更 (2.4GHz)
# airmon-ng start wlan0
PHY Interface Driver Chipset
phy0 wlan0 b43 Broadcom on bcma bus, information limited
(mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
(mac80211 station mode vif disabled for [phy0]wlan0)
インタフェースがwlan0monになっていることを確認します
# iwconfig
wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
lo no wireless extensions.
eth0 no wireless extensions.
1-3(b). monitor modeへの変更 (5GHz) ※チャネルを指定します
# airmon-ng start wlan0 48
PHY Interface Driver Chipset
phy0 wlan0 b43 Broadcom on bcma bus, information limited
(mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
(mac80211 station mode vif disabled for [phy0]wlan0)
インタフェースがwlan0monになっていることを確認します
# iwconfig
wlan0mon IEEE 802.11 Mode:Monitor Frequency:5.24 GHz Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
lo no wireless extensions.
eth0 no wireless extensions.
2. Wiresharkでキャプチャします
Wiresharkを起動してmonitor modeに設定した無線LANデバイスを選択します
3. monitor modeを終了します
# airmon-ng stop wlan0mon
PHY Interface Driver Chipset
phy0 wlan0mon b43 Broadcom on bcma bus, information limited
(mac80211 station mode vif enabled on [phy0]wlan0)
(mac80211 monitor mode vif disabled for [phy0]wlan0mon)
インタフェースがwlan0に戻っていることを確認します
# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
※ 必要に応じて、1-2で終了したプロセスを起動します
Linux(仮想マシン on Windows)
USBの無線LANアダプタをPCに挿し、仮想環境で動作しているLinuxにアタッチします。その他は同様の手順でパケットキャプチャが可能です。
※ 内臓の無線LANデバイスは、仮想的な有線LANとして動作するため使用できません