<返回更多

Wireshark解密HTTPS流量的两种方法

2019-09-16    
加入收藏

原理

我们先回顾一下SSL/TLS的整个握手过程:

要解密HTTPS流量,需要得到加密密钥,加密密钥由主密钥、客户端随机数、服务器随机数生成。由上述握手过程可知,客户端随机数和服务器随机数在双方握手消息中传递,而主密钥(master_secret)则由预主密钥(pre_master_secret)结合两个随机数生成。预主密钥通过密码套件中的密钥交换算法进行交换(DH、RSA)。

因此,通过Wireshark解密HTTPS,可以从两个地方下手:1、密钥交换算法选择RSA,然后提取服务器的私钥,将私钥导入Wireshark,通过Wireshark解密密钥交换过程中传递的预主密钥,再结合之前的客户端和服务器随机数生成主密钥,进一步生成加密密钥,即可解密后续抓取到的加密报文。2、直接从客户端提取主密钥,结合客户端和服务器随机数生成加密密钥,实现对加密报文的解密。

下面演示两种方法解密HTTPS流量。

方法一

从服务器上导出带私钥的P12格式的证书,或者直接导出服务器的私钥。

捕获从TCP三次握手开始的完整报文:

Wireshark解密HTTPS流量的两种方法

 

可以看到此时的报文是被TLS加密的,无法看到具体的报文内容。

点击编辑——>首选项——>协议——>SSL(有的版本只有TLS),导入RSA key:

Wireshark解密HTTPS流量的两种方法

 

由于通过DH方法交换的密钥不会在中间传递,所以这种方法只能解密通过RSA交换的密钥。

导入服务器证书:

Wireshark解密HTTPS流量的两种方法

 

点击ok后,Wireshark会对捕获的报文进行解密:

Wireshark解密HTTPS流量的两种方法

 

报文被成功解密,可以直观的看到HTTP报文的请求和响应。

第二种

通过设置环境变量截取浏览器的master_secret,进而实现解密HTTPS的目的。

环境变量中新建用户变量SSLKEYLOGFILE=路径sslkey.log文件,之后再wireshark中ssl配置中制定该文件位置即可。

Wireshark解密HTTPS流量的两种方法

 

点击编辑>首选项>protocol>ssl:

Wireshark解密HTTPS流量的两种方法

 

即可解密浏览器的访问流量:

Wireshark解密HTTPS流量的两种方法

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>