【問題概述】
https流量基於ssl/tls加密,無法直接對報文進行分析。
【解決方案】
方案1 —— 利用“中間人攻擊”的代理方式抓包分析。整個方案過程比較簡單,這里不贅述,大致如下(詳細可參見:https://www.cnblogs.com/liulinghua90/p/9109282.html):
方案2 —— 基於Chrome/Firefox等瀏覽器工作過程中需要在PC本地存儲RSA密鑰協商過程日志數據的原理基礎,同時將協商過程的日志文件共享給wireshark從中提取過程密鑰信息,從而得以解密。
首先,咱們回顧下https協議交互的過程,大致如下:
通過上面的協商過程可以看出,此次請求和響應使用的加密套件cipher suit是通過Client和Server雙方協商出來的,並且整個協商由Client端的ClientHello發起。
然后,基於原理分析,咱們可以通過以下三點使得wireshark對https的抓包、解密分析得以實現:
-
- 修改PC系統對cipher suit的支持情況,使其只支持基於RSA實現的一系列套件;
- 修改PC系統環境變量,使得wireshark得以共享協商過程的日志文件;
- 修改wireshark相關配置,使其能夠實時提取到協商過程的密鑰信息。
接下來,咱們詳細總結下每個配置步驟的注意事項:
1)修改PC系統對cipher suit的支持情況,使其只支持基於RSA實現的一系列套件:
-
-
- Win10下 Win + R 后的對話框中輸入 gpedit.msc 打開“本地組策略編輯器”
- 按照以下路徑找到“SSL 密碼套件”: 計算機配置--管理模板--網絡--SSL配置設置--SSL 密碼套件
- 默認“未配置”,修改為“已啟用”。此時能夠看到系統支持的密碼套件及其優先級順序(TLS_AES_256_GCM_SHA384、TLS_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_DHE_RSA_WITH_AES_256_GCM_SHA384、TLS_DHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_256_GCM_SHA384、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA256、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_3DES_EDE_CBC_SHA、TLS_RSA_WITH_NULL_SHA256、TLS_RSA_WITH_NULL_SHA、TLS_PSK_WITH_AES_256_GCM_SHA384、TLS_PSK_WITH_AES_128_GCM_SHA256、TLS_PSK_WITH_AES_256_CBC_SHA384、TLS_PSK_WITH_AES_128_CBC_SHA256、TLS_PSK_WITH_NULL_SHA384、TLS_PSK_WITH_NULL_SHA256)
- 去除抓包方案中不支持的AES、PSK、ECDHE_ECDSA等諸多密碼套件只保留RSA相關即可(TLS_RSA_WITH_AES_256_GCM_SHA384、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA256、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_3DES_EDE_CBC_SHA、TLS_RSA_WITH_NULL_SHA256、TLS_RSA_WITH_NULL_SHA)
- 應用,確定(Tips:實驗結束后還原系統密碼套件,否則后續可能出現上網異常)
-
2)修改PC系統環境變量,使得wireshark得以共享協商過程的日志文件;
-
-
- 按照以下路徑找到“系統變量”: 控制面板--系統和安全--系統--高級系統設置--環境變量,具體配置如圖所示:
- Chrome訪問下百度主頁,檢查下此時系統變量里面的日志文件中成功記錄了一些密鑰協商的過程信息
- 按照以下路徑找到“系統變量”: 控制面板--系統和安全--系統--高級系統設置--環境變量,具體配置如圖所示:
-
3)修改wireshark相關配置,使其能夠實時提取到協商過程的密鑰信息:
-
-
- 按照以下路徑找到“(Pre)-Master-Secret log filename”: 編輯--首選項--協議--SSL--(Pre)-Master-Secret log filename
- 選擇剛才環境變量中設置的文件路徑和文件名,保存
-
最后,咱們看看抓包解密后的效果: