《Wireshark抓包分析—Https数据解密》

之前在做应急响应,看到 TLS 流量都是两眼一摸黑,今天突发奇想是不是也可以解密,查了下资料发现些好玩的东西(SSLKEYLOGFILE),分享给大家。

以 CSDN为例,先看下https网站打开过程的抓包:

  1. DNS解析
  2. TCP协议三次握手

在看看 TLS 协议的握手过程:

  1. 浏览器给出协议版本号、一个客户端生成的随机数,以及客户端支持的加密方法
  2. 服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。
  3. 并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey。
  4. 浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。
  5. 服务器发给浏览器一个session ticket。

图形用户界面, 应用程序 描述已自动生成

为什么第二部给两次,这个就不研究了.

这时候我们看到包里面内容都是加密的.

这时候我们这么操作:

  1. 新建C:\Users\M0rk\Downloads\sslkey.log
  2. 系统变量中加上 SSLKEYLOGFILE,变量值填入新建的文件路径.

图形用户界面 描述已自动生成

  1. 在 wireshark首选项Protocols-TLS(老版本是 SSL)-(Pre)-Master-Secret log filename中,浏览到 sslkey.log
  2. 打开浏览器再次抓包,即刻解密.

SSLKEYLOGFILE是一个环境变量,用于指定一个文件路径,以便将 SSL/TLS 密钥记录到该文件中。它通常用于调试和分析加密的网络流量。

当设置了 SSLKEYLOGFILE 环境变量时,与使用 SSL/TLS 加密的应用程序(如Web浏览器或HTTPS服务器)会将加密过程中生成的主密钥和会话密钥写入指定的文件中。这些密钥可以被安全性工具(例如Wireshark)使用,以便对网络流量进行解密和分析。

通过使用 SSLKEYLOGFILE 变量,网络管理员和开发人员能够更好地理解加密通信的细节,并帮助调试和排查问题。但需要注意的是,由于涉及敏感信息,确保只有授权的人员能够访问和处理这些记录文件。

第二种解密方式