返回更新列表
新发布Aug 15, 2026

ja4 v1.0.0

JA4+ 是一套网络指纹识别标准

分享

logo

JA4+™ 网络指纹识别

JA4+ 是由 FoxIO 开发的一套易于使用和分享的网络指纹识别方法。这些方法既可供人类阅读,也可供机器解析,以便更有效地进行威胁狩猎和分析。其应用场景包括:扫描威胁行为者、恶意软件检测、会话劫持防护、合规自动化、位置追踪、DDoS 检测、威胁行为者分组、反向 Shell 检测等。

关于 JA4+ 的快速说明及分析参考,请参见:
JA4+ 速查表

深入了解请阅读我们的博客文章,了解 JA4+ 的工作原理、为什么有效以及可检测/预防的示例:
JA4+ 网络指纹识别 (JA4/S/H/L/X/SSH)
JA4T: TCP 指纹识别 (JA4T/TS/TScan)
使用 JA4T 调查 Surfshark 和 NordVPN (JA4T)

如果你喜欢 JA4+,可以考虑购买 T 恤或连帽衫:
JA4+ T 恤、连帽衫和贴纸

目录

当前方法及实现细节

全称简称描述
JA4JA4TLS 客户端指纹识别
JA4ServerJA4STLS 服务器响应/会话指纹识别
JA4HTTPJA4HHTTP 客户端指纹识别
JA4LatencyJA4L客户端到服务器延迟测量/光距离
JA4LatencyServerJA4LS服务器到客户端延迟测量/光距离
JA4X509JA4XX509 TLS 证书指纹识别
JA4SSHJA4SSHSSH 流量指纹识别
JA4TCPJA4TTCP 客户端指纹识别
JA4TCPServerJA4TSTCP 服务器响应指纹识别
JA4TCPScanJA4TScan主动 TCP 指纹扫描器
JA4DHCPJA4DDHCP 指纹识别
JA4DHCPv6JA4D6DHCPv6 指纹识别

全称和简称可以互换使用。更多 JA4+ 方法正在开发中……

如何解读 JA4+ 指纹,请参见 技术细节

实现

本仓库包含 JA4+ 的以下实现:

支持 JA4+ 的工具

更多工具即将公布……

示例

应用程序JA4+ 指纹
ChromeJA4=t13d1516h2_8daaf6152771_02713d6af862 (TCP)
JA4=q13d0312h3_55b375c5d22e_06cda9e17597 (QUIC)
JA4=t13d1517h2_8daaf6152771_b0da82dd1658 (预共享密钥)
JA4=t13d1517h2_8daaf6152771_b1ff8ab2d16f (无密钥)
IcedID 恶意软件投递器JA4H=ge11cn020000_9ed1ff1f7b03_cd8dafe26982
IcedID 恶意软件JA4=t13d201100_2b729b4bf6f3_9e7b989ebec8
JA4S=t120300_c030_5e2616a54c73
Sliver 恶意软件JA4=t13d190900_9dc949149365_97f8aa674fd9
JA4S=t130200_1301_a56c5b993250
JA4X=000000000000_4f24da86fad6_bf0f0589fc03
JA4X=000000000000_7c32fa18c13e_bf0f0589fc03
Cobalt StrikeJA4H=ge11cn060000_4e59edc1297a_4da5efaf0cbd
JA4X=2166164053c1_2166164053c1_30d204a01551
SoftEther VPNJA4=t13d880900_fcb5b95cb75a_b0d3b4ac2a14 (客户端)
JA4S=t130200_1302_a56c5b993250
JA4X=d55f458d5a6c_d55f458d5a6c_0fc8c171b6ae
QakbotJA4X=2bab15409345_af684594efb4_000000000000
PikabotJA4X=1a59268f55e5_1a59268f55e5_795797892f9c
DarkgateJA4H=po10nn060000_cdb958d032b0
LummaC2JA4H=po11nn050000_d253db9d024b
EvilginxJA4=t13d191000_9dc949149365_e7c285222651
反向 SSH ShellJA4SSH=c76s76_c71s59_c0s70
Windows 11JA4T=64240_2-1-3-1-1-4_1460_8
Epson 打印机JA4TScan=28960_2-4-8-1-3_1460_3_1-4-8-16
Windows 11JA4D=disco0000in_61-12-60-55_1-3-6-15-31-33-43-44-46-47-119-121-249-252
Sony 接收器JA4D6=solct0010nn_8-1-3-6_24-23

更多示例请参见 ja4plus-mapping.csv
完整数据库请访问 ja4db.com

插件

Wireshark
Zeek
Arkime

二进制文件

