使用wireshark抓取https明文包
2. 关于`SSLKEYLOGFILE`环境变量的补充,这是一个通用的环境变量,大多数网络库的实现都使用到了这一环境变量进行ssl调试。1. 新建环境变量,name为`SSLKEYLOGFILE`,value为指定的某一调试文件路径,如`D:\sslkey.log`3. 因为使用的是环境变量,以上方法跨平台通用(已经测试linux(包括国产的信创系统)/mac/windows)。1. 关于安全的问
## 设置wireshark抓取本地https包
### 原理
1. 几乎所有的浏览器以及curl默认支持一个环境变量,当存在该环境变量时。浏览器会自动将https协商用的对称密钥写入该环境变量指向的文件(按照一定的格式)
2. wireshark可以从指定文件中读取密钥,从而使用该密钥对https报文进行解密
3. 该方式不区分平台
### 方法
1. 新建环境变量,name为`SSLKEYLOGFILE`,value为指定的某一调试文件路径,如`D:\sslkey.log`
该文件存储ssl握手时的pre-master信息
2. 重新打开chrome浏览器,发现指定路径下,chrome已经自行创建`sslkey.log`。如果没有的话需要重启PC后再打开浏览器,检查chrome是否创建了`sslkey.log`
3. 配置wireshark:编辑->首选项->protocols->TLS,设置`pre-master-secret log file name`项为环境变量配置的文件路径
4. 访问一个https服务器,追踪流可以发现https数据包已经是明文
5. 抓取客户端的https包要注意,先启动wireshark,然后重启客户端的所有进程
###补充
1. 关于安全的问题,需要设置环境变量并且重启进程,因此除非攻击者已经攻陷了终端,一般情况下都是有保障的
2. 关于`SSLKEYLOGFILE`环境变量的补充,这是一个通用的环境变量,大多数网络库的实现都使用到了这一环境变量进行ssl调试。比如chorme浏览器,curl网络库等。具体使用根据不同软件而异,一般默认会启用该调试功能(参考curl源码)
3. 因为使用的是环境变量,以上方法跨平台通用(已经测试linux(包括国产的信创系统)/mac/windows)。
更多推荐
所有评论(0)