FoxIO-LLC/ja4
GitHub: FoxIO-LLC/ja4
JA4+ 是 FoxIO 开发的多协议网络指纹识别标准套件,可对 TLS、HTTP、SSH、TCP、DHCP 等流量进行唯一标识,用于威胁狩猎和恶意软件检测。
Stars: 1848 | Forks: 169
# JA4+™ 网络指纹识别
JA4+ 是 [FoxIO](https://foxio.io/) 开发的一套网络指纹识别方法,易于使用和分享。这些方法同时具备人类可读性和机器可读性,以便更有效地进行威胁狩猎和分析。这些指纹的用例包括扫描威胁参与者、恶意软件检测、会话劫持防护、合规自动化、位置跟踪、DDoS 检测、威胁参与者分组、反向 shell 检测等等。
有关 JA4+ 的快速说明及分析参考,请参阅:
[JA4+ 速查表](https://x.com/4A4133/status/1887269972545839559)
如需深入了解,请阅读我们关于 JA4+ 工作原理、为何有效以及可检测/预防内容的博客:
[JA4+ 网络指纹识别](https://blog.foxio.io/ja4%2B-network-fingerprinting)(JA4/S/H/L/X/SSH)
[JA4T:TCP 指纹识别](https://blog.foxio.io/ja4t-tcp-fingerprinting)(JA4T/TS/TScan)
[使用 JA4T 调查 Surfshark 和 NordVPN](https://blog.foxio.io/investigating-surfshark-and-nordvpn-with-ja4t)(JA4T)
## 目录
- [当前方法和实现细节](#current-methods-and-implementation-details)
- [实现](#implementations)
- [支持 JA4+ 的工具](#tools-that-support-ja4)
- [示例](#examples)
- [插件](#plugins)
- [二进制文件](#binaries)
- [发布资源](#release-assets)
- [安装 tshark](#installing-tshark)
- [Linux](#linux)
- [macOS](#macos)
- [Windows](#windows)
- [运行 JA4+](#running-ja4)
- [数据库](#database)
- [发布流程](#release-process)
- [如何创建发布](#how-to-create-a-release)
- [JA4+ 详情](#ja4-details)
- [许可](#licensing)
- [问答](#qa)
- [JA4+ 创建者](#ja4-was-created-by)
## 当前方法和实现细节
| 全称 | 简称 | 描述 |
|---|---|---|
| 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](https://github.com/FoxIO-LLC/ja4tscan) | [JA4TScan](https://github.com/FoxIO-LLC/ja4tscan) | [主动 TCP 指纹扫描器](https://github.com/FoxIO-LLC/ja4tscan) |
| JA4DHCP | JA4D | DHCP 指纹识别 |
| JA4DHCPv6 | JA4D6 | DHCPv6 指纹识别 |
全称和简称可以互换使用。更多 JA4+ 方法正在开发中……
要了解如何读取 JA4+ 指纹,请参阅[技术细节](./technical_details/README.md)
## 实现
此仓库包含以下语言的 JA4+ 实现:
- [Python](./python/README.md)
- [Rust](./rust/README.md)
- [C,作为 Wireshark 插件](./wireshark/README.md)
- [Zeek](./zeek/README.md)
## 支持 JA4+ 的工具
| 工具/供应商 | JA4+ 支持 |
|-------------|----------|
| [Wireshark](https://github.com/FoxIO-LLC/ja4/tree/main/wireshark) | JA4+ |
| [Zeek](https://github.com/FoxIO-LLC/ja4/tree/main/zeek) | JA4+ |
| [Arkime](https://arkime.com/settings#ja4plus) | JA4+ |
| [Suricata](https://docs.suricata.io/en/latest/rules/ja-keywords.html#ja4-hash) | JA4+(正在开发中) |
| [GreyNoise](https://www.greynoise.io/) | JA4+ |
| [Hunt](https://hunt.io/) | JA4+ |
| [Driftnet](https://driftnet.io/) | JA4+ |
| [GoLang](https://github.com/driftnet-io/go-ja4x) | JA4X |
| [nzyme](https://www.nzyme.org/) | JA4+(正在开发中) |
| [Netresec 的 CapLoader](https://www.netresec.com/?page=Blog&month=2023-11&post=CapLoader-1-9-6-Released) | JA4+(正在开发中) |
| [Netresec 的 NetworkMiner](https://www.netresec.com/?page=NetworkMiner) | JA4+(正在开发中) |
| [NGINX](https://github.com/FoxIO-LLC/ja4-nginx-module) | JA4+ |
| [F5 BIG-IP](https://github.com/f5devcentral/f5-ja4) | JA4+ |
| [nfdump](https://github.com/phaag/nfdump) | JA4+ |
| [ntop 的 ntopng](https://github.com/ntop/ntopng) | JA4+ |
| [ntop 的 nDPI](https://github.com/ntop/nDPI) | JA4 |
| [Team Cymru](https://www.team-cymru.com/) | JA4+ |
| [NetQuest](https://netquestcorp.com/) | JA4+ |
| [Censys](https://censys.com/) | JA4+ |
| [Exploit.org 的 Netryx](https://github.com/OWASP/www-project-netryx) | JA4 和 JA4H |
| [Cloudflare](https://developers.cloudflare.com/bots/concepts/ja3-ja4-fingerprint/) | JA4 |
| [Fastly](https://www.fastly.com/documentation/reference/vcl/variables/client-connection/tls-client-ja4/) | JA4+(请咨询) |
| [MISP](https://www.misp-project.org/) | JA4+ |
| [OCSF](https://schema.ocsf.io/1.3.0-dev/objects/ja4_fingerprint?extensions=) | JA4+ |
| [Vercel](https://vercel.com/docs/security/tls-fingerprints) | JA4 |
| [Seika](https://seika.io/) | JA4+ |
| [VirusTotal](https://www.virustotal.com/) | JA4 |
| [AWS Cloudfront](https://aws.amazon.com/about-aws/whats-new/2024/10/amazon-cloudfront-ja4-fingerprinting/) | JA4 |
| [ELLIO](https://ellio.tech/) | JA4+ |
| [Webscout](https://webscout.io/) | JA4+ |
| [Rama](https://github.com/plabayo/rama) | JA4 和 JA4H |
| [Vectra](https://www.vectra.ai/) | JA4+ |
| [AWS WAF](https://aws.amazon.com/about-aws/whats-new/2025/03/aws-waf-ja4-fingerprinting-aggregation-ja3-ja4-fingerprints-rate-based-rules/) | JA4 |
| [Tacticly](https://tactic.ly/) | JA4+ |
| [Palo Alto Networks](https://www.paloaltonetworks.com/) | JA4+ |
| [ngrok](https://ngrok.com/docs/traffic-policy/variables/connection/#conntlsja4_fingerprint) | JA4 |
| [Vertex Synapse](https://vertex.link/) | JA4 和 JA4S |
| [Google Cloud Armor](https://cloud.google.com/armor/docs/rules-language-reference#allow_or_deny_traffic_based_on_a_known_ja4_fingerprint) | JA4 |
| [Fortinet](https://docs.fortinet.com/document/fortindr-cloud/25.2.c/user-guide/393114/event-fields#SSL) | JA4 |
| [AppOmni](https://appomni.com/) | JA4+ |
| [IntelliGenesis](https://intelligenesisllc.com/) | JA4+ |
| [HAProxy](https://www.haproxy.org/) | 由 [OXL](https://www.o-x-l.com/) 提供的 [JA4](https://github.com/O-X-L/haproxy-ja4-fingerprint) 和 [JA4H](https://github.com/O-X-L/haproxy-ja4h-fingerprint) 插件 |
| [SentinelOne](https://www.sentinelone.com/) | JA4 |
| [Akamai](https://techdocs.akamai.com/application-security/reference/get-ja4-fingerprint-settings) | JA4 |
| [阿里云](https://www.alibabacloud.com/help/en/anti-ddos/anti-ddos-pro-and-premium/user-guide/fields-included-in-full-logs) | JA4 |
| [华为云](https://support.huaweicloud.com/intl/en-us/usermanual-waf/waf_01_3157.html) | JA4 |
| [Google Cloud 负载均衡器](https://cloud.google.com/release-notes#July_28_2025) | JA4 |
| [eSentire](https://www.esentire.com/) | JA4+ |
| [Microsoft Azure Front Door CDN](https://learn.microsoft.com/en-us/azure/frontdoor/front-door-http-headers-protocol) | JA4 |
| [Gen0Sec](https://gen0sec.com) 的 [Synapse](https://github.com/gen0sec/synapse) | JA4X |
| [Zscaler](https://www.zscaler.com/blogs/product-insights/zscaler-endpoint-context-endpoint-cloud-visibility-and-enforcement-secops) | JA4 |
| [ExtraHop](https://www.extrahop.com/) | JA4+ |
| [Validin](https://www.validin.com/) | JA4+ |
| [Auth0](https://auth0.com/changelog#40upcFBPuFxKG7nacgSlQc) | JA4 |
| [Security Onion](https://blog.securityonion.net/2026/03/security-onion-300-now-available-with.html) | 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``` |
| 爱普生打印机 | ```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``` |
| 索尼接收器 | ```JA4D6=solct0010nn_8-1-3-6_24-23``` |
更多示例,请参阅 [ja4plus-mapping.csv](./ja4plus-mapping.csv)
要获取完整数据库,请参阅 [ja4db.com](https://ja4db.com/)
## 插件
[Wireshark](https://github.com/FoxIO-LLC/ja4/tree/main/wireshark)
[Zeek](https://github.com/FoxIO-LLC/ja4/tree/main/zeek)
[Arkime](https://arkime.com/settings#ja4plus)
## 二进制文件
JA4 二进制文件从该套件的 [Rust 实现](rust/README.md) 构建。为确保完整功能,需要 `tshark`(4.0.6 或更高版本)。从 [Releases](
-<平台>.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
1. [下载](https://www.wireshark.org/download.html)并安装 Wireshark(包含 `tshark`)。
2. 将 `tshark` 添加到您的 `PATH`:
sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
#### Windows
1. [下载](https://www.wireshark.org/download.html)并安装 Wireshark(包含 `tshark.exe`)。
2. 找到 `tshark.exe`(通常在 `C:\Program Files\Wireshark\tshark.exe`)。
3. 将包含 `tshark.exe` 的文件夹添加到您的系统 `PATH`:
- 打开**系统属性** > **环境变量** > **编辑路径**。
### 运行 JA4+
一旦 `tshark` 和 JA4+ 二进制文件可用,使用以下命令运行 JA4+:
- 在 Linux 和 macOS 上:
./ja4 [选项] [pcap]
- 在 Windows 上,打开**命令提示符**并运行:
ja4 [选项] [pcap]
有关运行 JA4+ 及其高级配置的更多详细信息,请参阅 [Rust 实现 README](rust/README.md),其中提供了有关其功能、使用场景和自定义选项的信息。
## 数据库
官方 JA4+ 指纹、关联应用程序和推荐检测逻辑的数据库位于:[ja4db.com](https://ja4db.com/)
此数据库正在非常积极地开发中。在接下来的几个月中,预计指纹组合和数据量将增加数个数量级。
还提供了一个示例 [ja4plus-mapping.csv](./ja4plus-mapping.csv) 供快速参考。
## 发布流程
JA4+ 使用 GitHub Actions 为其 Rust、Python、Wireshark 和 Zeek 组件自动化发布。发布是通过将带有特定前缀的标签推送到仓库来创建的,Zeek 除外,它使用纯语义版本(semver)标签。发布资源命名如下:
- **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/` 目录的压缩包并将其作为发布资源发布。
- **Wireshark 插件发布:**
推送以 `wireshark-` 开头的标签,例如 `wireshark-v0.1.1`,以触发所有支持平台的 Wireshark 插件二进制文件的发布。
- **Zeek 发布:**
推送纯语义版本标签(例如 `v1.2.3`),不带前缀,以触发 Zeek 发布。这将在 [packages.zeek.org](https://packages.zeek.org/) 上创建发布。
### 如何创建发布
1. 确保您的更改已合并到 `main` 分支。
2. 为您要发布的组件创建并推送标签:
- 对于 Rust、Python 或 Wireshark,使用适当的前缀(例如 `rust-v0.18.5`、`python-v0.1.0`、`wireshark-v0.1.1`)。
- 对于 Zeek,使用纯 semver 标签(例如 `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](https://packages.zeek.org/) 上。
## JA4+ 详情
JA4+ 是一套简单但功能强大的多协议网络指纹,同时具备人类可读性和机器可读性,可改善威胁狩猎和安全分析。如果您不熟悉网络指纹识别,我鼓励您阅读我发布 JA3 的博客[这里](https://medium.com/salesforce-engineering/tls-fingerprinting-with-ja3-and-ja3s-247362855967)、JARM [这里](https://medium.com/salesforce-engineering/easily-identify-malicious-servers-on-the-internet-with-jarm-e095edac525a),以及 Fastly 关于 [TLS 指纹识别现状](https://www.fastly.com/blog/the-state-of-tls-fingerprinting-whats-working-what-isnt-and-whats-next) 的优秀博客,其中概述了上述内容及其问题。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+ 方法及其描述的列表,请参阅[当前方法和实现细节](#current-methods-and-implementation-details)。
要了解如何读取 JA4+ 指纹,请参阅[技术细节](./technical_details/README.md)。
## 许可
*JA4:TLS 客户端指纹识别*是[开源的,BSD 3-Clause](./LICENSE-JA4),与 JA3 相同。FoxIO 没有专利声明,也不打算为 JA4 TLS 客户端指纹识别寻求专利保护。这允许任何目前使用 JA3 的公司或工具立即升级到 JA4 而无需延迟。
**JA4S、JA4L、JA4LS、JA4H、JA4X、JA4SSH、JA4T、JA4TS、JA4TScan 及所有未来新增内容(统称为 JA4+)**根据 [FoxIO License 1.1](JA4 和 JA4+ 是 FoxIO, Inc. 的商标
版权所有 (c) 2025, FoxIO标签:DDoS检测, JA4, JA4T, Metaprompt, SSH指纹, SSL/TLS指纹, TCP指纹, 会话劫持防护, 入侵防御系统, 反向shell检测, 可视化界面, 合规自动化, 威胁情报, 威胁猎捕, 安全运营, 开发者工具, 开源安全工具, 扫描框架, 网络安全, 网络指纹识别, 自定义DNS解析器, 逆向工具, 逆向工程平台, 通知系统, 隐私保护