0%

无线网络分析 - 监听

某些无线网卡具有监听能力 monitor,使用工具 iwiwconfig 等将模式切换到 monitor 之后,可以使用 tcpdumpwireshark 等抓包工具抓包进行分析,本文记录各个过程中可能使用到的工具

无线网卡的工作模式

可以使用工具 iw 来确认选定网卡支持那些工作模式

$ iw list
...
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * monitor
         * P2P-client
         * P2P-GO
         * P2P-device
...

其中 Managed 为托管模式,无线网卡只接受从 WAP 发给自己的数据报文; monitor 为监听模式,可以接收所有的无线通信数据包。

设置网卡为监听模式

iwconfig

iwconfig 可以用来查看无线网卡的状态,或修改无线网卡的模式

$ iwconfig
lo        no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:"defenceOTA"
          Mode:Managed  Frequency:2.412 GHz  Access Point: 6C:72:20:5D:7F:57
          Bit Rate=130 Mb/s   Tx-Power=16 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=50/70  Signal level=-60 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:3  Invalid misc:4   Missed beacon:0

$ sudo ifconfig wlan0 down
$ sudo iwconfig wlan0 mode monitor
$ sudo ifconfig wlan0 up

aircrack-ng

aircrack-ng 提供了一整套无线工具,每一个都小巧精练,各有春秋,如瑞士军刀一般, airmon-ng 就是其中之一。可以同时上网和监听数据

$ sudo airmon-ng

Interface   Chipset     Driver

wlan0       Atheros AR9280  ath9k - [phy0]
enx0        Unknown     rtl8812au

$ sudo airmon-ng start wlan0

Found 3 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to kill (some of) them!

PID Name
12341   NetworkManager
12354   wpa_supplicant
12363   dhclient
Process with PID 12363 (dhclient) is running on interface wlan0

Interface   Chipset     Driver

wlan0       Atheros AR9280  ath9k - [phy0]
                (monitor mode enabled on mon0)

airmon-ng 新建了一个虚拟网卡 mon0,并在 mon0 上启用了监听模式,真实的无线网卡 wlan0 保持不变

另外可以使用 airmon-ng check 来检测系统中当前正在运行的进程,分析出哪些进程可能会对无线抓包有影响,并显示出来。可以使用 airmon-ng check kill 直接 kill 掉那些可能有影响的进程。

iw

iwLinux 系统上的另一款无线配置工具,它的出现是为了解决 iwconfig 的很多不足,或者说它完全是为了取代 iwconfig 而开发的。 iw 基于 cfg80211 框架设计,不再像 Wireless-Extensions(Wext) 使用 ioctl,而是使用 Netlink

$ iw list
$ iw dev
$ iw dev wlan0 info
$ iw dev wlan0 link
$ iw dev wlan0 interface add mon0 type monitor

iw dev wlan0 interface add mon0 type monitor 新增了一个虚拟网卡接口 mon0,并将 mon0 设置为监听模式。然后需要

$ ifconfig mon0 up
$ iw dev mon0 set freq 2437

扫描无线网络

iw

$ sudo iw dev wlan0 scan
$ sudo iw dev wlan0 scan | egrep "^BSS|SSID"

iwlist

$ sudo iwlist wlan0 scan
$ sudo iwlist wlan0 scan | egrep "Cell|ESSID|Channel"

kismet

kismet 是一款 Linux 下的无线扫描程序,它的功能非常强大,不仅可以用来扫描周边的无线网络,也支持无线数据包的嗅探和破解,它还可以扫描出周围隐藏的无线热点,更厉害的是,它还内置了 IDS(Intrusion Detection System,入侵检测系统)功能,可以检测出周围是否有无线嗅探器。

需要使用 root 权限运行,其中一步需要添加 interface,如果输入的 interface 不是监听模式,会自动创建一个 wlan0mon 的监听网卡,然后启动监听模式

airodump-ng

$ sudo airmon-ng start wlan0
$ sudo ifconfig mon0 up
$ sudo airodump-ng mon0

抓包

kismet 抓包

譬如在启动 kismet 的时候, kismet 就会在启动目录生成好几个文件,如下

$ ls -l Kis*
-rw-r--r-- 1 root root       0 8 月  15 22:32 Kismet-20160815-22-32-05-1.alert
-rw-r--r-- 1 root root     264 8 月  15 22:32 Kismet-20160815-22-32-05-1.gpsxml
-rw-r--r-- 1 root root   25111 8 月  15 22:32 Kismet-20160815-22-32-05-1.nettxt
-rw-r--r-- 1 root root   57768 8 月  15 22:32 Kismet-20160815-22-32-05-1.netxml
-rw-r--r-- 1 root root 1822733 8 月  15 22:32 Kismet-20160815-22-32-05-1.pcapdump

其中, Kismet-***.pcapdump 就是捕获的数据包,可以使用 Wireshark 等数据包分析工具打开。默认情况下, kismet 会捕获所有的无线通信,数据包会变得非常大,可以通过指定 filter_tracker 参数来限制 kismet 只捕获特定 BSSID 的数据包,譬如下面这样:

sudo kismet --filter-tracker BSSID\(6C:72:20:5D:7F:57\)

airodump-ng 抓包

airodump-ng 默认数据包是不存文件的,可以通过 --write-w 参数将数据包保存到指定文件中:

$ sudo airodump-ng -w pack mon0
$ ls -l pack*
-rw-r--r-- 1 root root  5645 8 月  15 23:48 pack-01.cap
-rw-r--r-- 1 root root  1651 8 月  15 23:48 pack-01.csv
-rw-r--r-- 1 root root  2457 8 月  15 23:48 pack-01.kismet.csv
-rw-r--r-- 1 root root 13460 8 月  15 23:48 pack-01.kismet.netxml

xxx-01.cap 就是捕获的数据包文件,可以使用 Wireshark 打开分析。同样的,这个文件也有可能会很大,因为保存了所有的无线数据报文,如果只需要监听某一个接入点,可以通过 --bssid--essid 等参数指定:

$ sudo airodump-ng mon0 --bssid 6C:72:20:5D:7F:57

tcpdump

$ sudo tcpdump -i mon0 -n -w wireless.cap

wireshark

使用 filterwlan.ta == 6c:72:20:5d:7f:57

Ref

  1. 实战无线网络分析无线监听
  2. Kali-WIFI 攻防(一)—- 无线网络嗅探工具 Kismet
  3. running wireshark “Lua: Error during loading”