论坛上有挺多抓包的教程,但是一上来就直接说怎么干。本文作为自己工作过程的记录,先把要干的事情讲清楚。首先想要抓取WIFI数据包,先考虑想要抓取哪一种类型的帧,是带有802.11标头的帧还是普通的Ethernet II帧。
802.11帧与Ethernet II 帧的转换
图选自《无线网络权威指南第二版》
如上图所示(802.33帧暂不考虑),EthernetII帧和802.11帧 内容相同的地方在于Type及其之后的IP Packet。Ethernet II帧经过一系列的处理之后会打上802.11标头,加密发送到空中。反过来,802.11帧经过筛选解密等一系列操作之后变成Ethernet II帧。其处理流程简要参考如下,有兴趣可以去深入了解这本书内容。
图选自《无线网络权威指南第二版》
上图中的Wireless Transmission和Wireless reception 部分便是封装好的802.11帧,Wired interface便是EthernII帧。因此,了解这差别之后便可以根据自己需求抓取WIFI包。
根据需求选择抓取方式——空中还是有线
根据笔者的抓包经验和遇到的坑,再参考Gitlab上Wireshark对802.11帧抓包的总结。得出的个人结论如下:
如果只对自己接收的常规包(IP层和以上)感兴趣,对802.11中MAC header中无线电层信息(如信号强度和数据速率)不感兴趣,那么请直接在网卡接口端(Wired)直接抓取报文分析。这种情况抓取的是Ethernet II帧。
如果对一个WIFI网络中多台机器之间的流量感兴趣,或者对802.11中管理包或者控制包感兴趣,或者对无线电层的内容感兴趣,那么可以采取监听模式(monitor)去抓包。这种情况抓取的是802.11帧。
优势 | 劣势 | 适用需求 | |
网卡抓EthernetII | 方便快捷稳定 | 只能抓到单条链路 | 分析IP数据包,分析单条链路数据 |
空中抓802.11 帧 | 可以看到控制帧,管理帧 可以一次抓取多条链路 | 需要特殊的平台和网卡 可能会丢帧 | 分析管理帧控制帧等,分析多条链路数据 |
采取监听模式(monitor)抓802.11包的注意事项
对于直接在网卡界面抓包,没什么可说的,直接在抓包软件Wireshark中选取wlan就可以了。需要重点说明的是采取monitor模式抓包会的注意事项。Wireshark中对抓取802.11包有以下结论Conclusion: the packets you'll be capturing with default settings might be modified, and only a limited number of the packets transmitted through the WLAN.
简单翻译过来一下:使用默认设置抓包,包的内容可能会被改变。并且只有一小部分的包会经过WLAN中。
Unfortunately, changing the 802.11 capture modes is very platform/network adapter/driver/libpcap dependent, and might not be possible at all (Windows is very limited here).
简单翻译:很不幸,要使用monitor模式,去抓802.11包很依靠 平台,网卡,驱动,libcap等,甚至一丁点都不行。
笔者采用抓包的方式是在Kali Linux系统下的 Aircrak-ng工具,并且尝试了不同的Ralink芯片组网卡,效果有比较大的差异,会存在大量漏帧等问题。在Aircrack-ng 网站上有推荐的网卡,这些对Aircrack-ng适配性更好一些,不过国内挺难买到的,这些基本是旧款已经停产的网卡。
这篇文章先把以太网帧和802.11帧差别写出来,根据需求去选择自己的方式。并且把monitor模式空中抓取802.11帧的注意事项列举出来,避免以后掉坑。