wireshark服務端和客戶端解密https流量

2021-10-03 08:48:26 字數 2357 閱讀 1818

一、ssl/tls原理簡介

http協議

ssl握手協議

ssl改變密碼協議

ssl告警協議

應用資料(http)

ssl記錄協議

tcpip

二、伺服器端抓包私鑰解密

第一種情況(可解密):在第二次握手clienttls_rsa_with_rc4_128_md5的加密套件來協商對稱金鑰。

在第三次握手client------client key exchange,change cipher spec,encrypted handshake message----->server中,client使用tls_rsa_with_rc4_128_md5加密套件的演算法,通過rsa加密將私鑰加密後傳送給了server,實現了client key exchange

鑑於上面的情況,由於對稱金鑰通過rsa加密後在網路中進行了傳輸,當我們獲得了server的私鑰後,將私鑰匯入到wireshark的ssl配置後,https加密資料報文就會被解密。操作步驟:edit–>preferences–>protocols–>ssl–>rsa keys list edit,匯入私鑰。

下圖得到解密的報文,這種情況下,當server私鑰丟失時,報文將面臨被解密的風險,因此現在的openssl版本像tls_rsa_with_rc4_128_md5這樣的加密套件已經很少使用了。

第二種情況(不可解密):

server與client通過diffie-hellman這類金鑰交換演算法生成對稱金鑰,對稱金鑰不通過rsa加密傳輸。實驗環境:server:192.168.0.103    clinet:192.168.0.144

上圖過程:

client------client hello------>server

client

client–client key exchange,change cipher spec,encrypted handshake message->server

client

在第二次握手clienttls_ecdhe_rsa_with_aes_256_gcm_sha384的加密套件來協商對稱金鑰。同時,在server key exchange下面可以看到diffie-hellman server params,證明該演算法使用dh協商生成對稱金鑰。

由於金鑰協商使用了dcdhe演算法,它屬於dh類金鑰交換演算法,私鑰不參與金鑰的協商,故即時私鑰洩漏,客戶端和服務端之間的報文都無法被解密,因此無法通過匯入私鑰解密https流量,這叫前向安全(forward secrity)。相關類似的演算法還有dhe演算法,dhe下,server key exchange 如下圖,可以看到dh使用的兩個引數p和g。

三、客戶端抓包對稱金鑰解密

這種情況網上文章較多,原理是某些瀏覽器支援將 tls 會話中使用的對稱金鑰儲存在外部檔案中,可供 wireshark 加密使用。具體步驟:

1、配置環境變數,sslkeylogfile c:\ssl_key\sslog.log。

2、配置wireshark 設定檔案路徑,某些版本中為ssl配置。

3、重啟瀏覽器,至此可以看到解密的https報文。

4、此時,再看一下c:\ssl_key\sslog.log檔案中的內容,發現其儲存的正是對稱金鑰的金鑰隨機數,且經常在發生著改變。

TCP服務端和客戶端(1)

在陳述這個小例項之前,首先將mafile寫出來 makefile all client server all規則,他依賴於client和server規則 client tcp process.o tcp client.o client規則生成客戶端程式 gcc o client tcp proces...

TCP服務端和客戶端 8

在process.c的基礎上,繼續變換方案,將使用到readv和writev。並且使用到向量方式進行資料的傳送和接收。並在收到相應的訊號後釋放資源。include include include include include static struct iovec vs null,vc null ...

TCP服務端和客戶端 9

繼續對process.c 進行改進,用recvmsg和sendmsg來進行替換。將向量掛載到msghdr的msg iov的成員變數上進行操作。include include include include include include include static struct iovec vs ...