之前在做应急响应,看到 TLS 流量都是两眼一摸黑,今天突发奇想是不是也可以解密,查了下资料发现些好玩的东西(SSLKEYLOGFILE),分享给大家。
以 CSDN为例,先看下https网站打开过程的抓包:
- DNS解析
- TCP协议三次握手
在看看 TLS 协议的握手过程:
- 浏览器给出协议版本号、一个客户端生成的随机数,以及客户端支持的加密方法
- 服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。
- 并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey。
- 浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。
- 服务器发给浏览器一个session ticket。
为什么第二部给两次,这个就不研究了.
这时候我们看到包里面内容都是加密的.
这时候我们这么操作:
- 新建C:\Users\M0rk\Downloads\sslkey.log
- 系统变量中加上 SSLKEYLOGFILE,变量值填入新建的文件路径.
- 在 wireshark首选项Protocols-TLS(老版本是 SSL)-(Pre)-Master-Secret log filename中,浏览到 sslkey.log
- 打开浏览器再次抓包,即刻解密.
SSLKEYLOGFILE是一个环境变量,用于指定一个文件路径,以便将 SSL/TLS 密钥记录到该文件中。它通常用于调试和分析加密的网络流量。
当设置了 SSLKEYLOGFILE 环境变量时,与使用 SSL/TLS 加密的应用程序(如Web浏览器或HTTPS服务器)会将加密过程中生成的主密钥和会话密钥写入指定的文件中。这些密钥可以被安全性工具(例如Wireshark)使用,以便对网络流量进行解密和分析。
通过使用 SSLKEYLOGFILE 变量,网络管理员和开发人员能够更好地理解加密通信的细节,并帮助调试和排查问题。但需要注意的是,由于涉及敏感信息,确保只有授权的人员能够访问和处理这些记录文件。