JA3 vs JA3N vs JA4 vs JA4H: 网络指纹识别技术详解
JA3与JA3N的区别
JA3:客户端TLS指纹,从Client Hello消息提取以下信息生成:
- TLS版本
- 支持的加密套件列表
- 扩展字段
- 椭圆曲线
- 椭圆曲线点格式
将这些信息拼接成字符串,通过MD5哈希生成32字符指纹。示例: ab3e1f...
JA3N:服务器端TLS指纹,工作原理与JA3类似,但针对Server Hello消息:
- 服务器选择的加密套件
- 服务器发送的扩展字段
核心区别:
| 特性 | JA3 | JA3N |
|---|---|---|
| 关注点 | 客户端TLS握手(Client Hello) | 服务器TLS握手(Server Hello) |
| 用途 | 识别客户端类型/版本 | 识别服务器配置 |
| 原始数据 | 客户端支持的协议参数 | 服务器选择的协议参数 |
JA4与JA4H的区别
JA4:JA3的升级版,是JA4+指纹套件的核心成员:
- 使用SHA256哈希(取前12字符)替代MD5
- 对扩展和加密套件排序,增强稳定性
- 格式为可读的
a_b_c模块化结构 - 支持TLS、HTTP/3(QUIC)等多协议
JA4H:JA4+套件中专用于HTTP客户端指纹的模块:
-
分析HTTP请求方法、头部、Cookie等
-
格式为
JA4H_a_JA4H_b_JA4H_c_JA4H_d四部分结构 :部分 内容 JA4H_a HTTP方法、版本、Cookie存在性等 JA4H_b 请求头部(不含Cookie和Referer)的SHA256哈希(前12位) JA4H_c Cookie字段的SHA256哈希(前12位) JA4H_d Cookie名值对的SHA256哈希(前12位)
核心区别:
| 特性 | JA4 | JA4H |
|---|---|---|
| 关注点 | TLS握手特征 | HTTP请求特征 |
| 协议范围 | TLS、QUIC等传输层协议 | HTTP应用层协议 |
| 主要用途 | 客户端识别 | 客户端HTTP行为分析 |
| 数据来源 | TLS Client Hello包 | HTTP请求头和内容 |
四大指纹对比表
| 指纹 | 类型 | 生成方式 | 应用场景 |
|---|---|---|---|
| JA3 | 客户端TLS指纹 | Client Hello字段MD5哈希 | 识别客户端、反欺诈 |
| JA3N | 服务器TLS指纹 | Server Hello字段MD5哈希 | 服务器识别、安全评估 |
| JA4 | 增强版客户端指纹 | 排序后的TLS字段SHA256(前12位), a_b_c格式 | 威胁狩猎、异常检测 |
| JA4H | HTTP客户端指纹 | HTTP请求特征SHA256, 四部分结构 | HTTP行为分析、C2检测 |
技术演进与优势
JA4相比JA3的改进:
- 抗GREASE攻击(随机填充)
- 对扩展排序,消除顺序变化导致的指纹差异
- 更细粒度识别,降低碰撞概率
- 人类可读格式,便于分析
- 模块化设计,易于扩展
JA4H的独特价值:
- 即使TLS指纹被伪造,HTTP指纹仍可提供额外识别维度
- 可检测特定HTTP客户端行为(如恶意软件C2通信)
- 支持Cookie分析,识别同一网站的不同用户
总结
- JA3/JA3N: 基础TLS指纹,分别用于客户端/服务器识别,使用MD5哈希
- JA4: JA3的进化版,更稳定、可读、抗干扰,支持多协议
- JA4H: JA4+套件的HTTP分析模块,专注HTTP请求特征,提供更细粒度的客户端行为识别
核心区别: JA3与JA3N是"客户端vs服务器"的关系; JA4与JA4H是"传输层vs应用层"的关系,后者是前者在HTTP领域的专门扩展。