JA 指纹识全系讲解-JA4+篇
字数 3058 2025-08-18 17:33:38

JA4+ 指纹识别全系详解

一、JA4+ 概述

JA4+ 是 JA3/3s 的升级替代方案,于 2023 年 9 月发布。它从早期针对 TLS 流量的指纹识别升级为支持多种协议的指纹识别方法,形成了指纹集(因此名称带有 "+" 后缀)。

JA4+ 分支及其应用场景

分支 支持协议 描述
JA4 TLS Client 客户端 TLS 指纹
JA4S TLS Server Response 服务端 TLS 响应指纹
JA4H HTTP Client HTTP 客户端指纹
JA4L Light Distance/Location 物理距离/位置测量
JA4X X509 TLS Certificate TLS 证书指纹
JA4SSH SSH Traffic SSH 流量指纹
JA4T TCP Client/Server TCP 客户端/服务端指纹
JA4TS TCP Server Response TCP 服务端响应指纹
JA4TScan Active TCP Server Fingerprint Scanner 主动 TCP 服务端指纹扫描

二、JA4+ 与 JA3/3s 的区别

JA4+ 相比 JA3/3s 有三大主要改进:

  1. 拓展化:从仅支持 TLS 扩展到支持 TCP、HTTP、SSH 等多种协议,还能分析 TLS 证书和物理位置
  2. 模块化:采用 a_b_c 结构,各部分代表指纹的不同部分,提高灵活性和抗干扰能力
  3. 可读化:指纹中包含人类可读的信息,便于人工分析

三、各分支详细解析

1. JA4 (TLS Client)

JA4 对标 JA3,主要对 Client Hello 报文进行指纹化,支持 QUIC 和 TCP 协议。

指纹结构JA4=t13d1516h2_8daaf6152771_02713d6af862(分为 JA4_a、JA4_b、JA4_c 三部分)

JA4_a 计算

  • 格式t13d1516h2
  • 组成
    • 第1字符:协议类型(t=TCP,q=QUIC)
    • 第2-3字符:TLS 版本(13=1.3,12=1.2等)
    • 第4字符:访问类型(d=域名,i=IP)
    • 第5-6字符:Cipher Suites 数量(忽略 GREASE 值)
    • 第7-8字符:ALPN 值(h2=HTTP/2,h1=HTTP/1.1,00=无)

JA4_b 计算

  • 基于 Cipher Suite 值,忽略 GREASE 值
  • 按从小到大排序后用 SHA256 加密,取前12位

JA4_c 计算

  • 基于 Extensions-Type 值,忽略 GREASE、SNI(0000)、ALPN(0010)
  • 排序后与 signature_algorithms 合并,SHA256 加密取前12位

2. JA4S (TLS Server)

对标 JA3s,对 Server Hello 报文进行指纹化。

指纹结构:同样分为 JA4_a、JA4_b、JA4_c 三部分

JA4s_a

  • 类似 JA4_a,但去掉 SNI 和 Cipher Suite 数量

JA4s_b

  • 服务端选择的 Cipher Suite(去掉 0x)

JA4s_c

  • 基于 Extensions-Type 值,忽略 ALPN(0010)
  • SHA256 加密取前12位

3. JA4H (HTTP Client)

指纹结构ge20cr13enus_974ebe531c03_b66fa821d02c_e97928733c74(四部分)

JA4H_a

  • 格式ge20cr13enus
    • ge:请求方法前2字母(GET=ge,POST=po等)
    • 20:HTTP 版本(20=2.0,11=1.1)
    • c:是否有 Cookie(c=有,n=无)
    • r:是否有 Referer
    • 13:请求头数量(忽略 Cookie 和 Referer)
    • enus:Accept-Language 前4字符(无则为0000)

JA4H_b

  • 基于响应标头(按顺序)SHA256 加密取前12位

JA4H_c

  • 基于 Cookie 字段 SHA256 加密取前12位(无则为0000)

JA4H_d

  • 基于 Cookie 字段和用户唯一 Cookie 值 SHA256 加密取前12位

4. JA4L (Light Distance/Location)

通过 TCP/UDP 流量测量物理距离。

测量模式

  • JA4L-C:客户端测量
  • JA4L-S:服务端测量

指纹结构JA4L_a_JA4L_b

  • JA4L_a:单向延迟(微秒)
  • JA4L_b:TTL 值

距离计算公式

D = (JA4L_a × c) / p
  • D:距离
  • c:光速常量(0.206公里/μs)
  • p:延迟传播系数(恶劣地形=2,良好地形=1.5)

