網絡安全攻防:無線網絡安全之WPA
1. WPA簡介
由于WEP的安全性較低,IEEE 802.11組織開始制定新的安全標準,也就是802.11i協議。但由于新標準從制定到發布需要較長的周期,而且用戶也不會僅為了網絡的安全性就放棄原來的無線設備,所以無線產業聯盟在新標準推出之前,又在 802.11i 草案的基礎上制定了WPA(Wi-Fi Protected Access)無線加密協議。
WPA使用臨時密鑰完整性協議(TKIP,Temporal Key Integrity Protocol),它的加密算法依然是WEP中使用的RC4加密算法,所以不需要修改原有的無線設備硬件。WPA針對WEP存在的缺陷,如 IV 過短、密鑰管理過于簡單、對消息完整性沒有有效的保護等問題,通過軟件升級的方式來提高無線網絡的安全性。
WPA為用戶提供了一個完整的認證機制,AP或無線路由根據用戶的認證結果來決定是否允許其接入無線網絡,認證成功后可以根據多種方式(傳輸數據分組的多少、用戶接入網絡的時間等)動態地改變每個接入用戶的加密密鑰。此外,它還會對用戶在無線傳輸中的數據分組進行MIC編碼,確保用戶數據不會被其他用戶更改。作為802.11i標準的子集,WPA的核心就是IEEE802.1x和TKIP。
WPA標準于2006年正式被WPA2 取代。WPA和WPA2之間最顯著的變化之一是強制使用AES算法和引入CCMP(計數器模式密碼塊鏈消息完整碼協議)替代TKIP。
目前,WPA2系統的主要安全漏洞很不明顯(漏洞利用者必須進行中間人模式攻擊,從網絡內部獲得授權,然后延續攻擊網絡上的其他設備)。因此,WPA2的已知漏洞幾乎都限制在企業級網絡,所以,討論WPA2在家庭網絡上是否安全沒有實際意義。
不幸的是,WPA2也有著與WPA同樣的致命弱點——Wi-Fi保護設置(WPS)的攻擊向量。盡管攻擊WPA/WPA2保護的網絡,需要使用現代計算機花費2~14 h持續攻擊,但是我們必須關注這一安全問題,用戶應當禁用WPS(如果可能,應該更新固件,使設備不再支持WPS,由此完全消除攻擊向量)。
2. 破解WPA
接下來嘗試在沒有大量流量的情況下破解WPA。
為了更好地理解破解的過程,不再使用集成了Aircrack-ng的Wifite,直接使用這個強大的Aircrack-ng套件來進行WEP破解。
首先開啟無線網卡的Monitor模式,然后使用Airodump-ng wlan0mon尋找合適的目標,記錄下目標的BSSID和信道。這里就以smart為例,如圖1所示。
BSSID:28:6C:07:3E:ED:CA
CH:1
root@kail:~# airodump-ng--bssid28:6C:07:3E:ED:CA-c 1-w smart wlan0mon
圖1 獲取BSSID和信道
可以看到有一個用戶連接,但是捕捉數據分組的速度非常的慢,可見這個用戶并沒有在上網,因此不能獲得大量流量。
現在我們使用這個用戶的BSSID來進行模擬發送數據分組,這樣可以更快地取得數據分組。
root@kali:~#aireplay-ng-0 0-a 28:6C:07:3E:ED:CA-h 3C:46:D8:4D:0F:5D wlan0mon
-0 模式是指 Deauthentication(取消認證),向客戶端發送數據分組,讓客戶端誤以為是AP 發送的數據。而后面的數字 0 是指無盡發送,當然也可以指定發送的數據分組,選擇無盡模式去發送是為了更快地獲取握手分組。
如圖2所示,可以看到發送了大量的數據分組。
圖2 發送大量數據分組
然后回到Airodump-ng的頁面,可以看到Frames數量在不斷上升,在獲得了握手分組后,就可以停止Aireplay-ng的分組發送行為了,如圖3所示。
圖3 獲取握手分組
然后獲得了smart的cap分組,這里可以使用Aircrack-ng來進行跑包,但是取決于密碼在字典中的位置,也可以自己制作字典,由于目前的WPA2加密的密碼長度可以設置得很長,因此破解需要時間。我們先使用aircrack-ng來跑一個常用字典,命令如下。
root@kali:~#aircrack-ng-w rockyou.txt smart-01.cap
這里的01是系統在設定了-w smart后自動生成的,因為可能之后還會捕捉分組,系統用以區分這是第幾次捕捉分組。如圖4所示,密碼在字典里,并且密碼在字典的很前面。
圖4 WPA破解
3. 密碼破解
Aircrack-ng 是使用 CPU 來破解的,如果運氣不好,可能一個字典分組就要跑上好幾個小時,這樣的速度太慢了,這時可以借助顯卡的計算速度來進行 GPU跑包,這樣速度可以獲得幾倍的提升。借助GPU跑包可以使用更短的時間,可以說GPU是跑包的好手,但是CPU是集大成者,它能做的事情非常多,因為雜,所以慢,因為還要處理其他事項,因此,越來越多的人開始使用GPU來跑包。
Hashcat號稱是如今最快的跑包軟件。以前Hashcat分為Hashcat、Oclhashcat、Cudahashcat,Hashcat使用CPU跑包,而后兩者是使用GPU跑包。不過目前這三者合并為Hashcat,并且官網上也不再提供其他兩者的下載。
Hashcat 是一款在 github 上開源的密碼破解軟件,號稱是世界上最快的密碼破解者,也是世界上第一個也是唯一的內核規則引擎。
Hashcat系列軟件在硬件上支持使用CPU、NVIDIA GPU、ATI GPU來進行密碼破解。在操作系統上支持 Windows、Linux 平臺,并且需要安裝官方指定版本的顯卡驅動程序,如果驅動程序版本不對,可能導致程序無法運行。
如果要搭建多GPU破解平臺的話,最好是使用Linux系統來運行Hashcat系列軟件,因為在Windows下,系統最多只能識別4張顯卡。并且,Linux下的VisualCL技術,可以輕松地將幾臺機器連接起來,進行分布式破解作業。在破解速度上,ATI GPU破解速度最快,使用單張HD7970破解MD5可達到9000 Mbit/s的速度,其次為NVIDIA顯卡,同等級顯卡GTX690破解速度大約為ATI顯卡的圖片,速度最慢的是使用CPU進行破解。
Hashcat支持絕大多數的密碼破解,在其幫助頁面列出了所有支持的密碼類型,如圖5所示。
圖5 Hashcat支持的密碼類型
Hashcat 支持使用字典跑包,也支持自定義密碼格式跑包,并且可以自定義規則,其用法太多,在此不做贅述。下圖是官方提供的例子,如圖6所示。
圖6 Hashcat官方示列
在使用Hashcat破解WAP/WAP2時,需要先將cap文件轉換成hccap文件。我們可以使用Aricrack-ng來進行轉換,如圖7所示。
root@kail:~# aircrack-ng smart.cap-J smart
圖7 Hashcat破解WAP/WAP2