文章总结: 本文对比了SSL/TLS流量的中间人内联解密与密钥带外解密机制,指出密钥日志方式无侵入且支持TLS1.3。文章提供零基础实操指南,通过设置SSLKEYLOGFILE环境变量导出会话密钥并配合Wireshark,即可快速解密HTTPS流量,适用于网络流量分析与威胁检测。 综合评分: 89 文章分类: 安全工具,网络安全,WEB安全,威胁情报
0基础1分钟解密任何HTTPS加密流量
LLLibra146
2025年5月30日 08:00 北京
在小说阅读器读本章
去阅读
以下文章来源于听风者开源情报 ,作者墨子法家
听风者开源情报 .
开源情报研究所!
背景
什么是 SSL/TLS?
SSL/TLS是用于保护网络通信安全的加密协议,SSL/TLS是在传输层为HTTP等协议添加加密、身份验证和完整性校验的安全协议,确保网络通信数据在传输过程中不被窃听、篡改或伪造。
SSL(Secure Sockets Layer)是较早的版本,由网景公司开发。TLS(Transport Layer Security)是SSL的继任者,从TLS 1.0开始逐步取代SSL。目前SSL已基本淘汰,但人们习惯上仍称为"SSL证书"或"SSL加密"。
目前主流版本是TLS 1.2和TLS 1.3,TLS 1.3是最新标准(2018年发布),安全性更高、握手更快,但TLS 1.2仍然广泛使用以保证兼容性。SSL 3.0、TLS 1.0和TLS 1.1由于安全漏洞(比如POODLE攻击漏洞),主流浏览器和服务器已逐步停止支持。
网站采用HTTPS传输已经成为事实上的标准,如果不是HTTPS那么浏览器会显示不安全,实际上也不安全,容易被中间人攻击,抓包,欺骗,替换等。
为什么需要解密?
从OSINT(开源情报)角度,解密SSL/TLS的主要需求包括:
网络流量分析:监控和分析组织内部网络流量,识别潜在的数据泄露、恶意软件通信或异常行为模式。
恶意软件分析:研究分析恶意软件,后门木马等数据传输。
威胁检测与响应:检测加密流量中隐藏的恶意活动,如APT攻击、C&C通信、数据外泄等,这些威胁常利用SSL加密来规避检测。
还包括进行数字取证、合规审计以及员工监控,甚至部分亚非拉小国家出于各种目的进行的国家级通信监控,总之解密的目的是为了看到透明的数据以进行进一步分析。
如何进行SSL/TLS解密?
目前SSL/TLS解密方法主要有两类,分为内联解密以及带外解密,内联解密主要通过MITM中间人代理实时解密,而带外解密则通过密钥进行旁路解密,此时支持实时以及非实时流量。
中间人解密(内联解密)
所谓中间人(MITM)解密就是在用户客户端(比如chrome浏览器)与服务器之间插入一个“中间人”,用来替代浏览器与服务器进行SSL链接,在此模式下,建立两个独立的SSL连接:一个与客户端,一个与真实服务器。设备使用自己的证书与客户端建立加密连接,同时与服务器建立另一个加密连接。
中间人解密是成本最低,也是大量安全分析软件采用的主流方法,比如burpsuite,charles等,很多企业级监控也采用这个方法,当然缺点也很明显,主要包括:
- 1. 侵入性:这个是最大的问题,因为必须在设备上信任、安装第三方证书,如果点击浏览器SSL小锁查看信息就可以一眼看出SSL证书信息与当前请求的域名不一致。
所以如果使用企业提供的电脑就要注意了,检查下当前系统证书信息是否一致,否则,容易信息裸奔。 - 2. 局限性:MITM攻击成功的核心原因是SSL/TLS客户端完全信任操作系统提供的证书,
如果客户端不信任系统证书那么就无法实施中间人代理攻击,比如很多移动端APP采用 SSL Pinning(SSL固定/证书固定)与APP服务器通信,在这种模式下,普通MITM无法实施,需要进行系统级别的修改HOOK,大大增加了SSL/TLS流量解密难度。
使用密钥解密 (带外解密)
所谓密钥解密就是使用密钥对客户端和服务器之间的流量进行解码。这里分两种情况: 1、使用证书私钥:即导入SSL/TLS证书私钥进行解密,完全旁路,无侵入。但仅适用于RSA密钥交换,不支持DHE/ECDHE(完美前向保密)和TLS 1.3。 2、使用会话密钥日志文件:通过SSLKEYLOGFILE等机制获取应用程序导出的会话密钥。需要应用程序配合(如设置环境变量),支持所有现代加密算法包括TLS 1.3。
虽然都是基于密钥,这两者是有明显区别的,总结如下:
| 特征 | 服务器私钥 | 密钥日志文件 | | — | — | — | | 密钥来源 | 证书长期私钥 | 应用程序导出会话密钥 | | RSA交换支持 | ✅ | ✅ | | DHE/ECDHE支持 | ❌ | ✅ | | TLS 1.3支持 | ❌ | ✅ | | PFS支持 | ❌ | ✅ | | 部署复杂度 | 中等(需要私钥) | 高(需要应用配合) | | 实时解密 | ✅ | ✅ | | 离线解密 | ✅ | ✅ |
一般专注SSL/TLS解密的商业产品都是基于证书私钥进行解密,比如A10,GIGAMON的相关产品,以监控为目的的产品多基于MITM。
内联与带外解密区别
| 维度 | 内联解密(Inline) | 带外解密(Out-of-band) | | — | — | — | | 工作原理 | 流量必须通过解密设备,串联部署 | 镜像/分流流量到解密设备,并联部署 | | 部署方式 | 串联在网络路径中,成为必经节点 | 旁路部署,从网络TAP/镜像端口获取流量 | | 解密能力 | 所有流量(包括TLS 1.3、PFS) | 有限制(需要私钥,不支持PFS) | | 技术实现 | MITM中间人技术 | 私钥解密或密钥导出 | | 证书要求 | 需要安装企业根证书到客户端 | 需要服务器私钥 | | 实时解密 | 实时解密分析 | 实时解密分析 | | 离线分析 | ❌ 通常不保存原始加密流量 | ✅ 可保存流量后离线分析 | | SSL Pinning兼容性 | ❌ 无法处理SSL Pinning应用 | ✅ 不受SSL Pinning影响 | | TLS 1.3支持 | ✅ 通过MITM技术支持 | ❌ 需要应用程序配合导出密钥 | | PFS支持 | ✅ 通过MITM技术支持 | ❌ 无法通过私钥解密 | | 侵入性 | ❌ 明显改变网络行为 | ✅ 对网络透明,无感知 |
0基础1分钟解密SSL/TLS流量
基于前面介绍我们现在采用会话密钥的方式进行SSL/TLS会话内容解密,这个方法简单粗暴,无需中间人,无需证书私钥,下面进行全网最清晰,简洁,一看就懂,一做就会的操作说明。
会话密钥解密原理
- 1. 浏览器比如Firefox、Chrome作为SSL/TLS的客户端,参与整个加密通信。
- 2. 浏览器中通常有专门的SSL/TLS组件负责加密通信,比如NSS (Network Security Services) 库。
- 3. NSS库负责SSL/TLS协议实现,证书处理以及密码学算法等。
- 4. 出于网络分析调试目的,
NSS库引入了 SSLKEYLOGFILE 这个功能支持,早期该功能允许客户端将预主密钥导出(Pre-Master Secret)到文件中,Wireshark支持分析该预主密钥,从而推断密钥,然后解密SSL/TLS数据。现在直接生成最终会话密钥 - 5. 换句话说,
要通过会话密钥解密SSL/TLS,必须确保进行加密通信的客户端支持 SSLKEYLOGFILE 这个特性,这个是必要条件。 - 6. 如何知道客户端是否支持 SSLKEYLOGFILE 这个特性?开源软件的话看源码或者说明,还有就是创建变量后看看哪些文件在写这个文件。下图使用此前文章介绍的源代码搜索工具搜索关键字 “SSLKEYLOGFILE”。
环境准备
- 1. 操作系统:Windows、macOS、Linux均可,只需要可以运行浏览器。
- 2. 浏览器:Chrome、Firefox均可,
注意,Safari异于常人,它不支持SSLKEYLOGFILE。 - 3. 抓包神器:Wiresshark。 本文以 Windows 11 + Chrome +Wireshark为例。
操作步骤
1. 创建环境变量
# Windows PowerShell:
setx SSLKEYLOGFILE="C:\path\to\sslkeys.log"
# Windows CMD:
set SSLKEYLOGFILE="C:\path\to\sslkeys.log"
# Linux/MacOS:
export SSLKEYLOGFILE="/path/to/sslkeys.log"
2. 验证环境变量
# Windows PowerShell:
echo $env:SSLKEYLOGFILE
# Windows CMD:
echo %SSLKEYLOGFILE%
macOS:
echo $SSLKEYLOGFILE
Linux:
cho $SSLKEYLOGFILE
env|grep SSLKEYLOGFILE
设置后最好重启系统,使变量立即生效
#
3. 查看 sslkeys.log 文件
- 1. 如果SSLKEYLOGFILE变量设置成功,打开浏览器或者其他支持SSLKEYLOGFILE的客户端,sslkeys文件就会开始写入密钥,如果没有写入那么可以尝试重启系统,确保变量生效。
- 2. 密钥文件会记录多个密钥,且该文件会持续追加写入。
- 3. sslkeys.log 示例分析
CLIENT_HANDSHAKE_TRAFFIC_SECRET 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f 96f30f595c557a0e6655e0285ac6d8e735713571abb669e957b8c6d2076e805c
SERVER_HANDSHAKE_TRAFFIC_SECRET 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f 0e817affe3ec667be66f5f0a981d56840c3b8c6c408b0d161ff7fef13dfe2d31
CLIENT_TRAFFIC_SECRET_0 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f a1b5b30233459ee9211214a8adbe42d945337a8fa527b15845227ac404fdc687
SERVER_TRAFFIC_SECRET_0 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f d60259fff14c1094eec50f578df6f2478ed8c812ae0a0255e10b09312037f5c6
EXPORTER_SECRET 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f 843fda104935e278c3e6ccca1565d832b2245d0708f011caec6fa7df765c398f
CLIENT_HANDSHAKE_TRAFFIC_SECRET 520ec017c88545ee1de2d11ea0ba080cc627053f4b72e8691f03fd2138b64cbb 1425d6da6553f4c4497855f742e9022d2950e082a7c15dfd49f3583ff7c48624
SERVER_HANDSHAKE_TRAFFIC_SECRET 520ec017c88545ee1de2d11ea0ba080cc627053f4b72e8691f03fd2138b64cbb a8a4944fe194c96dafa3d9c1b89dc54c053a238fd8c988caa62e872ac0a03354
CLIENT_TRAFFIC_SECRET_0 520ec017c88545ee1de2d11ea0ba080cc627053f4b72e8691f03fd2138b64cbb 1587816a3b4df1a7a156a5c4cd8a84b7874a33b6f92cb647ac0dce8e085e318b
SERVER_TRAFFIC_SECRET_0 520ec017c88545ee1de2d11ea0ba080cc627053f4b72e8691f03fd2138b64cbb 0504a3910336352266dbf3dadb617317557b8de1181adf508d2135000532680d
EXPORTER_SECRET 520ec017c88545ee1de2d11ea0ba080cc627053f4b72e8691f03fd2138b64cbb fa6f2042d51fa3e40554cf318f8f81a6b9bcb7d56be51db94ec078ba8e3cf34d
CLIENT_HANDSHAKE_TRAFFIC_SECRET ca90b07a676f2c5982fa47c541ff34a06bef2c50e8298c2ef2f10f46f5c47f02 9ff08c8601c8898c41bb6b2c5d5632e422f86d0ad00d2acad5973684d948ea5d
SERVER_HANDSHAKE_TRAFFIC_SECRET ca90b07a676f2c5982fa47c541ff34a06bef2c50e8298c2ef2f10f46f5c47f02 2bd39a5108bde8fe9680e7476007dda341f54eefd47a3536d03757e5795f41d7
CLIENT_TRAFFIC_SECRET_0 ca90b07a676f2c5982fa47c541ff34a06bef2c50e8298c2ef2f10f46f5c47f02 4d26c6e666eabcb1e6c901ad41d4b5bc24cbe66a33529c4015ba2386558fffaa
SERVER_TRAFFIC_SECRET_0 ca90b07a676f2c5982fa47c541ff34a06bef2c50e8298c2ef2f10f46f5c47f02 2f1be16695ee6cd57f250b7090e92b3532249d61aed9f385388e48429e04592f
包含密钥信息:
| 密钥类型 | 出现次数 | 说明 | | — | — | — | | CLIENT_HANDSHAKE_TRAFFIC_SECRET | 3 | 客户端握手流量密钥 | | SERVER_HANDSHAKE_TRAFFIC_SECRET | 3 | 服务器握手流量密钥 | | CLIENT_TRAFFIC_SECRET_0 | 2 | 客户端应用数据密钥 | | SERVER_TRAFFIC_SECRET_0 | 2 | 服务器应用数据密钥 | | EXPORTER_SECRET | 2 | 导出器密钥 |
会话分组详细:
会话1(Client Random: 3c7064882aa1af88…)
| 密钥类型 | 客户端随机数 | 密钥值 | | — | — | — | | CLIENT_HANDSHAKE_TRAFFIC_SECRET | 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f | 96f30f595c557a0e6655e0285ac6d8e735713571abb669e957b8c6d2076e805c | | SERVER_HANDSHAKE_TRAFFIC_SECRET | 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f | 0e817affe3ec667be66f5f0a981d56840c3b8c6c408b0d161ff7fef13dfe2d31 | | CLIENT_TRAFFIC_SECRET_0 | 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f | a1b5b30233459ee9211214a8adbe42d945337a8fa527b15845227ac404fdc687 | | SERVER_TRAFFIC_SECRET_0 | 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f | d60259fff14c1094eec50f578df6f2478ed8c812ae0a0255e10b09312037f5c6 | | EXPORTER_SECRET | 3c7064882aa1af88e1240524b106560ff33cbf0e281d8384dabd058ad72c439f | 843fda104935e278c3e6ccca1565d832b2245d0708f011caec6fa7df765c398f |
4. 配置Wireshark密钥文件路径
打开Wireshark→首选项→Protocols→TLS→(Pre)-Master-Secret log filename,在这里输入或浏览选择SSLKEYLOGFILE变量对应的文件。
注意其他参数不需要配置,很多帖子文章乱写,唯一需要的就是预主密钥(密钥)的路径
5. 验证SSL/TLS解密成功
- 1. 打开Wireshark,输入一个HTTPS网站,比如 www.whitehouse.gov (解析IP地址:192.0.66.51),请求一个不存在的路径test007,https://www.whitehouse.gov/administration/test007 浏览器返回404。
- 2. 未设置 Master-Secret log 时都是加密传输,此时打开Wireshark抓包看不到HTTP标准响应。
- 3. 设置了 Master-Secret log 路径后,直接显示为明文传输,
注意由于 www.whitehouse.gov 启用了HTTP2,HTTP2协议采用HPACK压缩算法压缩头部Header,所以并不是每个HTTP2帧都包含了完整头部信息,一旦某个请求找不到明文HEADER,并不是解密失败而是HTTP2特性,此时多观察几个HTTP包即可。 - 4. 至此 HTTPS 解密完成。
总结
- 1. 使用会话密钥解密SSL/TLS的关键是发起HTTPS的客户端要支持SSLKEYLOGFILE特性,这个是必要条件。
- 2. 我们主要使用 Wireshark读取密钥然后实时解密,因此Wireshark必须配置正确。
- 3. 解密的是HTTPS传输的内容,而SSL/TLS协商过程的包是正常的握手包, 不会解密,本身也不需要解密。
本文关键字:#SSL解密 #TLS解密 #流量解密 #加密流量 #流量监控 #wireshark #抓包 #burpsuite #证书密钥 #APP抓包 #MITM #中间人攻击 #中间人解密
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:LLLibra146 《0基础1分钟解密任何HTTPS加密流量》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论