CentOS 6.4でWi-Fiモニタリング
なんとなくWi-Fi通信のモニタリングをしてみた。
環境
$ uname -a Linux serv 2.6.32-358.11.1.el6.x86_64 #1 SMP Wed Jun 12 03:34:52 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/redhat-release CentOS release 6.4 (Final)
無線LANアダプタ用ドライバのインストール
まずは無線LANアダプタの型番を確認。
$ dmesg | grep -i wireless iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s iwl3945 0000:03:00.0: Detected Intel Wireless WiFi Link 3945ABG iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s iwl3945 0000:03:00.0: Detected Intel Wireless WiFi Link 3945ABG
ここでの作業はマシンによるが、iwl3945の場合は下記のファームウェアのインストールが必要らしい。
$ sudo yum search iwl3945 iwl3945-firmware.noarch : Firmware for Intel® PRO/Wireless 3945 A/B/G network adaptors
$ sudo yum install iwl3945-firmware
インストールが終わったら、カーネルモジュールを再読み込みする。
$ sudo modprobe -r iwl3945 $ sudo modprobe iwl3945
ifconfig
でwlan0
インタフェースが有効になっているか確認。
$ ifconfig
アプリケーションのインストール
パケットダンプ用にtcpdump
、無線LANインタフェースの設定変更用にwireless-tools
をインストールする。
wireless-tools
をインストールすると、iwconfig
やiwlist
といったコマンドが使えるようになる。
$ sudo yum install tcpdump $ sudo yum install wireless-tools
アクセスポイントのSSIDをスキャンする
wlan0がManagedモードになっていることを確認。
$ sudo iwconfig wlan0 wlan0 IEEE 802.11abg ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=15 dBm
SSIDをスキャンして表示する。
$ sudo iwlist wlan0 scanning | grep -i essid ESSID:"logitecuser" ESSID:"logitecgameuser"
無線クライアントからのProbe Requestを収集する
wlan0をMonitorモードに切り換える。
$ sudo ifconfig wlan0 down $ sudo iwconfig wlan0 mode monitor $ sudo ifconfig wlan0 up
$ sudo iwconfig wlan0 wlan0 IEEE 802.11abg Mode:Monitor Frequency:2.412 GHz Tx-Power=15 dBm
モニタするチャンネル(1~14)を設定して、tcpdumpですべてのフレームをダンプする。
$ sudo iwconfig wlan0 channel 1 $ sudo tcpdump -i wlan0 hh:mm:ss.SSSSSS 1.0 Mb/s 2412 MHz 11b -80dB signal antenna 2 [0x0000000e] Data IV:106 Pad 20 KeyID 1
Probe Requestのみをダンプする。
$ sudo tcpdump -i wlan0 subtype probereq hh:mm:ss.SSSSSS short preamble 11.0 Mb/s 2412 MHz 11b -82dB signal antenna 2 [0x0000000e] Probe Request (Nintendo_3DS_continuous_scan_000) [1.0* 2.0* 5.5* 6.0 9.0 11.0* 12.0 18.0 Mbit]
たとえば上のような結果が得られた場合、周囲でNintendo 3DSが起動している可能性が高い。
これは、SSID Nintendo_3DS_continuous_scan_000
へのProbe RequestがNintendo 3DSのすれ違い通信で使われているためである。
参考
上で示した実行例では一度に一つのチャンネルしかダンプできないが、下記サイトで説明されているように定期的にモニタするチャンネルを変更 (channnel hopping) することで効率的にモニタリングを行うことができる。
また、Aircrack-ngに含まれるairodump-ng
を利用することで、より簡単に必要な情報を得ることもできる。