TLS/SSL 流量分析
TLS/SSL 流量分析
本文适合
已掌握基本流量分析的学习者。学完你能:判断 TLS 流量能否解密,使用 SSLKEYLOGFILE 或私钥还原明文,并在无法解密时提取 SNI、证书、版本、套件和流量侧信道线索
一句话判断
看到 HTTPS/TLS Application Data 时,不要直接放弃;先判断是否有 key log、服务器私钥、会话密钥、弱配置或明文侧信道,再决定解密、元数据分析或转其他证据源。
题目中常见信号
说明:内容被加密
第一动作:查是否附带 sslkeylog.log 或私钥
说明:浏览器会话可解密
第一动作:Wireshark/Tshark 配置 key log
说明:只可能解部分旧握手
第一动作:检查是否 RSA key exchange
说明:flag 或下一步在线索元数据
第一动作:导出 SNI、证书 subject/issuer
说明:可能考降级/弱套件
第一动作:查版本、cipher suite、告警
核心概念
TLS 分析分两条线:
- 可解密线:有 key log、会话密钥、合适私钥或应用层密钥,目标是还原 HTTP/应用明文。
- 不可解密线:没有密钥时仍可分析 SNI、证书、IP、端口、流量大小、时间、TLS 版本、cipher suite、alert 和 JA3 类指纹。
服务器私钥不是万能的。使用 ECDHE/DHE 前向保密时,私钥通常不能解密已抓获会话;浏览器 SSLKEYLOGFILE 更常用于 CTF。
最小分析流程
- 在 流量包基础 中确认 TLS 会话的 TCP stream、端点和端口。
- 导出 TLS 握手字段:SNI、版本、cipher suite、证书。
- 查附件是否有
sslkeylog.log、.key、浏览器 profile、内存镜像。 - 有 key log 时配置 Wireshark/Tshark 解密并导出 HTTP/应用层对象。
- 有 RSA 私钥时确认握手不是 ECDHE/DHE,再尝试配置 RSA keys。
- 无法解密时围绕元数据找线索:域名、证书字段、连接顺序、长度、时间间隔。
- 解密出的对象继续做文件类型、压缩包或 Web 分析。
最小验证示例
# 看 TLS 握手和 SNI
tshark -r tls.pcapng -Y "tls.handshake.type==1" -T fields \
-e frame.number -e ip.src -e ip.dst -e tls.handshake.extensions_server_name
# 看版本和密码套件
tshark -r tls.pcapng -Y "tls.handshake.type==2" -T fields \
-e tls.handshake.version -e tls.handshake.ciphersuite
# 使用 key log 解密并导出 HTTP 请求
tshark -r tls.pcapng -o tls.keylog_file:sslkeylog.log \
-Y "http.request" -T fields -e http.host -e http.request.uriWireshark 验证:
Edit -> Preferences -> Protocols -> TLS
(Pre)-Master-Secret log filename 选择 sslkeylog.log
重新打开 pcap 后查看是否出现 HTTP/2、HTTP 或解密后的应用层判断依据:
配置 key log 后能看到 HTTP 字段 -> 解密成功
只有 SNI/证书但无明文 -> 当前缺少会话密钥
RSA 私钥失败且套件含 ECDHE -> 前向保密导致不能用私钥解常见利用 / 解题路线
路线总览:
关键证据:附件有 key log
常用动作:Wireshark/Tshark 配置 key log
关键证据:旧 RSA 握手、无 ECDHE
常用动作:配置 RSA key list
关键证据:浏览器/服务进程内存
常用动作:转内存取证查密钥
关键证据:域名、证书字段异常
常用动作:导出字段、OSINT 或 DNS
关键证据:旧版本、弱套件、告警
常用动作:记录版本和 cipher suite
关键证据:请求长度、响应大小、间隔
常用动作:导出 frame.time_delta、tcp.len
关键证据:出现 HTTP/文件下载
常用动作:导出对象,转文件/压缩分析
常见失败原因
常见原因:key log 不匹配会话或路径配置错
排查动作:查 Client Random 是否匹配
常见原因:使用 ECDHE/DHE 前向保密
排查动作:看 cipher suite,改走 key log/内存
常见原因:解密成功但协议不同
排查动作:用 Wireshark 展开 HTTP2 或 tshark 字段
常见原因:ESNI/ECH、IP 直连或非浏览器
排查动作:查证书、DNS、流量端点
常见原因:DER/PEM 导出方式错
排查动作:右键导出证书或用 tshark 字段
常见原因:对象导出不完整或压缩编码
排查动作:Follow Stream raw,检查 Content-Encoding
迷你案例
题目给 https.pcapng 和 sslkeylog.log。先验证 SNI:
tshark -r https.pcapng -Y "tls.handshake.extensions_server_name" -T fields -e tls.handshake.extensions_server_name再配置 key log:
tshark -r https.pcapng -o tls.keylog_file:sslkeylog.log \
-Y "http.request" -T fields -e http.request.uri输出出现 /download/secret.zip,继续:
mkdir out
tshark -r https.pcapng -o tls.keylog_file:sslkeylog.log --export-objects http,out解出 ZIP 后得到 flag。WP 中要写清 key log 匹配 TLS 会话,解密后才出现 HTTP 请求和下载对象。