從這個維基頁面:
WPA 和 WPA2 使用從 EAPOL 握手衍生的金鑰來加密流量。除非所有四個如果您嘗試解密的會話存在握手封包,則 Wireshark 將無法解密流量。您可以使用顯示過濾器 eapol 來定位擷取中的 EAPOL 封包。
我注意到解密也適用於 (1, 2, 4),但不適用於 (1, 2, 3)。據我所知,前兩個資料包足夠了,至少對於單播流量來說是足夠的。有人可以準確解釋 Wireshark 是如何處理這個問題的嗎?另外,當(1,2,3,4)起作用時,是否保證(1,2,4)總是起作用?
測試用例
這是 gzip 壓縮的握手 (1, 2, 4) 和編碼中的加密資料ARP
包 (SSID: SSID
, 密碼: password
) :base64
H4sICEarjU8AA2hhbmRzaGFrZS5jYXAAu3J400ImBhYGGPj/n4GhHkhfXNHr37KQgWEqAwQzMAgx 6HKAKbFWzgUMhxgZGDiYrjIwKGUqcW5g4Ldd3rcFQn5IXbWKGaiso4+RmSH+H0MngwLUZMarj4Rn S8vInf5yfO7mgrMyr9g/Jpa9XVbRdaxH58v1fO3vDCQDkCNv7mFgWMsAwXBHMoEceQ3kSMZbDFDn ITk1gBnJkeX/GDkRjmyccfus4BKl75HC2cnW1eXrjExNf66uYz+VGLl+snrF7j2EnHQy3JjDKPb9 3fOD9zT0TmofYZC4K8YQ8IkR6JaAT0zIJMjxtWaMmCEMdvwNnI5PYEYJYSTHM5EegqhggYbFhgsJ 9gJXy42PMx9JzYKEcFkcG0MJULYE2ZEGrZwHIMnASwc1GSw4mmH1JCCNQYEF7C7tjasVT+0/J3LP gie59HFL+5RDIdmZ8rGMEldN5s668eb/tp8vQ+7OrT9jPj/B7425QIGJI3Pft72dLxav8BefvcGU 7+kfABxJX+SjAgAA
解碼:
$ base64 -d | gunzip > handshake.cap
運行tshark
查看是否正確解密資料ARP
包:
$ tshark -r handshake.cap -o wlan.enable_decryption:TRUE -o wlan.wep_key1:wpa-pwd:password:SSID
它應該打印:
1 0.000000 D-Link_a7:8e:b4 -> HonHaiPr_22:09:b0 EAPOL 金鑰 2 0.006997 HonHaiPr_22:09:b0 -> D-Link_a7:8e:b4 EAPOL 金鑰 3 0.038137 HonHaiPr_22:09:b0 -> D-Link_a7:8e:b4 EAPOL 金鑰 4 0.376050 ZyxelCom_68:3a:e4 -> HonHaiPr_22:09:b0 ARP 192.168.1.1 位於 00:a0:c5:68:3a:e4
答案1
EAPOL 交換也用於更新臨時金鑰。新金鑰在請求方發送 4/4 後安裝在請求方上,並在接收到 4/4[1] 時安裝在驗證方上。如果Wireshark 必須正確處理重新產生密鑰,則它只能在讀取幀中的4/4 封包後使用密鑰,因為封包在重新生成密鑰期間可能仍在流動(即使在不應該流動的情況下,因為緩衝)
對於第一個 4WHS,不等待 4/4 是可能的,但完全可以理解他們只是懶於實現它。 3/4 仍然是必要的,因為它包含群組機密(即使您對它們不感興趣,但知道您不會看到來自 AP 或不屬於其 4WHS 的客戶端的 ARP 請求)和管理金鑰。您也可以跳過 3/4,但這樣您就無法確認交換是否成功,因為 3/4 用於驗證 Authenticator 是否知道 PMK。
[1] 請注意,在目前方案中,如果 4/4 訊息遺失,則請求者開始使用新金鑰,而驗證者仍然使用舊金鑰,並且重新傳送用舊金鑰加密的 3/4 將無濟於事。這個問題以及 WPA2 的許多其他問題在最新的 802.11 2012 標準中透過並行保留兩個金鑰得到了解決。
答案2
建構 PTK 所需的所有資訊都在步驟 1 和 2 中交換。
如果沒有第 3 步,您將沒有 GTK,因此無法解密多重播放/廣播。
步驟 4 對於解密擷取流量來說並不是真正必要的,但如果沒有步驟 4,客戶端/AP 將不會開始使用加密。 Wireshark 可能會在嘗試解密資料之前關閉此操作。
答案3
嗯,顯然 WireShark 文件是錯誤的。 :-)
脫離文檔這裡:
- 在 EAPOL 1 和 2 之後,雙方都知道將用於解密流量的臨時金鑰。
- 第三條訊息證明雙方都知道臨時密鑰,並表明驗證器(基地台)準備好開始使用臨時金鑰。
- 第四條訊息觸發從 EAPOL 之前建立的 PMK 到 EAPOL 中匯出的臨時金鑰的切換
因此,這是有道理的。 WireShark 不需要訊息 3。它知道訊息 1 和 2 之後的金鑰,但要等到收到訊息 4 後才開始使用它們來解密流量。
生活中的任何事情都無法保證,尤其是自由軟體的行為,但可以合理地打賭,WireShark 不需要出現訊息 3 來解密會話。
答案4
這並沒有解釋為什麼,但引用了airdecap-ng文件無論如何,
WPA/WPA2 Requirements
The capture file must contain a valid four-way handshake. For this purpose having (packets 2 and 3) or (packets 3 and 4) will work correctly. In fact, you don't truly need all four handshake packets.