我之前的文章发过类似的笔记,当时简单测试过,没有详细记录。现在仔细的学习和记录一下。正好手头有相关的工具,一并记录一下。
首先介绍一下aircrack-ng,下文内容很多来自官网介绍。
Aircrack-nghttps://www.aircrack-ng.org/
Aircrack-ng是一套评估WiFi网络安全的完整工具。它关注WiFi不同的安全领域:
监控:捕获数据包并将数据导出为文本文件,供第三方工具进一步处理
攻击方式:重放攻击、去认证攻击、伪造接入点攻击、数据包注入攻击等
测试:检查WiFi网卡和驱动能力(捕获和注入)
渗透:WEP和WPA PSK (WPA 1和2)
所有的工具都是命令行,允许丰富的脚本。很多GUI也利用了这个特性。Aircrack-ng主要适用于Linux,也适用于Windows、macOS、FreeBSD、OpenBSD、NetBSD,以及Solaris等等。
Aircrack-ng是个套件,包含了以下这些工具,在测试wifi密码时通常会用到其中几个。
在开始之前我也简单把官网上有关事项都列出来,不是为了增加难度,是为了扩展知识面,减小我们思维局限性。
aircrack-ng官方网站给出内容看,无线网卡的兼容性、功能、平台方面差异比较大所以建议了解一下。
第一是只是想侦听无线网络流量,还是同时侦听和注入数据包。
第二是aircrack-ng运行在操作系统上,Windows平台上兼容性较差(而且某些网卡只支持侦听,不支持注入)
第三是确定使用哪种接口的网卡(PCI、PCMCIA、USB 等)
这里关键的一部就是有支持的wifi网卡。怎样确定网卡支持,或者应该买什么样的网卡,简单的办法是到网上交易平台搜索kali linux 混杂模式 wifi等关键字,应该有商家测试好了在售卖。
如果想搞明白就看下面内容:
确定当前无线网卡包含的芯片组。“芯片组”是网卡上的电子设备,允许卡运行无线。并非所有芯片组都受 aircrack-ng 支持。即使支持芯片组,某些功能也可能无法正常工作。
一张无线网卡会涉及2个厂家,第一个是网卡生产厂家,第二个是芯片组厂家,芯片组才是决定是否支持Aircrack-ng的重要因素。好多网卡生产厂家都不太愿意公开自己网卡上的芯片信息。甚至部分厂家的同一型号的不同版本会使用不同的芯片组。
确定网卡芯片组
比如我的网卡
lsusb -vv
en:users:drivers [Linux Wireless]https://wireless.wiki.kernel.org/en/users/drivers
可以到这里查看网卡和驱动是否支持
官网说关键是芯片,但是列出来却是驱动,这也可以理解,因为无法统计网卡厂家或芯片厂家的商业行为。所以驱动和芯片的对应关系我们需要确认一下。
比如想要使用USB网卡,找到了RT2800usb这个驱动,点开后可以看到相对应的网卡芯片。然后再找对应系列的网卡。
Driver for Ralink/MediaTek USB devices RT2770, RT2870, RT3070 RT3071, RT3072, RT3572.
这样就类出来相关的网卡芯片,可以针对性的购买。以上内容说我的理解,我也没有条件去具体测试其他的网卡支持情况。
首先列一下自己的环境:
1、一张被aircrack-ng套件支持的网卡,我的是Linksys WUSB54GC。
是我在咸鱼上花费35元rmb买的。
2、kali linux,这个我用的虚拟机,方便、高效、给力。
3、有AP,也有客户端。我的是办公室环境,我知道密码,我可以把密码写入破解字典当中。
把网卡插入到主机,虚拟机会弹出连接提示。(如果没有弹出请检查虚拟机服务和USB外设连接情况)
这时候运行iwconfig,会列出系统的网卡,哪些可以支持802.11。
这时候看到wlan0是无线网卡,Mode:Managed,就是一般模式,当处于侦听模式时会显示:Monitor。也可以使用airmon-ng命令查看:
使用airmon-ng start wlan0命令使网卡处于监听模式。
我们可以看到提示有2个进程影响这个操作,运行airmon-ng check kill命令之后再开启监听模式。 不过估计这是新版的套件,所以自动执行了。以前我记得需要手动执行。
这时候iwconfig,发现wlan0网卡消失了,变成了wlan0mon,模式变成了:Monitor。
网上说没有变为wlan0mon的也不是说网卡不支持监听,没有变wlan0mon,下一步的时候直接这样操作就可以,命令这样写:airodump-ng wlan0。我没有遇到也没有测试。
扫描当下的无线信号。
#airodump-ng wlan0mon
默认不加参数的话会扫描所有信道,所有ssid。我们要找信号比较强的,有客户端连接的这个SSID,比如上图的54:0D:F9:0F:D4:E8,其中一个客户端F8:89:D2:59:87:CD。
下一步就是开始抓包,抓取握手包,就是等待新的终端连上来第一次握手的包。
#airodump-ng -c 1 --bssid 54:0D:F9:0F:D4:E8 -w cap1 wlan0mon
-c后面跟1使信道号,bssid后面跟AP的地址,-w后面跟抓包文件名,这里用cap1,wlan0mon使侦听网卡。运行以后会看到正在抓包的状态。这个窗口不关闭,持续抓。
这时候就是等待抓到握手包,如果没有新的客户端上线就需要等待。aircrack-ng套件这么强大,肯定不用傻傻等下去。有另外一个工具可以用,那就是aireplay-ng。aireplay-ng是用来注入和重放的工具。利用这个工具在客户端和AP之间注入,导致客户端和AP中断和重连。
#aireplay-ng -0 20 -a 54:0D:F9:0F:D4:E8 -c F8:89:D2:59:87:CD wlan0mon
-a后面跟bssid,这里是54:0D:F9:0F:D4:E8,-c后面跟客户端MAC,这里是F8:89:D2:59:87:CD
-0后面跟发送注入包数量,不易太多,多了就会让正常终端网络异常时间过长,引起警觉。
我实际测试一下设置5-10就可以了。
终端ping的话会有1-2个丢包,不会让终端注意到。
而且我第一次抓的时候没有经验,也不知道抓到没有,其实可以查看刚才抓包界面,显示WPA handshake就是抓到包。
这是后就可以停止刚才抓包窗口。对应目录下会生成cap1-01开头的文件名。
这时候我们已经抓到客户端和AP握手包了,需要用到可以使用aircrack-ng和一个wifi密码的字典。
我从网上下载了一个常用字典:
#aircrack-ng -w 字典路径 握手包路径
#aircrack-ng -w /home/test/dic /hom/testr/cap1-04.cap
01,02,03,抓的包都是没有握手包的。
类似这种。
因为我知道WiFi 密码,所以把密码放到字典文件中,很快就对比出来了。
提示KEY FOUND!
以上可以看到使用aircrack-ng测试无线密码安全性的步骤。这个过程kali linux或者其他操作系统要求、无线网卡要求和字典的要求,缺一不可。至于更复杂的wifi的握手过程、广播包、arp请求等技术细节我也没有仔细研究过。
记得当初第一次用是测试WEP密码。由于WEP存在漏洞,所以只需要前2步就可以,也就是说注入攻击,拦截握手包,直接就可以解出密码,不需要跑字典。本来想还原一下过程,无奈支持WEP协议的AP都没有,手机也不支持。所以不能复现。
aircrack-ng能做的不仅如此,有个专业的名词叫:EVIL TWIN AP,就是邪恶的AP。在公共场合使用aircrack-ng设置一个公开的WIFI热点,比如在麦当劳旁边就设置麦当劳,这样可以做中间人攻击,拦截用户的网络流量截取敏感信息。
以上只是个人学习测试,请勿用于非法用途。