https wireshark抓包——要解密出未經處理資料光有ssl 認證還不行,還要有瀏覽器內的pre-master-secret(記憶體裡)

來源:互聯網
上載者:User

標籤:資料包   csdn   version   百度   警告   輸入關鍵詞   接下來   形式   cli   

基於wireshark抓包的分析

首先使用wireshark並且開啟瀏覽器,開啟百度(百度使用的是HTTPS加密),隨意輸入關鍵詞瀏覽。

我這裡將抓到的包進行過濾。過濾規則如下

ip.addr == 115.239.210.27 && ssl
  • 1

下面用圖來描述一下上面抓包所看到的流程。

1. Client Hello

開啟抓包的詳細,如下。

不難看出,這一握手過程,用戶端以明文形式傳輸了如下資訊:

  1. 版本資訊(TLS 1.2)
  2. 隨機數
  3. Session ID(用於加快握手過程,可參考TLS會話複用)
  4. 加密套
  5. 壓縮演算法
  6. 其它一些擴充的(Extension),比如簽名演算法,伺服器名稱(本例為sp1.baidu.com);
Server hello

這一階段,服務端返回所選擇的協議版本(Version),加密套,壓縮演算法,隨機數,Session ID等;

from:78989931

 

資料轉送

經過了 SSL 握手後,服務端的身份認證成功,協商出了密碼編譯演算法為 AES,密鑰為 xxxxx(用戶端和服務端拿三個隨機值用相同演算法計算出來的,並沒有明文傳輸)。一切準備就緒。

SSL 握手成功,已經可以對接下來的資料加密了,接下來各種應用程式層協議都可以加密傳輸。

Application Data

應用資料轉送訊息。因為這裡是 HTTPS,所以可以對 HTTP 應用協議資料加密然後傳輸了。

Secure Sockets Layer    TLSv1.2 Record Layer: Application Data Protocol: http        Content Type: Application Data (23)        Version: TLS 1.2 (0x0303)        Length: 1072        Encrypted Application Data: 6d9b3c9089271630c33506fe28cd6a61fed1f4bd2808f537...

從這裡,不知道密鑰是無法知道這裡傳輸的是什麼資料,連傳輸的是什麼協議的內容都不知道。

所以之前建立 SSL 隧道,讓Proxy 伺服器盲傳 HTTPS 資料,就得通過 CONNECT 方法告訴Proxy 伺服器要連哪台主機,哪個連接埠號碼,要不然Proxy 伺服器也是一臉懵逼。

所以 SSL 協議是很獨立的,這裡是對 HTTP 進行了加密,也可以對其他協議進行加密。它就像是 TCP 和應用程式層協議的中介層,為上層協議提供了加密的資料轉送。

Encryted Alert

SSL 警告訊息,因為是加密的內容,所以單從 Wireshark 看不出警報的內容。

Secure Sockets Layer    TLSv1.2 Record Layer: Encrypted Alert        Content Type: Alert (21)        Version: TLS 1.2 (0x0303)        Length: 48        Alert Message: Encrypted Alert

但因為警報訊息經常只是用戶端用來提示服務端 SSL 傳輸結束,對照抓包到的內容確實如此。所以這裡只是 SSL 傳輸結束的一個訊號。

發出了 Encryted Alert 後用戶端資料轉送完畢,準備進入四次揮手斷開 TCP 串連。


from:https://www.jianshu.com/p/cf8c2f2cd18a

為什麼Wireshark無法解密HTTPS資料 金鑰交換演算法

金鑰交換演算法目前常用的有RSA和Diffie-Hellman。
對於金鑰交換使用RSA演算法,pre-master-secret由用戶端產生,並使用公開金鑰加密傳輸給伺服器。
對於金鑰交換使用Diffie-Hellman演算法,pre-master-secret則通過在Key Exchange階段交換的資訊,由各自計算出pre-master-secret。所以pre-master-secret沒有存到硬碟,也沒有在網路上傳輸,wireshark就無法擷取session key,也就無法解密應用資料。那我們是否可以反向計算出pre-master-secret呢?理論上可以,但是非常困難。
對Diffie-Hellman演算法感興趣的可以參考https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

解決方案

說了這麼多,究竟有什麼辦法可以讓wireshark解密資料?我們可以通過下面幾種方法來使wireshark能解密https資料包。
1. 中間人攻擊;
2. 設定web伺服器使用RSA作為交換密鑰演算法;
3. 如果是用chrome,firefox,可以設定匯出pre-master-secret log,然後wireshark設定pre-master-secret log路徑,這樣就可以解密了。

 

https wireshark抓包——要解密出未經處理資料光有ssl 認證還不行,還要有瀏覽器內的pre-master-secret(記憶體裡)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.