2016-05, 因為當(dāng)前RSA交換用的很少了凄诞,所以該方法使用場景不多了
1. TLS簡單描述及密鑰交換算法
SSL/TLS的基本原理是,客戶端和服務(wù)端在握手階段協(xié)商一個對稱加密用的密鑰酝蜒,然后用該密鑰來對后續(xù)發(fā)送的業(yè)務(wù)數(shù)據(jù)加密。 而對稱密鑰算法包括RSA、DH、ECDHE等击奶,
其中RSA算法大意是:客戶端生成密鑰,用服務(wù)器端證書的公鑰加密后發(fā)給服務(wù)器责掏, 服務(wù)端用私鑰即可解密出該密鑰柜砾,完成協(xié)商過程。因此只要獲取到服務(wù)器端私鑰换衬,就可以破解該服務(wù)器涉及的任何會話痰驱。
DHE(DH的一種)交換算法過程稍微復(fù)雜點,大意是雙方各自生成隨機(jī)數(shù)冗疮,然后發(fā)給對方萄唇,通過數(shù)學(xué)上可以證明,雙方可以各自計算出一個相同的數(shù)作為密鑰术幔,而中間監(jiān)聽者則很難算出來另萤。如果感興趣可以自行查找資料(參考部分有wiki連接)
ECDHE更復(fù)雜可以理解為和DHE類似。
使用了DHE(注意DHE不是DH)或ECDHE密鑰交換算法的TLS也稱作PFS(perfect forward secrecy)诅挑, 每次交互的密鑰都是變化的四敞,事后即使破解了一個會話,也無法解開另一個會話拔妥。 因為會話當(dāng)時雙方使用的隨機(jī)數(shù)已經(jīng)丟失了忿危。(當(dāng)然如果能修改雙方代碼把這兩個random打印出來也可以解密,但這個在實踐中基本不可行)
可見没龙,即使抓包铺厨,也并不能破解所有ssl連接, 解密對所使用的算法是有要求的硬纤。
2. 前提----對算法的要求
在wireshark中分析數(shù)據(jù)包解滓, 選擇一條數(shù)據(jù), 右鍵----Decode As----選擇SSL
[圖片上傳失敗...(image-c03f9d-1686192364853)]
找一下server hello這個消息里頭的Cipher Suite筝家, 如果TLS_后面跟的是DHE_RSA或ECDHE_RSA,這種情況就沒辦法解密了洼裤。
查找要分析的數(shù)據(jù)流的握手部分,Server Hello消息中下圖這種可以解密
[圖片上傳失敗...(image-fff03c-1686192364853)]
途中CipherSuite:TLS_RSA_WITH_AES_128_CBC_SHA256
如果是 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x0067) 這種無法解密
所以有時候就要看運氣了溪王,用工具(postman ,jmeter)的話腮鞍,看看可否在客戶端指定算法范圍, 如果我們自己開發(fā)的軟件中支持配置算法列表的話莹菱,修改為僅保留RSA密鑰交換的算法即可移国。
3. 前提----獲取服務(wù)器端私鑰
通常服務(wù)器端對可能將私鑰和證書一起保存到p12文件中,也可能單獨放一個pem格式的文件道伟。
? 如果是p12文件桥狡,用命令生成xxx.pem后,截取其中如下圖的部分就是未加密私鑰
openssl pkcs12 -in server.p12 -out xxx.pem –nodes
[圖片上傳失敗...(image-9d6fdd-1686192364853)]
? 如果已經(jīng)有不加密私鑰直接使用即可。如果是加密私鑰
文件可能格式是這樣的
[圖片上傳失敗...(image-b48526-1686192364853)]
用命令可以解除私鑰文件裹芝,其中encrpyted.pem原文件部逮,命令執(zhí)行后需要輸入密碼才能解密。
openssl rsa –in encrypted.pem –out plain.pem
4. 抓包+解密
抓包在linux上用tcpdump嫂易,需要注意加參數(shù)-s0 表示不截斷數(shù)據(jù)兄朋,否則可能無法分析
tcpdump -i eth1 -s0 -w output.cap
綜上,只要抓包數(shù)據(jù)完整怜械, 并且獲取到服務(wù)端私鑰颅和,即可解密。
Wireshark上的配置:
Edit-àpreference-àprotocole-àssl
需要配置服務(wù)器端ip缕允、端口峡扩、協(xié)議(除ssl之后原始的應(yīng)用層協(xié)議,這里是http)障本、keyfile(上述獲取到的服務(wù)端私鑰)教届。密碼留空
[圖片上傳失敗...(image-7e7844-1686192364853)]
[圖片上傳失敗...(image-554b93-1686192364853)]
此時, 選中一條ssl數(shù)據(jù)驾霜,右鍵選中follow ssl 即可看到內(nèi)容
[圖片上傳失敗...(image-788097-1686192364853)]
5. 參考
https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange