簡介
本文說明如何使用任何可擴充驗證通訊協定(EAP)方法解密Wi-Fi保護存取2 — 企業(WPA2 — 企業)或802.1x(dot1x)加密的無線空中傳輸(OTA)監聽器。
只要擷取完整的4路EAP over LAN(EAPoL)交涉,解密基於PSK/WPA2個人802.11 OTA擷取相對容易。但是,從安全形度來看,並不總是建議使用預共用金鑰(PSK)。破解硬編碼密碼只是時間問題。
因此,許多企業選擇帶Remote Authentication Dial-In User Service(RADIUS)的dot1x作為其無線網路的更好安全解決方案。
必要條件
需求
思科建議您瞭解以下主題:
- 安裝了radsniff的FreeRADIUS
- Wireshark/Omnipeek或能夠解密802.11無線流量的任何軟體
- 獲取網路訪問伺服器(NAS)和身份驗證器之間的共享密碼的許可權
- 能夠捕獲整個EAP會話中NAS和身份驗證器之間的radius資料包捕獲(從第一個訪問請求(從NAS到身份驗證器)到最後一個訪問接受(從身份驗證器到NAS)
- 能夠執行包含四路EAPoL握手的Over-the-Air(OTA)捕獲
採用元件
本文中的資訊係根據以下軟體和硬體版本:
- Radius伺服器(FreeRADIUS或ISE)
- 空中捕捉裝置
- Apple macOS/OS X或Linux裝置
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
在本示例中,兩個成對主金鑰(PMK)源自從ISE 2.3捕獲的Radius資料包,因為此SSID上的會話超時為1800秒,此處給出的捕獲長度為34分鐘(2040秒)。
如圖所示,使用EAP-PEAP作為示例,但是這可以應用於任何基於dot1x的無線身份驗證。
程式
步驟1.從訪問接受資料包解密PMK。
在NAS和驗證器之間運行radsniff以捕獲radius,以提取PMK。在捕獲期間提取兩個訪問接受資料包的原因是,會話超時計時器在此特定SSID上設定為30分鐘,並且捕獲長達34分鐘。身份驗證執行兩次。
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan_merged.pcapng -s <shared-secret between NAS and Authenticator> -x
<snip>
2018-11-16 11:39:01.230000 (24) Access-Accept Id 172 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
User-Name = "frlu_2"
State = 0x52656175746853657373696f6e3a306134323466326130303030303565373562656530393732
Class = 0x434143533a3061343234663261303030303035653735626565303937323a4953452d322d332f3332383237313233382f33303432
EAP-Message = 0x03c50004
Message-Authenticator = 0x38c67b9ba349842c9624889a45cabdfb
MS-MPPE-Send-Key = 0xa464cc15c0df8f09edc249c28711eb13a6db2d1a176f1196edcc707579fd6793
MS-MPPE-Recv-Key = 0xddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a066d8b3b<<<<<<<<<<<<<<<<<<PMK
Authenticator-Field = 0x6cd33b4d4dde05c07d9923e17ad6c218
<snip>
2018-11-16 11:39:01.470000 (48) Access-Accept Id 183 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
User-Name = "frlu_2"
State = 0x52656175746853657373696f6e3a306134323466326130303030303565373562656530393732
Class = 0x434143533a3061343234663261303030303035653735626565303937323a4953452d322d332f3332383237313233382f33303434
EAP-Message = 0x03910004
Message-Authenticator = 0x81c572651679e15e54a900f3360c0aa9
MS-MPPE-Send-Key = 0xeae42cf7c6cd26371eee29856c51824fbb5bbb298874125928470114d009b5fb
MS-MPPE-Recv-Key = 0x7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4dfb1cfb0e<<<<<<<<<<<<<<<<<PMK
Authenticator-Field = 0xa523dd9ec2ce93d19fe4fc2e21537a5d
附註:請移除Radius封包擷取的任何虛擬LAN(VLAN)標籤,否則radsniff 無法識別輸入pcap檔案。若要移除任何VLAN標籤,例如,可以使用editcap。
提示:通常,針對RADIUS pcap檔案的radsniff命令運行時可以計為秒數。但是,如果radsniff停滯在日誌中顯示的此狀態,請將此資料包捕獲(A)與同一NAS和身份驗證器之間的另一個較長資料包捕獲(B)進行級聯。然後,對級聯資料包(A+B)運行radsniff命令。 資料包捕獲(B)的唯一要求是,您可以對它運行radsniff命令並檢視詳細結果。
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan.pcap -s Cisco123 -x
Logging all events
Sniffing on (/Users/frlu/Downloads/radius_novlan.pcap)
在本範例中,透過WLC封包記錄功能擷取的無線Lan控制器(WLC)控制層面記錄(A)與ISE的TCPdump(B)中的較長擷取進行級聯。之所以使用WLC封包記錄作為範例,是因為它的大小通常非常小。
WLC封包記錄(A)
ISE Tcpdump(B)
合併(A+B)
然後對合併的pcap(A+B)運行radsniff,您將能夠看到詳細輸出。
FRLU-M-51X5:pcaps frlu$ radsniff -I /Users/frlu/Downloads/radius_novlan_merged.pcapng -s <shared-secret between NAS and Authenticator> -x
<snip>
2018-11-16 11:39:01.230000 (24) Access-Accept Id 172 /Users/frlu/Downloads/radius_novlan_merged.pcapng:10.66.79.42:32771 <- 10.66.79.36:1812 +0.000 +0.000
<snip>
步驟2.提取PMK。
然後,從詳細輸出中刪除每個MS-MPPE-Recv-Key中的0x欄位,並顯示無線業務解碼所需的PMK。
MS-MPPE-Recv-Key = 0xddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a066d8b3b
PMK:
ddb0b09a7d6980515825950b5929d02f236799f3e8a87f163c8ca41a066d8b3b
MS-MPPE-Recv-Key = 0x7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4dfb1cfb0e
PMK:
7cce47eb82f48d8c0a91089ef7168a9b45f3d798448816a3793c5a4dfb1cfb0e
步驟3.解密OTA監聽器。
導覽至Wireshark > Preferences > Protocols > IEEE 802.11。然後勾選Enable Decryption,然後按一下Decryption Keys旁邊的Edit按鈕,如下圖所示。
接下來,請選擇wpa-psk作為金鑰型別,並將派生的PMK放在金鑰欄位中,然後按一下確定。完成後,OTA捕獲應被解密,您會看到更高級別的層(3+)資訊。
已解密的802.11資料包示例
如果比較未包括PMK的第二個結果與包括PMK的第一個結果,則資料包397886將解密為802.11 QoS資料。
加密的802.11資料包示例
注意:您可能會在解密時遇到Wireshark問題,在這種情況下,即使提供了正確的PMK(或者使用了PSK,也提供了SSID和PSK),Wireshark也不會解密OTA捕獲。因應措施是關閉Wireshark並開啟幾次,直到可以獲得更高層資訊並且802.11資料包不再顯示為QoS資料,或者使用安裝了Wireshark的另一台PC/Mac。
提示:名為pmkXtract的C++代碼附加在「相關資訊」中的第一個帖子中。已成功嘗試編譯並獲得執行檔,但可執行程式由於某些未知原因似乎未正確執行解密。此外,在第一篇帖子的評論區域發佈了一個試圖提取PMK的Python指令碼,如果讀者感興趣,可以進一步研究該指令碼。
相關資訊