wireshark如何抓取分析https的加密报文
【问题概述】
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
选择刚才环境变量中设置的文件路径和文件名,保存
最后,咱们看看抓包解密后的效果: