TLS协议的深入研究(一):抓包解密tls流量

3,631 阅读2分钟

使用Wireshark解密tls流量

设置环境变量

在三大操作系统中都有SSLKEYLOGFILE这个环境变量,设置了这个变量以后,tls协议的交互当中,keylog都会存在文件里面。

windows:

创建文件start-fx.cmd

start-fx.cmd文件中填写下列信息

@echo off
set SSLKEYLOGFILE=%USERPROFILE%\Desktop\keylogfile.txt
start firefox

然后运行文件即可

这个是wireshark官方的教程,默认是用的火狐浏览器,我们也可以用界面来设置:

{bde7efcd-f1a2-40cb-b066-6e18020626d0}.png 从此处进入环境变量,然后设置系统变量:

{4b295e63-4a31-4f0f-b6c9-9e80d9fbab75}.png 变量名注意不要写错,变量值设置成自己想要keylog文件存放的地方,文件名也要写在最后,不过可以不用创建文件,设置完以后有tls协议经过网络流量的话,文件会自己生成。用火狐或者谷歌浏览器可以,其他的没有尝试,但有资料说只有这两个浏览器可以用SSLKEYLOGFILE变量导出密钥。

linux && macos

分别执行下面的命令即可:

linux

export SSLKEYLOGFILE=$HOME/Desktop/keylogfile.txt
firefox

macos

export SSLKEYLOGFILE=$HOME/Desktop/keylogfile.txt
open -a firefox

这样就设置完了,注意设置完以后浏览器要重启后访问https才能在keylog写入内容。

配置Wireshark

按照图示,从编辑(Edit) -> 首选项(Preferences) -> 协议(Protocol) -> 设置 (Pre)-Master-Secret log filenameSSLKEYLOGFILE的文件路径,然后点ok保存

image.png

用百度搜索测试一下

过滤器设置tls,老版本可能是ssl

浏览器随便输入什么东西百度搜索一下

image.png 这个时候我们发现原本tls协议的加密数据,都可以看见http的明文了

如果想看前后区别可以把keylog的设置去掉一下,会发现http协议的这些包,都变成了tls的Application Data,是加密内容。

至此解密工作完成,tls1.2和1.3都可以完成解密。

额外内容:使用密钥文件解密

如果是事先获取了密钥文件的话,可以在这个地方导入RSA密钥来完成解密

{d2c28cce-b72c-4ce6-8d80-83b40f9c0ab0}.png

设置系统变量以后可以获取密钥在文件里,如果是第三方想解密的话,需要想办法从客户端获取log文件或者密钥,即可完成解密。