
ja4 v1.0.0
JA4+ 是一套网络指纹识别标准
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 恤、连帽衫和贴纸
目录
当前方法及实现细节
| 全称 | 简称 | 描述 |
|---|---|---|
| JA4 | JA4 | TLS 客户端指纹识别 |
| JA4Server | JA4S | TLS 服务器响应/会话指纹识别 |
| JA4HTTP | JA4H | HTTP 客户端指纹识别 |
| JA4Latency | JA4L | 客户端到服务器延迟测量/光距离 |
| JA4LatencyServer | JA4LS | 服务器到客户端延迟测量/光距离 |
| JA4X509 | JA4X | X509 TLS 证书指纹识别 |
| JA4SSH | JA4SSH | SSH 流量指纹识别 |
| JA4TCP | JA4T | TCP 客户端指纹识别 |
| JA4TCPServer | JA4TS | TCP 服务器响应指纹识别 |
| JA4TCPScan | JA4TScan | 主动 TCP 指纹扫描器 |
| JA4DHCP | JA4D | DHCP 指纹识别 |
| JA4DHCPv6 | JA4D6 | DHCPv6 指纹识别 |
全称和简称可以互换使用。更多 JA4+ 方法正在开发中……
如何解读 JA4+ 指纹,请参见 技术细节
实现
本仓库包含 JA4+ 的以下实现:
支持 JA4+ 的工具
| 工具/供应商 | JA4+ 支持情况 |
|---|---|
| Wireshark | JA4+ |
| Zeek | JA4+ |
| Arkime | JA4+ |
| Suricata | JA4+ (开发中) |
| GreyNoise | JA4+ |
| Hunt | JA4+ |
| Driftnet | JA4+ |
| GoLang | JA4X |
| nzyme | JA4+ (开发中) |
| Netresec 的 CapLoader | JA4+ (开发中) |
| Netresec 的 NetworkMiner | JA4+ (开发中) |
| NGINX | JA4+ |
| F5 BIG-IP | JA4+ |
| nfdump | JA4+ |
| ntop 的 ntopng | JA4+ |
| ntop 的 nDPI | JA4 |
| Team Cymru | JA4+ |
| NetQuest | JA4+ |
| Censys | JA4+ |
| Exploit.org 的 Netryx | JA4 和 JA4H |
| Cloudflare | JA4 |
| Fastly | JA4+ (需要申请) |
| MISP | JA4+ |
| OCSF | JA4+ |
| Vercel | JA4 |
| Seika | JA4+ |
| VirusTotal | JA4 |
| AWS Cloudfront | JA4 |
| ELLIO | JA4+ |
| Webscout | JA4+ |
| Rama | JA4 和 JA4H |
| Vectra | JA4+ |
| AWS WAF | JA4 |
| Tacticly | JA4+ |
| Palo Alto Networks | JA4+ |
| ngrok | JA4 |
| Vertex Synapse | JA4 和 JA4S |
| Google Cloud Armor | JA4 |
| Fortinet | JA4 |
| AppOmni | JA4+ |
| IntelliGenesis | JA4+ |
| HAProxy | JA4 和 JA4H 插件,由 OXL 提供 |
| SentinelOne | JA4 |
| Akamai | JA4 |
| Alibaba Cloud | JA4 |
| Huawei Cloud | JA4 |
| Google Cloud LBs | JA4 |
| eSentire | JA4+ |
| Microsoft Azure Front Door CDN | JA4 |
| Synapse 由 Gen0Sec 提供 | JA4X |
| Zscaler | JA4 |
| ExtraHop | JA4+ |
| Validin | JA4+ |
| Auth0 | JA4 |
| Security Onion | JA4+ |
更多工具即将公布……
示例
| 应用程序 | JA4+ 指纹 |
|---|---|
| Chrome | JA4=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 Strike | JA4H=ge11cn060000_4e59edc1297a_4da5efaf0cbd JA4X=2166164053c1_2166164053c1_30d204a01551 |
| SoftEther VPN | JA4=t13d880900_fcb5b95cb75a_b0d3b4ac2a14 (客户端) JA4S=t130200_1302_a56c5b993250 JA4X=d55f458d5a6c_d55f458d5a6c_0fc8c171b6ae |
| Qakbot | JA4X=2bab15409345_af684594efb4_000000000000 |
| Pikabot | JA4X=1a59268f55e5_1a59268f55e5_795797892f9c |
| Darkgate | JA4H=po10nn060000_cdb958d032b0 |
| LummaC2 | JA4H=po11nn050000_d253db9d024b |
| Evilginx | JA4=t13d191000_9dc949149365_e7c285222651 |
| 反向 SSH Shell | JA4SSH=c76s76_c71s59_c0s70 |
| Windows 11 | JA4T=64240_2-1-3-1-1-4_1460_8 |
| Epson 打印机 | JA4TScan=28960_2-4-8-1-3_1460_3_1-4-8-16 |
| Windows 11 | JA4D=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
插件
二进制文件
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
使用包管理器安装(包名称 tshark 或 wireshark-cli 取决于发行版)。例如,在 Ubuntu 上:
sudo apt install tshark
macOS
- 下载并安装 Wireshark(包含
tshark)。 - 将
tshark添加到您的PATH:sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
Windows
- 下载并安装 Wireshark(包含
tshark.exe)。 - 找到
tshark.exe(通常位于C:\Program Files\Wireshark\tshark.exe)。 - 将包含
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 上创建一个发布。
如何创建发布
-
确保您的更改已合并到
main分支。 -
为您要发布的组件创建并推送标签:
- 对于 Rust、Python 或 Wireshark,使用相应的前缀(例如
rust-v0.18.5、python-v0.1.0、wireshark-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 - 对于 Rust、Python 或 Wireshark,使用相应的前缀(例如
-
相应的 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