目錄

簡介

必要條件

需求

採用元件

背景資訊

程式

步驟1.從訪問接受資料包解密PMK。

步驟2.提取PMK。

步驟3.解密OTA監聽器。

已解密的802.11資料包示例

加密的802.11資料包示例

相關資訊

簡介

本文說明如何使用任何可擴充驗證通訊協定(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指令碼，如果讀者感興趣，可以進一步研究該指令碼。

相關資訊

- 調整EAP的弱連結 — 使用pmkXtract從RADIUS中吸入WiFi PMK

- 如何解碼Radius MS-MPPE-Recv-Key

- 技術支援與文件 - Cisco Systems