wireshark抓包分析https

wireshark抓包分析https

wireshark 配置

配置网站的私钥

我想抓取分析自己服务器搭建出来的模拟https这需要使用网站生成证书使用的私钥进行解密,把它添加到 wireshark 配置中如下所示:

配置首选项

通过curl访问的 https 协议的 URL,在配置了该服务器对应的私钥后可以抓取到对应的 HTTP 明文。

工作中的wireshark将抓取到相关数据包,在过滤栏设置过滤条件以避免其他无用数据包影响分析,比如:ip.addr == xx &&ssl表示只显示ICPM协议且源主机IP或者目的主机IP为185.199.111.153的数据包。说明:协议名称ssl要小写

抓包

部分小问题:

wireshark提示Ignored Unknow Record

解决:

通过路径:编辑--首选项--协议--TLS找到以下配置,并勾选“reassemble TLS records SPANNING Multiple tcp segments”

抓包分析

通过https传输视频,抓包分析如下:

image-20231225211847573
image-20231225223656861

当服务端收到客户端的「Client Hello」消息后,会确认TLS版本号是否支持持,和从密码套件列表中选择⼀个密码套件,以及⽣成随机数(Server Random)。接着,返回「Server Hello」消息,消息⾥⾯有服务器确认的 TLS 版本号,也给出了随机数(Server Random),然后从客户端的密码套件列表选择了⼀个合适的密码套件。如下图所示可以看出,服务端选择密码套件为cipher Suite :TLS_AES_256_GCM_SHA384。服务端选择的加密套件是TLS-AES256-GCM-SHA384,注意TLS 1.3 的握手不再支持静态的 RSA 密钥交换,这意味着可以使用带有前向安全的 Diffie-Hellman 进行全面握手,密钥交换机制可提供前向保密。同时还包含服务端的keyshare,可以理解为b * G。以及Change Cipher Spec协议让客户端重新计算共享密钥。还可看到服务端此时已经可以发送应用数据,因为服务端根据a * G,计算出了 a * G * b(共享密钥),于是用这个共享密钥加密数据并发送。