TLS1.3抓包分析----解密Application Data

一、问题描述

TLS1.3 在两次握手后,开始加入加密传输。具体表现Change Cipher Spec之后出现 Application Data(加密后的数据,WireShark不能解密)。

二、解决方案

tls1.3 交互的双方分别是 谷歌浏览器和 支持tls1.3的服务器。WireShark在抓包过程中的作用是呈现数据交互,它本身不会存储客户端和服务端交互的各种信息。包括会话密钥。

所以想要让WireSharke解密需要告诉指定会话密钥,但这个信息只有浏览器知道。又因为Firefox和Chrome浏览器都支持用log文件的方式记录下用来加密TLS数据包对称会话秘钥的,

所以创建ssl.log来保存会话密钥,然后把这个文件路径告诉wireShark就能看到明文。

三、具体操作步骤

我的设备:mac os Sequoia 15.1.1  M3

1. 终端方式启动Chrome浏览器

将Chrome浏览器按指定log文件的方式,记录加密TLS数据对称会话密钥。(ssl.log填写自己的绝对路径)

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --ssl-key-log-file=/Users/test/log/ssl.log

2. 配置wireshark 日志路径

wireshark -> preferences -> Protocols -> tls 

 3. 打开浏览器请求域名验证

浏览器输入https://api.github.com,查看ssl.log是否有内容产生(如下)。

4. 效果

可以看到Application Data变成了 Certificate, Certificate verify, Finished。

 

四、排查过程

https://www.jianshu.com/p/9c027c580f8d

网络上找了好久,都是在重复copy这个人的思路。可是这种windows的方式并不能解决我的问题。问题主要卡在了文内设置完系统变量后,浏览器就会自动使用,可是明显mac不是这样的。于是我就在寻找如果让我本地浏览器按指定日志的方式启动。

后来在一偏文章中看到了 --ssl-key-log-file=xx.log。到这里浏览器和抓包工具联系起来了,问题也解决了。

 

posted @ 2024-12-09 19:10  小祥工作室  阅读(97)  评论(0编辑  收藏  举报