ReMember

使用Wireshark抓取/解码HTTPS数据包

Wireshark 的抓包是直接读取并分析网卡数据,要想让它解密 HTTPS 流量,有两个办法:

    1)如果你拥有 HTTPS 网站的加密私钥,可以用来解密这个网站的加密流量;

    2)某些浏览器支持将 TLS 会话中使用的对称密钥保存在外部文件中,可供 Wireshark 加密使用。

先来查看下第一种方法:

Tips:这里我用一个公司的域名和证书,使用本地的Hosts解析到内网一台Nginx服务器之上。

服务端Nginx配置:

客户端Host配置:

测试访问:

可以正常到达内网服务器。

此时Wireshark抓包查看:

可以看到,在SSL/TLS握手,密钥交换完成后,开始发送真实数据(Application Data),它们使用“协商”密钥进行加密通讯(大部分网站都会使用密钥交换技术生成临时随机的对称密钥来代替RSA非对称密钥进行数据通讯)。

故要想看到其内容,需使用第二种方法得到浏览器交互时生成的协商密钥进行解密。

故下面为展示设置,没有密钥交换情况下设置查看。

Wireshark设置:

右键点击进入TLS协议首选项中的RSA keys list

在其中添加对应的证书密钥:

想要获得数据包中TLS中的加密数据,需要系统和浏览器的配合。

首先打开“系统属性”选项卡:可以通过右键“我的电脑”——“属性”——“高级系统设置”打开;也可以通过在运行中输入“systempropertiesadvanced”打开。

然后添加环境变量SSLKEYLOGFILE:

变量值的文件路径可以自己设置。保存好之后,可以通过cmd命令行来查看其生效:

设置这个环境变量是因为:Firefox 和 Chrome浏览器会在系统环境变量中存在 SSLKEYLOGFILE 路径时生成该文件,以记录TLS 会话中使用的对称密钥。

注意:如果你的浏览器是以非管理员权限运行的,请将上述文件设置到有权限写入的目录中。

设置完成之后完全关闭并重新打开 Chrome 浏览器生效,可以看到所设置的路径下自动生成了记录文件:

Wireshark设置,同样进入TLS协议首选项,设置Pre-Master-Securet log file:

将文件路径设置为上面环境变量的路径:

之后,重新抓包并访问就可看到加密内容:

打赏 赞(0)
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

码字很辛苦,转载请注明来自ReMember《使用Wireshark抓取/解码HTTPS数据包》

评论