随着技术的发展,无线网络wifi遍布每个角落,殊不知隐藏其中的风云涌动。
这学期上了计算机网络,但是学过了其中的浅浅知识,有点无聊,正好看到IEEE 802.11,加上最近护网杯出了一题与无线AP流量包的分析题目,赛终依旧0解。遂自行学习一波知识,从原理入手,动手实验,归纳一番。
基础知识
AP:Access Point,中文名”无线访问接入点“,在本篇文章中,无线路由器也指AP。AP的功能主要使无线设备能够快速轻易地与无线网络连接,是无线设备与有线局域网络的桥梁。
IEEE 802.11协议:说起无线网络,那么就不得不提到IEEE 802.11标准,该协议主要用于解决终端之间的无线接入,包括wifi,蓝牙等等。所以,学习无线网络的相关知识,翻阅IEEE 802.11文档是必须的。
Aircrack-ng:一个与IEEE 802.11标准的无线网络分析有关的安全软件。
SSID:Service Set Identifier ,中文名为服务集标识。在本篇中,运用Aircrack-ng的界面中,有出现BSSID和ESSID,在其中BSSID指的是AP的MAC地址,ESSID为AP的名称。
加密模式
WPS加密(Wi-FI Protected Setup)
在早期的wifi中,人们发现wifi的便利性,相应地,为了维护个人或集体的数据隐私,也添加了无线网络加密认证。但由于早期的认证步骤过于繁杂,干脆不做任何加密安全的设定,从而引发许多安全问题,于是WPS加密模式应运而生。通过该模式,用户只需在每次连接无线路由器上的WPS按键(Push Button Condiguration,按钮模式)或者输入此时路由器的PIN码(Pin Input Configuration,个人识别码模式),就能将新设备加入无线网络中。
如果你听说过爆破PIN码,继而得到wifi密码这种操作也正是个人识别码模式的缺陷,或者说是WPS的漏洞。PIN码是由8位纯数字组成的,第8位为校验位,而这一位是可以通过前7位计算的。在验证PIN码时,会先检测前四位,如果验证成功,则反馈一条信息。而通过这点,爆破前四位,由反馈的信息验证,即可得到正确的前四位,剩余的四位中,因为最后一位是通过PIN码前7位算出的,只需再爆破后四位中的前三位,我们就可以爆破得到AP的PIN码。
WPS也叫作QSS,一般在路由器的“QSS安全设置”页面即可找到。(并不是所有的无线路由器都支持WPS)
另外,大多数路由器默认的QSS是关闭的,需要手动开启。
WEP加密(Wired Equivalent Privacy,有效等效保密协议)
说起WEP,大家并不陌生,在八年前那个时候,wifi的兴起,“蹭网“的热情,想必都经历过。虽然,WEP已经逐渐被WPA-PSK/WPA2-PSK模式取代,但是打开你的手机无线网络,相信在众多的wifi中,你还是能发现那么一两个WEP的wifi。
WEP工作原理是通过使用RC4(Rivest Cipher)串流技术加密,并使用CRC32(循环冗余校验)校验和保证资料的正确性。
如上图,WEP使用RC4的算法产生伪随机序列流,将其与要传输的明文进行xor运算,再利用CRC算法生成ICV完整性校验值,再将刚刚的xor内容和ICV组合在一起,完成传输。其中,RC4的秘钥由初始化向量IV(24位)和用户秘钥SK组成。当然,解密过程即是加密过程的逆推,首先检验CRC的值,进行完整性校验,提取出IV值,和对应的用户私钥SK通过RC4计算出伪随机序列号,进行xor运算,计算出ICV’值。再通过对比原先的ICV值,判断数据正确性。
可以发现上述的过程中,如果攻击者获得了两段由相同的RC4密钥流序列加密后得到的密文,只需xor下,得到的也就是两段明文的xor内容,那么密钥就会失效。其次,初始化向量IV对于整个RC4的加密过程中,起到关键作用。先甩个国外的文档whatswrongwithwep.pdf,其中描述了IV重用问题引起的WEP容易被破解的关键原因。
如果加密时使用的IV值相同,那么对于使用相同的数据帧加密密钥是不安全的。
再者之前提到过WEP的初始化向量IV为24位,每个传输的数据帧任意选择其中一个IV值进行加密。也就是说IV的选择范围只有224。假设IV初始值设为0,每传送一个数据帧,IV值增加1,这样在传输224个数据帧后就会遇到IV重用问题。而导致WEP容易被破解的原因,正是因为这个原因,对于通讯繁忙的AP,很可能在短期内导致IV的重复使用。
再者,由于IV是明文传送的,因此攻击者能获得两个或多个使用相同密钥的数据帧,就可以使用静态分析来恢复明文。 下面测试的破解WEP过程中,ArpRequest注入攻击原理是就是通过读取交互设备之间的ARP请求报文,并伪造报文再次重发出去,从而刺激AP产生更多的数据包,以供抓取更多的IVS数据包,加快破解速度。
而对于wep引发的安全问题,人们也采取了以下措施:
1、使用WPA-PSK/WPA2-PSK模式
2、设置无线网络MAC地址过滤
WPA-PSK/WPA2-PSK加密(Wi-Fi Protected Access)
说到这里,有个疑问,为什么WPA-PSK/WPA2-PSK加密合在一起讲呢?其实大同小异,你可以这样认为,WPA是为了弥补WEP缺陷所研究的加密模式,WPA2则是WPA的升级版本。关于WPA-PSK/WPA2-PSK网上有许多不错的学习链接,不再赘述,这里放两个学习链接1、学习链接2。
在阅读相应的文档,你会发现,WPA引用了IEEE802.1x的身份认证标准:EAP(Extensible Authentication Protocol)。其包括TKIP(临时密钥完整性协议)和MIC(消息完整性检查)。WEP使用64位或128位加密密钥,必须在无线接入点和设备上手动输入,并且不会更改。TKIP使用每个数据包密钥,这意味着它为每个数据包动态生成一个新的128位密钥,从而防止类似攻击WEP的攻击方式。而MIC,旨在防止攻击者更改和重新发送数据包,取代了之前WEP标准使用的CRC(循环冗余校验)。
WPA2较WPA采用了更加强大的AES-CCMP取代WPA中的TKIP/MIC,AES-CCMP(AES Counter Mode CBC-MAC Protocol) 结合了两种复杂的加密技术(计数器模式和CBC-MAC),从而在移动客户端和接入点之间提供强大的安全协议。之所以使用AES,一是AES加密算法安全性比TKIP更高,而且在使用TKIP算法时,路由器的吞吐量会下降,进而影响到路由器的性能。
另外不得不提,今年一月份,Wi-Fi联盟发布了WPA3,相比较WPA2,又多了一些安全性的改性,有兴趣可以深入研究一番哦。
环境设置
测试配置
数台品牌不同的安卓手机,数台PC以及默认驱动为rt7601u型号为Ralink的无线网卡,TP路由器。
外置网卡配置
接下来使用iwconfig -a的命令可以查看所有无线网卡的信息,默认的外置网卡名为wlan0。
使用iwconfig命令,可以查看wlan0网卡的详细信息。
但是发现该wlan0网卡并没有处于嗅探状态monitor监听模式,所以接下来需要激活网卡至monitor监听模式。使用Aircrack-ng中的airmon-ng工具激活,执行命令:airmon-ng start wlan0。
已将wlan0更改为wlan0mon,且处于monitor监听模式,再次执行命令ifconfig可以看到
再次执行命令iwconfig验证是否处于monitor监听模式。
可以看到网卡wlan0mon已经处于嗅探状态monitor监听模式,设置嗅探成功。
当然此时再次查看wireshark的抓包界面,也可以看到mon0。
接下来进行一些相关的测试。
测试目标
测试环境一:WPA-PSK/WPA2-PSK模式
该模式下路由配置如下,名称为T35t
密码为t35ttest
实验步骤
执行命令# airodump-ng wlan0mon查看周围无线设备,发现测试目标T35t(T35t为该路由器ESSID号),频道11以及其他信息。
过滤语句airodump-ng wlan0mon –bssid 30:FC:68:CA:13:DF -c 11只查看跟该设备相关的无线信号。
可以看到存在设备mac地址为00:00:00:00:00:00(就是那串模糊的,懂不·—·)的设备正在连接该路由器
嗯,接下来使用命令airodump-ng wlan0mon –bssid 30:FC:68:CA:13:DF -c 11 -w capture_wap将该信号抓取保存为前缀名为capture_wap的文件,执行该条命令界面运行如下:
打开新的命令行界面(注意:之前的命令行界面不要关闭),然后执行命令aireplay-ng -0 1 -a 30:FC:68:CA:13:DF -c 00:00:00:00:00:00 wlan0mon
执行成功后,正常情况下,稍等几秒,原先界面右上角即会出现WPA handshake: 30:FC:68:CA:13:DF,意味着成功抓到握手包,接下来只需字典爆破握手包即可。
执行命令aircrack-ng capture_wap-01.cap,查看捕获握手包数据信息。
执行命令aircrack-ng capture_wap-01.cap -w dictiontry.txt,爆破字典为dictiontry.txt文件。
成功找到密码t35ttest。
测试坑点一:
执行命令airodump-ng wlan0mon查看周围无线设备时,如果发现界面右上角存在 fixed channel mon0: -1字样,那么,建议换成kali虚拟机重新测试吧,原因是因为操作系统内核不兼容。之前尝试ubuntu16.04抓握手包,半天抓不到,网上去找原因,才知道是这里出了问题。
测试坑点二:
在进行aireplay-ng -0 1 -a 30:FC:68:CA:13:DF -c 00:00:00:00:00:00 wlan0mon这条命令时,发现了一些问题。首先,该命令是执行Deauth攻击加速破解过程的命令,原理是通过发送Deauth的数据包,将已连接至无线路由器的合法客户端强制断开,此时,客户端就会重新自动重新连接无线路由器,也就是在这个过程中,有机会获得WPA-PSK握手验证的完整数据包。而这条命令中-0参数表示采用Deauth攻击模式,后面紧跟着攻击次数1次,-a参数后跟AP的MAC地址,-c参数后跟客户端的MAC地址,此命令也就表示为,采用Deauth攻击模式,将MAC地址为00:00:00:00:00:00客户端与MAC地址为30:FC:68:CA:13:DFAP之间的通信强制断开1次。其次,在经过几次测试中发现,除各型号安卓机型外,苹果手机在收到Deauth攻击后,重新连接AP的时段中,抓不到相应的握手包,而其他设备,均可抓到握手包。这里排除其他原因,单纯地看,苹果手机好像略高一畴。^……^!
测试环境二:WEP模式
配置的AP如下,设置WEP模式下的秘钥为12345
实验步骤
同样执行airodump-ng wlan0mon探测周围的设备
由上图可知当前目标AP的工作频道为11,相应地,过滤出当前AP可以清晰看到与当前AP进行连接的其他设备。
执行命令airodump-ng wlan0mon –bssid 30:FC:68:CA:13:DF -c 11
上图可以查看详细的交互设备MAC,模糊处的MAC地址为00:00:00:00:00:00。
接下来抓取IVS数据报文,执行命令airodump-ng –ivs -w capture_wep -c 11 wlan0mon –bssid 30:FC:68:CA:13:DF,该条命令表示只抓取bssid为30:FC:68:CA:13:DF的IVS数据报文,并将其保存至前缀名为capture_wep的文件中。
执行完上条命令后,新开一个命令行界面,执行命令aireplay-ng -3 -b 30:FC:68:CA:13:DF -h 00:00:00:00:00:00 wlan0mon,该命令参数-3 表示采用ArpRequest注入攻击模式,-b后紧跟AP的MAC地址,-h后紧跟客户端MAC地址。ArpRequest注入攻击原理是通过读取交互设备之间的ARP请求报文,并伪造报文再次重发出去,从而刺激AP产生更多的数据包,以供抓取更多的IVS数据包,加快破解速度。在执行该条命令后,查看之前的界面可以发现Data列的数据一直在增加。
然后再新开一个界面,执行命令aircrack-ng capture_wep-01.ivs,Aircrack-ng就会自动进行破解。
成功破解密码12345,耗时大概两分多钟。什么,密码设置的太简单了,那接下来设置个比较难的呗:#fl?2a&*6^g{
按照上面的命令,依旧破解下来,也只是多花了几分钟的时间,这还是除去虚拟机的配置,hhh~
所以如果还是WEP的,赶紧换WPA2吧,亡羊补牢,哪怕还没亡羊。
测试环境三:WPS模式
无线路由器PIN码设置为54808782
实验步骤
该模式下,可以使用Reaver工具强制爆破PIN码,通过PIN码得到wifi密码。
同样先使用airmon-ng start wlan0进行网卡嗅探
查看到目标AP的SSID即可开始测试,这里依旧与之前的MAC地址相同:30:FC:68:CA:13:DF
执行命令reaver -i wlan0mon -b 30:FC:68:CA:13:DF -p 54808782,稍等一会,即会出现以下界面
可以看到已经破解成功。当然,这是在已知PIN码情况下,进行的测试。在不知PIN码的情况下只能爆破,基本上是个几天几夜,对应的命令为reaver -i wlan0mon -b 30:FC:68:CA:13:DF -vv。
虽然许多路由器默认关闭WPS,但还是建议大家认真检查下,如果开了QQS,顺手把它关了吧。反正也就是举手之劳,省掉一个安全隐患,何乐不为?
结语
以上的种种测试,均是自行配置设备,再自行测试,学术不精,见谅。实践出真知,了解攻击原理,有助于更好部署防御措施。“害群之马者坏人也,非兵也”,自行斟酌,三思后行。
发表评论
您还未登录,请先登录。
登录