5. JA4X (X.509 TLS Certificate)

对证书生成方式进行归类。

指纹结构:三部分

JA4X_a

  • 基于 Issuer RDNs 字段名 SHA256 加密取前12位

JA4X_b

  • 基于 Subject RDNs 字段名 SHA256 加密取前12位

JA4X_c

  • 基于 X.509 V3 Extensions SHA256 加密取前12位

6. JA4SSH (SSH Traffic)

从 SSH 会话流量中提取指纹(默认每200个包计算一次)。

指纹结构:三部分

JA4SSH_a

  • 客户端和服务端 TCP Payload 长度的众数

JA4SSH_b

  • 客户端和服务端发送的 SSH 数据包数量

JA4SSH_c

  • 客户端和服务端发送的 ACK 消息数量

四、Wireshark 配置

  1. 确保 Wireshark 版本 ≥ 4.2.0
  2. 下载 ja4.dll 放入 \Wireshark\plugins\版本\epan 目录
  3. 启动 Wireshark 后:
    • 编辑 → 首选项 → 外观 → 列
    • 添加新列,类型选择 Custom
    • 参考官方配置表设置

注意:最新版 Wireshark 已原生支持 JA4,若只需 JA4 可不进行额外配置。

五、技术优势

  1. 抗干扰能力

    • 排序处理应对 Cipher Stunting 和 Extension 随机化
    • 模块化设计使指纹部分失效不影响整体
  2. 应用场景广泛

    • 可检测会话劫持和中间人攻击(JA4H+JA4L)
    • 支持加密流量分析(如 SSH)
  3. 精准测量

    • JA4L 可实现物理距离的精确测算
    • JA4X 通过证书生成方式而非内容进行识别

六、实际应用示例

TLS 指纹识别示例

JA4=t13d1516h2_8daaf6152771_02713d6af862
  • t13:使用 TLS 1.3 的 TCP 连接
  • d:访问域名
  • 15:15个 Cipher Suites
  • h2:使用 HTTP/2
  • 后两部分为加密特征值

距离测量示例

JA4-S = 2449_104
  • 延迟:2449 微秒
  • TTL:104
  • 计算距离:2449×0.206/1.8 ≈ 257.385 公里

七、总结

JA4+ 指纹集通过模块化、可读化和多协议支持,提供了更强大、更灵活的流量指纹识别能力。各分支针对不同协议和应用场景设计,可单独或组合使用,为网络安全分析、流量监测和异常检测提供了有力工具。

