JA3 与 JA4 指纹详解:TLS 流量识别的进化
JA3 与 JA4 指纹详解:TLS 流量识别的进化
JA3 与 JA4 指纹详解:TLS 流量识别的进化
本文详细介绍了 TLS 指纹技术 JA3 及其继任者 JA4 的工作原理、输出格式解析以及它们在网络安全与流量分析中的应用。
1. 概述
- JA3/JA4 指纹:用于识别 TLS(传输层安全)客户端及其应用程序的被动指纹识别技术。
- 核心价值:
- 加密流量分析:在无法解密流量的情况下,通过握手特征识别恶意软件(C2 通信)、黑客工具或特定客户端。
- 威胁情报:将指纹作为 IOC(入侵指标)共享,用于防御。
- 应用识别:区分浏览器、脚本、API 客户端等。
2. JA3 指纹:经典标准
JA3 由 Salesforce 的 John Althouse 等人在 2017 年发布,是目前最广泛使用的 TLS 指纹标准。
工作原理
JA3 提取 TLS Client Hello 数据包中的 5 个关键字段,将它们的值(十进制)以特定格式拼接,然后进行 MD5 哈希。
字段结构
原始字符串格式如下:
1
TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats
例如: 771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0
局限性
- MD5 不透明:输出是一个 32 位的 MD5 哈希,无法逆向还原出原始特征,人类不可读。
- 易受干扰:Google Chrome 等浏览器引入了 GREASE(生成随机扩展值)和 Cipher 乱序机制,导致同一个浏览器每次连接产生的 JA3 哈希都不同。
- 误报率:不同的应用可能使用相同的底层 TLS 库配置,导致指纹碰撞。
3. JA4 指纹:下一代标准
JA4 (JA4+) 是 JA3 的原作者于 2023 年推出的新一代指纹标准,旨在解决 JA3 的痛点,提供更高保真度和可读性的指纹。
核心改进
- 人类可读 (Human Readable):指纹分段,直观展示协议版本、SNI 等信息。
- 抗干扰 (Robustness):通过排序 Cipher 和 Extension,忽略 GREASE 值,从而抵抗随机化干扰,确保同一应用指纹唯一。
- 模块化 (Modular):采用
a_b_c的分段哈希结构。
输出格式解析
JA4 指纹格式为 JA4_a_b_c,例如: t13d1516h2_8da876063651_0274a446059b
a 部分:扫描特征 (Scan/Protocol)
例如 t13d1516h2,代表最显著的明文特征:
t:传输协议(t=TCP, q=QUIC)。13:TLS 版本(13=TLS 1.3, 12=TLS 1.2)。d:SNI 类型(d=Domain, i=IP, n=None)。15:Cipher Suite 的数量。16:Extension 的数量。h2:ALPN(应用层协议协商)的首尾字符(如h2代表h2,00代表无)。
b 部分:加密特征 (Cipher Hash)
例如 8da876063651。
- 对 Cipher Suites 列表进行排序并移除 GREASE 值后计算的截断哈希(SHA256 的前 12 字符)。
- 排序机制解决了 JA3 因乱序导致的指纹变动问题。
c 部分:扩展特征 (Extension Hash)
例如 0274a446059b。
- 对 Extensions 列表进行排序并移除 GREASE 值后计算的截断哈希。
- 同样通过排序保证了稳定性。
4. JA3 vs JA4 对比
| 特性 | JA3 | JA4 |
|---|---|---|
| 输出格式 | 32 字符 MD5 (不可读) | a_b_c 分段结构 (部分可读) |
| 抗随机化 | 差 (受 Cipher 乱序影响) | 强 (自动排序,忽略 GREASE) |
| 保真度 | 中 | 高 |
| 包含信息 | 仅 TLS 握手参数 | TLS 参数 + ALPN + 协议类型 |
| 生态支持 | 极其广泛 (Suricata, Zeek, Nginx) | 正在快速普及 |
| 主要用途 | 传统威胁情报匹配 | 高级威胁狩猎、精准识别 |
5. 结论与应用建议
在实际的安全运营中:
- 不要立即抛弃 JA3:现存的大量威胁情报(TI)仍然基于 JA3,它是目前最通用的“通用语言”。
- 拥抱 JA4:对于新出现的威胁、复杂的 C2 或者是使用了 TLS 随机化的现代恶意软件,JA4 提供了极其强大的追踪能力。
- 组合使用:最佳实践是同时记录 JA3 和 JA4,利用 JA4 的
a段进行快速分类(例如快速过滤出所有 TLS 1.3 且无 SNI 的流量),再利用b和c段进行精确匹配。
JA4 的出现标志着流量指纹技术从“哈希匹配”走向了“结构化分析”,极大地提升了安全分析师在加密流量中的感知能力。
This post is licensed under CC BY 4.0 by the author.