比Omnipeek更简单通用的Windows空口抓包/无线分析方案
比Omnipeek更简单通用的Windows空口抓包/无线分析方案
1 前言
空口抓包(抓WiFi包)是无线测试/开发会涉及的操作。在Mac系统中的无线嗅探器(Sniffer)可以直接使用电脑自带的无线网卡进行空口抓包,在Linux系统中也可通过开启网卡监听模式(monitor)搭配抓包软件实现无线抓包。但在Windows系统中目前官方仍未提供成熟的空口抓包支持。
1.1 现有解决方案
目前Windows下空口抓包方案都是通过特定的网卡(支持监听模式)安装特定驱动,再搭配相应的抓包软件实现的。现有的3种抓包方案如下:
【方案一】使用Omnipeek抓包软件+特定网卡+特定驱动实现无线抓包。
- 说明:Omnipeek是LiveAction旗下的无线抓包软件。LiveAction开发了一些基于MediaTek(以前称为 Ralink)、Marvell、 Atheros 芯片方案的专用无线驱动,实现了在Windows下的空口抓包。
- 优缺点:目前用的最多的一种抓包方案,虽然Omnipeek不是免费的,但是在某宝上购买能用Omnipeek抓包的无线网卡,店家会发给你破解的软件和特定驱动。相关网卡有贵有便宜,但驱动需自己手动装,装驱动比较麻烦,装了这个特定的驱动后网卡就不能正常用来上网。而且只能使用Omnipeek进行抓包,这个软件界面看着比较繁杂。
【方案二】使用Microsoft network monitor抓包工具+特定网卡实现无线抓包。
- 说明:NetMon是微软官方推出的免费抓包工具,能开启某些网卡的监听模式。
- 优缺点:如果网卡支持,不需要安装特定驱动就能抓包,并且能搭配Wireshark进行抓包。但微软并未提供支持的网卡信息,网上能找到的资料也很少,这个工具已经停止更新很久了,能支持的网卡芯片都是比较老的(不支持WiFi6)。
【方案三】使用Commview for WiFi抓包软件+特定网卡实现无线抓包。
- 说明:CommView for WiFi是TamoSoft公司的无线抓包软件。TamoSoft跟LiveAction一样,同样为一些无线网卡专门开发了适用于无线抓包的驱动。
- 优缺点:这个软件会自动识别网卡并安装驱动,相比Omnipeek更智能,页面也更好看。而且支持使用一些电脑自带无线网卡(Intel网卡)进行抓包,就不需要再买外置网卡。但官方的不付费授权的的只能体验5分钟,软件的买断价非常贵(499刀)。
1.2 笔者解决方案
空口抓包需要开启网卡监听模式,而这个操作又需要网卡芯片与驱动支持。Windows空口抓包的难点在于Windows下的网卡原生驱动都是不支持开启网卡监听模式的,而Linux下的原生驱动大多支持开启网卡监听模式,如果能将Linux中的驱动“移植”到Windows系统中,那就能很好解决这个问题。
根据此构想,笔者实现了一种简易、低成本、适用性广的Windows下空口抓包方案。通过VMware虚拟机启用一个Kali虚拟机,在Kali下开启无线网卡的监听模式,并使用rpcapd暴露虚拟机种的网卡接口,最后在Windows下使用Wireshark的远程抓包功能即可实现空口抓包。
这个方案不需要再去安装任何无线驱动,因为使用的网卡在Kali是免驱的,能做到即插即用。并且笔者编写了一个C#程序用于无GUI启动虚拟机,能做到傻瓜式操作,整体使用非常简单。程序无需安装,开箱即用,只要电脑上安装了VMware,笔者的程序就可以使用。且由于是运行在虚拟机中,理论上支持Win7/Win10/Win11所有系统。
文末整理了该方案支持的网卡,理论上Linux下能空口抓包的网卡都可以用,有时间的话我会对市面上的网卡都测试一遍。目前是测试成功了一款WiFi6的USB无线网卡。
2 空口抓包操作
整体使用分三步:安装VMware虚拟机(如已安装直接跳过),启动WinSniffer程序并设置需要捕获的信道,使用Wireshark连接wlan0mon接口进行抓包。
- 程序链接1(123云盘):https://www.123pan.com/s/rzBKVv-CvUP3.html 提取码:wdzx
- 程序链接2(百度云盘):https://pan.baidu.com/s/1jvwskVyWh0UOszbhwvqIOA?pwd=wdzx 提取码:wdzx
- USB无线抓包网卡和程序解压码到小黄鱼搜“网洞在线”找到我可以提供。
2.1 安装VMware虚拟机
- 安装VMware虚拟机,,这个没啥好说的,网上都资料很多,下载官方安装版,安装完找一个注册码激活即可。笔者用的软件包是安装完自动激活的,不需要手动填注册码。需要注意的是VMware版本推荐使用15.5或者以上,笔者尝试过低版本(12的版本)打不开Kali镜像。
- 启动VMware虚拟机,点击菜单栏-编辑-虚拟网络编辑器,选择启用NAT模式的虚拟网卡(一般为VMnet8),将子网IP设置为192.168.10.0。因为虚拟机的IP我是设置了静态IP,地址为192.168.10.100,需要确保虚拟网卡与虚拟机在同一个网段才能连通。
2.2 启动WinSniffer程序
- 把笔者的虚拟机镜像解压出来,直接点击WinSniffer.exe程序启动即可。他会在无GUI模式下开启Kali虚拟机。
- 大概2-30秒这样,虚拟机会启动完并检测USB网卡有没有接入,如果接入了会开启网卡的监听模式。
- 根据自己需要可以设置想要捕获的信道,这里会列出一些信道作为参考,还有一些没有列出来的信道(如149信道)都是可以抓的。
2.3 使用Wireshark抓包
- 打开Wireshark(这个程序是免费的),点击捕获-选项,管理接口(Manage Interface...)-远程接口。
- 点击加号(+)添加远程接口,主机填192.168.10.100,端口2002,无认证,确定即可(设置过一次后面就不用设置了)。
- 点击选择wlan0mon即可开始抓包。
PS:这个程序界面是可以关闭的,关闭不影响抓包,重新打开再设置信道也可以。如果不需要抓包输入stop,程序就会把虚拟机关闭。
2.3.1 报文过滤操作
提供一些常见802.11报文在Wireshark中过滤的关键字。
Mac地址过滤
- wlan.addr == mac address,specific client by mac address
- wlan.ta == mac address,transmitter address
- wlan.ra == mac address,receive address
- wlan.sa == mac address,source address
- wlan.da == mac address,destination address
- wlan.bssid == ap mac address,radio mac address
管理帧(management frames)
- wlan.fc.type_subtype == 0,association requests
- wlan.fc.type_subtype == 1,association response
- wlan.fc.type_subtype == 2,re-association request
- wlan.fc.type_subtype == 3,re-association response
- wlan.fc.type_subtype == 4,probe requests
- wlan.fc.type_subtype == 5,probe responses
- wlan.fc.type_subtype == 8,beacons
- wlan.fc.type_subtype == 9,atims
- wlan.fc.type_subtype == 10,disassosiations
- wlan.fc.type_subtype == 11,authentications
- wlan.fc.type_subtype == 12,deauthentications
- wlan.fc.type_subtype == 13,actions
漫游三协议(802.11 k,v,r)
- wlan.fixed.action_code ==23,802.11v dms request
- wlan.fixed.action_code ==24,802.11v dms respose
- wlan.rm.action_code ==4,802.11k neighbour request
- wlan.rm.action_code ==5,802.11k neighbour response
- (wlan.fc.type_subtype==0)&&(wlan.rsn.akms.type==3),802.11r auth request
- (wlan.fc.type_subtype==1)&&(wlan.tag.number==55),802.11r auth response
- (wlan.fc.type_subtype==2)&&(wlan.tag.number==55),802.11r re-association request
- (wlan.fc.type_subtype==3)&&(wlan.tag.number==55),802.11r re-association response
3 抓包网卡收录
Github上有一个叫USB-WiFi项目,里面统计了一些支持在Linux下开启监听模式的USB无线网卡。
参考资料:https://github.com/morrownr/USB-WiFi/blob/main/home/USB_WiFi_Chipsets.md
根据此表格,以及USB-WiFi项目中提供的一些网卡资料,对市面上符合要求的国内外网卡进行统计收录。只要网卡在Linux中免驱且支持监听模式,用笔者的程序就能实现Windows下空口抓包。
🚀PS:如果下表中网友有我未测试的网卡(或不在表中但符合芯片要求的网卡),可以直接联系我,我将免费提供程序。
3.1 国内网卡(更新中)
3.2 国外网卡