JA4 二进制文件基于本套件的 Rust 实现 构建。为确保完整功能,需要安装 tshark(版本 4.0.6 或更高)。从 Releases 页面下载最新的 JA4 二进制文件。Rust 实现的发布版本遵循 语义化版本控制,标记为 vX.Y.Z,与 Wireshark 插件版本不同。

发布资源

发布资源根据组件和平台命名:

  • Rust:
    • ja4-vX.Y.Z-<架构>-<平台>.tar.gz(例如 ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz
  • Python:
    • ja4-python-vX.Y.Z.tar.gz(包含完整的 python/ 目录)
  • Wireshark:
    • ja4.so.linux, ja4.so.macos, ja4.dll(附加到名为类似 wireshark-vX.Y.Z 的发布中)

根据您的系统和组件选择相应的文件。

安装 tshark

Linux

使用包管理器安装(包名称 tsharkwireshark-cli 取决于发行版)。例如,在 Ubuntu 上:

sudo apt install tshark

macOS

  1. 下载并安装 Wireshark(包含 tshark)。
  2. tshark 添加到您的 PATH
    sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
    

Windows

  1. 下载并安装 Wireshark(包含 tshark.exe)。
  2. 找到 tshark.exe(通常位于 C:\Program Files\Wireshark\tshark.exe)。
  3. 将包含 tshark.exe 的文件夹添加到系统 PATH
    • 打开 系统属性 > 环境变量 > 编辑 Path

运行 JA4+

一旦 tshark 和 JA4+ 二进制文件可用,使用以下命令运行 JA4+:

  • 在 Linux 和 macOS 上:
    ./ja4 [选项] [pcap]
    
  • 在 Windows 上,打开 命令提示符 并运行:
    ja4 [选项] [pcap]
    

有关运行 JA4+ 及其高级配置的更多详细信息,请参阅 Rust 实现 README,其中提供了其功能、使用场景和自定义选项的信息。

数据库

官方 JA4+ 指纹数据库及相关应用程序和推荐检测逻辑位于:ja4db.com
该数据库正在非常积极地开发中。在接下来的几个月内,指纹组合和数据的数量将大幅增加。

还提供示例 ja4plus-mapping.csv 供快速参考。

发布流程

JA4+ 使用 GitHub Actions 来自动化 Rust、Python、Wireshark 和 Zeek 组件的发布。通过向仓库推送带有特定前缀的标签来创建发布(Zeek 除外,它使用纯语义版本标签)。发布资源命名如下:

  • Rust: ja4-vX.Y.Z-<架构>-<平台>.tar.gz
  • Python: ja4-python-vX.Y.Z.tar.gz
  • Wireshark: ja4.so.linux, ja4.so.macos, ja4.dll(在名为类似 wireshark-vX.Y.Z 的发布中)

以下是可用的工作流程:

  • Rust 发布:
    推送以 rust- 开头的标签,例如 rust-v0.18.5,以触发 Rust 二进制文件的发布。工作流程将自动构建并上传发布资源。

  • Python 发布:
    推送以 python- 开头的标签,例如 python-v0.1.0,以触发 Python 实现的发布。工作流程将创建 python/ 目录的 tar 包并将其发布为发布资源。

  • Wireshark 插件发布:
    推送以 wireshark- 开头的标签,例如 wireshark-v0.1.1,以触发所有支持平台的 Wireshark 插件二进制文件的发布。

  • Zeek 发布:
    推送一个纯语义版本标签(例如 v1.2.3),不带前缀,以触发 Zeek 发布。这将自动在 packages.zeek.org 上创建一个发布。

如何创建发布

  1. 确保您的更改已合并到 main 分支。

  2. 为您要发布的组件创建并推送标签:

    • 对于 Rust、Python 或 Wireshark,使用相应的前缀(例如 rust-v0.18.5python-v0.1.0wireshark-v0.1.1)。
    • 对于 Zeek,使用纯语义版本标签(例如 v1.2.3)。

    示例:

    git tag v1.2.3
    git push origin v1.2.3
    

    (适用于 Zeek)

    或对于 Rust:

    git tag rust-v0.18.5
    git push origin rust-v0.18.5
    
  3. 相应的 GitHub Actions 工作流程将运行并自动发布发布资源。对于 Zeek,发布将显示在 packages.zeek.org 上。

JA4+ 详情

JA4+ 是一组简单而强大的网络指纹,适用于多种协议,既可供人类阅读,也可供机器解析,有助于改进威胁狩猎和安全分析。如果您不熟悉网络指纹识别,建议阅读我发布的关于 JA3 的博客、关于 JARM 的博客,以及 Fastly 这篇关于 TLS 指纹识别现状 的优秀博客,其中概述了上述方法的历史及其存在的问题。JA4+ 提供了专门的支持,使这些方法随着行业变化而保持更新。

所有 JA4+ 指纹均采用 a_b_c 格式,用分隔符区分构成指纹的不同部分。这使得仅利用 ab、ac 或仅 c 部分即可进行狩猎和检测。例如,如果只想分析进入应用程序的 cookie,可以只看 JA4H_c 部分。这种新的局部保持格式便于进行更深入、更丰富的分析,同时保持简单易用,并允许扩展。

例如,GreyNoise 是一个监听互联网的扫描器,正在将 JA4+ 集成到其产品中。他们有一个行为者,使用不断变化的单个 TLS 密码套件扫描互联网。这会产生大量完全不同的 JA3 指纹,但使用 JA4 后,只有 JA4 指纹的 b 部分发生变化,a 和 c 部分保持不变。因此,GreyNoise 可以通过查看 JA4_ac 指纹(合并 a+c,丢弃 b)来跟踪该行为者。

有关 JA4+ 方法列表及其描述,请参见 当前方法及实现细节

如何解读 JA4+ 指纹,请参见 技术细节

许可证

JA4: TLS 客户端指纹识别开源、BSD 3-Clause 许可证,与 JA3 相同。FoxIO 没有专利声明,也不打算为 JA4 TLS 客户端指纹识别申请专利。这使得当前使用 JA3 的任何公司或工具可以立即升级到 JA4,无需延迟。

JA4S、JA4L、JA4LS、JA4H、JA4X、JA4SSH、JA4T、JA4TS、JA4TScan 以及未来所有新增方法(统称为 JA4+) 根据 FoxIO 许可证 1.1 授权。该许可证对大多数使用场景是允许的,包括学术和内部业务用途,但不允许用于商业化。例如,如果公司希望在内部使用 JA4+ 来帮助保护自身安全,这是允许的。例如,如果供应商希望将 JA4+ 指纹识别作为其产品的一部分进行销售,则需要向我们申请 OEM 许可证。

所有 JA4+ 方法均已申请专利。
JA4+ 是 FoxIO 的商标。

JA4+ 可以并且正在被集成到开源工具中,详情请参见 许可证常见问题

这种许可方式使我们能够以开放且立即可用的方式向世界提供 JA4+,同时也为我们提供了持续支持、研究新方法以及开发 JA4+ 数据库的资金来源。我们希望每个人都能使用 JA4+,并愿意与供应商和开源项目合作,共同实现这一目标。

问答

问:为什么你们要对密码套件进行排序?顺序难道不重要吗?
答:顺序确实重要,但在我们的研究中发现,应用程序和库更倾向于选择唯一的密码套件列表,而不是唯一的排序。这同时也降低了“密码套件截断”技术的有效性,该技术通过随机化密码套件顺序来规避 JA3 检测。

问:为什么你们要对扩展进行排序?
答:2023 年初,Google 更新了 Chromium 浏览器,使其随机化扩展顺序。与密码套件截断类似,这是一种规避 JA3 检测并“使 TLS 生态系统对变化更具鲁棒性”的策略。Google 担心服务器实现者会假设 Chrome 指纹永不改变,并据此构建逻辑,从而导致 Google 更新 Chrome 时出现问题。

所以我想明确一点:JA4 指纹会随着应用程序 TLS 库的更新而变化,大约每年一次。不要以为在应用程序更新的环境中指纹会保持不变。无论如何,对扩展进行排序可以解决这个问题,而加入签名算法则保持了唯一性。

问:TLS 1.3 是否使得 TLS 客户端指纹识别更加困难?
答:不会,它使得指纹识别更加容易!自 TLS 1.3 以来,客户端拥有更大的一组扩展,尽管 TLS 1.3 只支持少数几个密码套件,但浏览器和应用程序仍然支持更多。

JA4+ 创建者

John Althouse,感谢以下人员的反馈:

Josh Atkins
Jeff Atkinson
Joshua Alexander
W.
Joe Martin
Ben Higgins
Andrew Morris
Chris Ueland
Ben Schofield
Matthias Vallentin
Valeriy Vorotyntsev
Timothy Noel
Gary Lipsky

Michael Barbine

以及来自 GreyNoise、Hunt、Google、ExtraHop、F5、Driftnet 等公司的工程师。

联系 John Althouse:[email protected],用于许可和问题咨询。

JA4 和 JA4+ 是 FoxIO, Inc. 的商标。
版权所有 © 2025, FoxIO

分类