2013-02-21 52 views
4

我想在Windows中打開瀏覽器,轉到HTTPS站點,並在使用Wireshark捕獲數據包時執行一系列操作。然後,我想使用加密的數據包捕獲來查看解密的HTTP流量。如果您放棄瀏覽器,訪問服務器或添加MITM,我知道有很多方法可以執行此操作(如下所示),但當您僅限於上述方案時,這些方法都不起作用。這裏是我的典型方法:如何從瀏覽器SSL/TLS會話導出主密鑰?

服務器:對於我有服務器私鑰的站點,請使用Wireshark的內置SSL解密。

MITM:SSL代理(例如Burp套件)將允許查看解密的流量,但這需要使用與服務器使用的不同的證書和密鑰對。

瀏覽器:openssl的s_client可以連接,發出請求並導出主密鑰,但這不會顯示關聯的網頁或運行javascript來計算後續請求參數。

有沒有辦法將主密鑰從「普通」瀏覽器導出,以便以後可以使用它來解密瀏覽器會話的數據包捕獲?

例如,當瀏覽器關閉時SSL/TLS狀態存儲在磁盤上?如果是這樣,我將如何訪問它?它在瀏覽器運行時是否可以在內存中訪問(如果有的話,我怎樣才能找到它)?

或者,是否所有由操作系統(Windows)存儲的SSL狀態數據都無法直接訪問?

另外,是否有辦法強制瀏覽器使用特定的主密鑰(以及任何其他關聯的SSL狀態數據,如會話ID等)用於特定的HTTPS連接?如果是這樣,我可以使用s_client設置SSL會話,然後將密鑰數據傳輸到瀏覽器並在同一會話中打開一個新連接。這將通過不同的方式實現相同的目標。

回答

8

對於使用NSS庫(例如Firefox)的瀏覽器,您可以設置SSLKEYLOGFILEenvironment variable,這將導致NSS保存必要的祕密。然後您可以直接在Wireshark中使用該文件。還有更多的信息可以找到here

相關問題