无线空中包抓包教程:使用vmware虚拟机的ubuntu系统,通过tcpdump抓取无线空中包
在实际抓取空中包的过程中,对应网卡的windows驱动往往不支持抓包(或者只能购买购物网站上的性能不大行的所谓windows专用抓包工具,其实这从底层上看是不合理的,就算找客服问,他们往往也无法准确回答),而这种抓包的方式在linux系统上更容易开发,也更容易使用(甚至原生就支持),所以本文介绍如何通过ubuntu系统抓包。1、一般情况下,一个ubuntu的linux系统具有市面上卖的大多数无线网
在实际抓取空中包的过程中,对应网卡的windows驱动往往不支持抓包(或者只能购买购物网站上的性能不大行的所谓windows专用抓包工具,其实这从底层上看是不合理的,就算找客服问,他们往往也无法准确回答),而这种抓包的方式在linux系统上更容易开发(甚至原生就支持),也更容易使用,所以本文介绍如何通过ubuntu系统抓包。
一、使用设备
mtk usb网卡(也可以是rtk、bcm、qcom、intel等厂商的网卡,因为目前本人只有这个,所以以mtk为例),windows电脑
二、将网卡插入电脑
这个就是插入的usb网卡,这里之所以没有显示具体的设备名,是因为本人没有安装它的windows驱动,不过这无伤大雅,因为本来就不需要。
三、usb网卡连接虚拟机
首先,usb设置这里选择usb3.1(具体看你自己的usb网卡是2.0还是3.1,本人的是蓝色usb3.1),否则linux无法正确识别此网卡
其次,按照下图顺序将usb网卡连接到虚拟机
这样子工具栏就会出现可选的无线选项,这里记得点击关闭,因为抓取空中包时不能开启正常无线功能
接着在命令行执行下lsmod,如下几个即为对应此usb网卡的驱动,这里在usb网卡正确连接到ubuntu上时已经自动加载好了(若没有自动加载,要么是usb网卡没有被正确识别,要么是网卡损坏,要么是没有现成的对应驱动,要么是ubuntu不能通过这设备的ID号识别到对应的模组,基本上逃不了这些情况,查找对应的教程基本上可以解决)。这些驱动也可以自己手动加载,有兴趣的可以自己查找对应教程。
输入ifconfig -a,如下所示的这张新增网卡即为对应的usb网卡
接着执行下ps -ef | grep wpa,如下:
此处的wpa_supplicant对应着无线的wifi正常功能系统应用,抓空中包时是不需要的,把它kill掉,否则抓取空中包很可能会失败。
四、正式开始抓取空中包
经过前面的步骤,抓包的准备工作已经做好了,现在正式开始抓包。
1、输入iw phy,找到usb网卡所属的phy,如下,本人的是phy1
2、输入sudo iw phy phy1 interface add wlmon type monitor(phy1就是前面输入iw phy看到的phy,是可变的),再输入ifconfig -a,看到新增一张wlmon,这就是即将用来抓包的网卡接口。
输入iwconfig可以看到此网卡已经处于monitor模式
3、接着输入sudo ifconfig wlmon up提示如下
很显然是rfkill限制了操作
4、解除rfkill block
输入rfkill list,可以看到这网卡被block了,
根据左边的rkill序号是1,输入rfkill unblock 1,再执行rfkill list,可以看到block被解除了
5、再次输入sudo ifconfig wlmon up,可以看到成功执行。
6、设置抓包信道和频宽
以44信道80MHz频宽为例,输入sudo iw dev wlmon set channel 44 80MHz(这是一个通过netlink下发的命令,对应的还有ioctl的命令,具体用什么需要根据具体驱动选择)
7、输入sudo tcpdump -i wlmon -w /home/tcpdump.pcap抓取空中包
8、将这个tcpdump.pcap复制到主机电脑上,用wireshark打开,看到如下这些数据包的信息,这就是抓取的44信道空中包
五、额外信息
1、一般情况下,一个ubuntu的linux系统具有市面上卖的大多数无线网卡的对应驱动,只不过需要注意的是,并不是全部都有,而且有些就算有驱动,也有可能不支持抓取空中包。
usb网卡除了驱动以外,首先得它的固件支持这种抓包形式,若固件支持,那么还好解决,只要修改对应的驱动程序并且重新编译使用,就能让网卡支持抓取空中包的模式(windows驱动同理,所谓的网卡不支持抓包基本上都是因为他们所提供的windows驱动没有把这功能做进去)。
再具体点就会涉及到一些内核层面和更底层的代码逻辑了,这里就不详细说明了。
2、上面步骤的第四步设置抓包信道和频宽那里,对于linux和安卓系统来说,一般有两种方式,一种的netlink,一种是ioctl,具体使用哪种得看驱动实现,也可以自己添加修改。不过一般情况下驱动两种情况都支持(还有些厂商有自己封装的对应工具,例如bcm系列的wl工具等)。
3、除了tcpdump之外,抓包方式还有通常所说的airodump-ng,不过如果只是抓包下来自己分析,tcpdump够用了,并不是非airodump-ng不可。
4、网卡接口(比如本文的wlmon)只有处于monitor模式,才能抓取空中包,具体来说,无线开发里所说的抓取空中包是指在空中传输的数据包,这种数据包没有经过无线物理层和数据链路层的解封装处理,是从发送端发送出来的原封不动的数据包。例如这种被wireshark解析出mac地址的就是空中包。
空中包最明显的一个特点是可以解析出在哪个信道传播、传播速率是多少、信号强度是多少、无线传输使用的物理层协议等。
而且抓取空中包的另一个特性是,它所抓取的数据包是空中的任意设备的数据包,不管三七二十一能抓的都抓下来,不管是哪个设备发送的。
5、若网卡接口(比如本文的wlmon)不处于monitor模式,那么不能抓取空中包,抓到的协议栈分类里的网络层数据包,这时候的数据包在wireshark上解析显示出的是ip地址。而且只能看到发往本网卡或由本网卡发出的数据包(要求这种数据包至少要有网络层),看不到其他设备的数据包,也看不到数据包的信道、速率、信号强度等。
更多推荐
所有评论(0)