JA4+ 指纹识别全系详解 一、JA4+ 概述 JA4+ 是 JA3/3s 的升级替代方案,于 2023 年 9 月发布。它从早期针对 TLS 流量的指纹识别升级为支持多种协议的指纹识别方法,形成了指纹集(因此名称带有 "+" 后缀)。 JA4+ 分支及其应用场景 | 分支 | 支持协议 | 描述 | |------|----------|------| | JA4 | TLS Client | 客户端 TLS 指纹 | | JA4S | TLS Server Response | 服务端 TLS 响应指纹 | | JA4H | HTTP Client | HTTP 客户端指纹 | | JA4L | Light Distance/Location | 物理距离/位置测量 | | JA4X | X509 TLS Certificate | TLS 证书指纹 | | JA4SSH | SSH Traffic | SSH 流量指纹 | | JA4T | TCP Client/Server | TCP 客户端/服务端指纹 | | JA4TS | TCP Server Response | TCP 服务端响应指纹 | | JA4TScan | Active TCP Server Fingerprint Scanner | 主动 TCP 服务端指纹扫描 | 二、JA4+ 与 JA3/3s 的区别 JA4+ 相比 JA3/3s 有三大主要改进: 拓展化 :从仅支持 TLS 扩展到支持 TCP、HTTP、SSH 等多种协议,还能分析 TLS 证书和物理位置 模块化 :采用 a_ b_ c 结构,各部分代表指纹的不同部分,提高灵活性和抗干扰能力 可读化 :指纹中包含人类可读的信息,便于人工分析 三、各分支详细解析 1. JA4 (TLS Client) JA4 对标 JA3,主要对 Client Hello 报文进行指纹化,支持 QUIC 和 TCP 协议。 指纹结构 : JA4=t13d1516h2_8daaf6152771_02713d6af862 (分为 JA4_ a、JA4_ b、JA4_ c 三部分) JA4_ a 计算 格式 : t13d1516h2 组成 : 第1字符:协议类型(t=TCP,q=QUIC) 第2-3字符:TLS 版本(13=1.3,12=1.2等) 第4字符:访问类型(d=域名,i=IP) 第5-6字符:Cipher Suites 数量(忽略 GREASE 值) 第7-8字符:ALPN 值(h2=HTTP/2,h1=HTTP/1.1,00=无) JA4_ b 计算 基于 Cipher Suite 值,忽略 GREASE 值 按从小到大排序后用 SHA256 加密,取前12位 JA4_ c 计算 基于 Extensions-Type 值,忽略 GREASE、SNI(0000)、ALPN(0010) 排序后与 signature_ algorithms 合并,SHA256 加密取前12位 2. JA4S (TLS Server) 对标 JA3s,对 Server Hello 报文进行指纹化。 指纹结构 :同样分为 JA4_ a、JA4_ b、JA4_ c 三部分 JA4s_ a 类似 JA4_ a,但去掉 SNI 和 Cipher Suite 数量 JA4s_ b 服务端选择的 Cipher Suite(去掉 0x) JA4s_ c 基于 Extensions-Type 值,忽略 ALPN(0010) SHA256 加密取前12位 3. JA4H (HTTP Client) 指纹结构 : ge20cr13enus_974ebe531c03_b66fa821d02c_e97928733c74 (四部分) JA4H_ a 格式 : ge20cr13enus ge:请求方法前2字母(GET=ge,POST=po等) 20:HTTP 版本(20=2.0,11=1.1) c:是否有 Cookie(c=有,n=无) r:是否有 Referer 13:请求头数量(忽略 Cookie 和 Referer) enus:Accept-Language 前4字符(无则为0000) JA4H_ b 基于响应标头(按顺序)SHA256 加密取前12位 JA4H_ c 基于 Cookie 字段 SHA256 加密取前12位(无则为0000) JA4H_ d 基于 Cookie 字段和用户唯一 Cookie 值 SHA256 加密取前12位 4. JA4L (Light Distance/Location) 通过 TCP/UDP 流量测量物理距离。 测量模式 : JA4L-C:客户端测量 JA4L-S:服务端测量 指纹结构 : JA4L_a_JA4L_b JA4L_ a:单向延迟(微秒) JA4L_ b:TTL 值 距离计算公式 : D:距离 c:光速常量(0.206公里/μs) p:延迟传播系数(恶劣地形=2,良好地形=1.5) 5. JA4X (X.509 TLS Certificate) 对证书生成方式进行归类。 指纹结构 :三部分 JA4X_ a 基于 Issuer RDNs 字段名 SHA256 加密取前12位 JA4X_ b 基于 Subject RDNs 字段名 SHA256 加密取前12位 JA4X_ c 基于 X.509 V3 Extensions SHA256 加密取前12位 6. JA4SSH (SSH Traffic) 从 SSH 会话流量中提取指纹(默认每200个包计算一次)。 指纹结构 :三部分 JA4SSH_ a 客户端和服务端 TCP Payload 长度的众数 JA4SSH_ b 客户端和服务端发送的 SSH 数据包数量 JA4SSH_ c 客户端和服务端发送的 ACK 消息数量 四、Wireshark 配置 确保 Wireshark 版本 ≥ 4.2.0 下载 ja4.dll 放入 \Wireshark\plugins\版本\epan 目录 启动 Wireshark 后: 编辑 → 首选项 → 外观 → 列 添加新列,类型选择 Custom 参考官方配置表设置 注意:最新版 Wireshark 已原生支持 JA4,若只需 JA4 可不进行额外配置。 五、技术优势 抗干扰能力 : 排序处理应对 Cipher Stunting 和 Extension 随机化 模块化设计使指纹部分失效不影响整体 应用场景广泛 : 可检测会话劫持和中间人攻击(JA4H+JA4L) 支持加密流量分析(如 SSH) 精准测量 : JA4L 可实现物理距离的精确测算 JA4X 通过证书生成方式而非内容进行识别 六、实际应用示例 TLS 指纹识别示例 t13:使用 TLS 1.3 的 TCP 连接 d:访问域名 15:15个 Cipher Suites h2:使用 HTTP/2 后两部分为加密特征值 距离测量示例 延迟:2449 微秒 TTL:104 计算距离:2449×0.206/1.8 ≈ 257.385 公里 七、总结 JA4+ 指纹集通过模块化、可读化和多协议支持,提供了更强大、更灵活的流量指纹识别能力。各分支针对不同协议和应用场景设计,可单独或组合使用,为网络安全分析、流量监测和异常检测提供了有力工具。