
JA4+ est une suite de normes de fingerprinting réseau
JA4+ est une suite de méthodes d'empreintes réseau par FoxIO qui sont faciles à utiliser et à partager. Ces méthodes sont à la fois lisibles par l'humain et la machine pour faciliter une chasse aux menaces et une analyse plus efficaces. Les cas d'utilisation de ces empreintes incluent la recherche d'acteurs malveillants, la détection de logiciels malveillants, la prévention du détournement de session, l'automatisation de la conformité, le suivi de localisation, la détection DDoS, le regroupement d'acteurs malveillants, la détection de shells inversés, et bien d'autres.
Pour une explication rapide de JA4+ et pour l'utiliser comme référence lors de l'analyse, voir :
JA4+ Cheat Sheet
Pour des détails approfondis, veuillez lire nos blogs sur le fonctionnement de JA4+, pourquoi cela fonctionne, et des exemples de ce qui peut être détecté/empêché avec :
JA4+ Network Fingerprinting (JA4/S/H/L/X/SSH)
JA4T: TCP Fingerprinting (JA4T/TS/TScan)
Investigating Surfshark and NordVPN with JA4T (JA4T)
Si vous aimez JA4+, envisagez d'acheter un t-shirt ou un sweat à capuche :
JA4+ Shirts, Hoodies, and Stickers
Le nom complet ou le nom court peuvent être utilisés indifféremment. D'autres méthodes JA4+ sont en préparation...
Pour comprendre comment lire les empreintes JA4+, voir Détails techniques
Ce dépôt inclut JA4+ dans
avec d'autres à annoncer...
Pour plus d'exemples, voir ja4plus-mapping.csv
Pour une base de données complète, voir ja4db.com
Les binaires JA4 sont construits à partir de l'implémentation Rust de la suite. Pour garantir une fonctionnalité complète, tshark (version 4.0.6 ou ultérieure) est requis. Téléchargez les derniers binaires JA4 depuis la page des Versions. Les versions de l'implémentation Rust suivent le Semantic Versioning et sont marquées comme vX.Y.Z, contrairement aux versions du plugin Wireshark.
Les actifs de version sont nommés selon le composant et la plateforme :
ja4-vX.Y.Z-<architecture>-<platform>.tar.gz (p. ex., ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz)ja4-python-vX.Y.Z.tar.gz (contient tout le répertoire python/)ja4.so.linux, ja4.so.macos, ja4.dll (attaché à une version nommée comme wireshark-vX.Y.Z)Choisissez le fichier approprié pour votre système et votre composant.
Installez-le via votre gestionnaire de paquets (le nom du paquet tshark ou wireshark-cli dépend de la distribution). Par exemple, sur Ubuntu :
sudo apt install tshark
tshark).tshark à votre PATH :
sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
tshark.exe).tshark.exe (généralement dans C:\Program Files\Wireshark\tshark.exe).tshark.exe à votre PATH système :
Une fois que tshark et les binaires JA4+ sont disponibles, exécutez JA4+ avec la commande suivante :
./ja4 [options] [pcap]
ja4 [options] [pcap]
Pour plus de détails sur l'exécution de JA4+ et ses configurations avancées, reportez-vous au README de l'implémentation Rust, qui fournit des informations sur ses fonctionnalités, ses scénarios d'utilisation et ses options de personnalisation.
La base de données officielle JA4+ des empreintes, des applications associées et de la logique de détection recommandée se trouve ici : ja4db.com
Cette base de données est en développement très actif. Attendez-vous à des ordres de grandeur supplémentaires de combinaisons d'empreintes et de données dans les prochains mois.
Un échantillon ja4plus-mapping.csv est également disponible pour une référence rapide.
JA4+ utilise GitHub Actions pour automatiser les versions de ses composants Rust, Python, Wireshark et Zeek. Les versions sont créées en poussant une balise avec un préfixe spécifique vers le dépôt, sauf pour Zeek, qui utilise une balise de version sémantique pure (semver). Les actifs de version sont nommés comme suit :
ja4-vX.Y.Z-<architecture>-<platform>.tar.gzja4-python-vX.Y.Z.tar.gzja4.so.linux, ja4.so.macos, ja4.dll (dans une version nommée comme wireshark-vX.Y.Z)Les workflows suivants sont disponibles :
Version Rust :
Poussez une balise commençant par rust-, p. ex. rust-v0.18.5, pour déclencher une version des binaires Rust. Le workflow construira et téléchargera automatiquement les actifs de version.
Version Python :
Poussez une balise commençant par python-, p. ex. python-v0.1.0, pour déclencher une version de l'implémentation Python. Le workflow créera une archive tar du répertoire python/ et la publiera comme actif de version.
Version du plugin Wireshark :
Poussez une balise commençant par wireshark-, p. ex. wireshark-v0.1.1, pour déclencher une version des binaires du plugin Wireshark pour toutes les plateformes supportées.
Version Zeek :
Poussez une balise qui est une version sémantique pure (p. ex. v1.2.3), sans préfixe, pour déclencher une version Zeek. Cela créera automatiquement une version sur packages.zeek.org.
Assurez-vous que vos modifications sont fusionnées dans la branche main.
Créez et poussez une balise pour le composant que vous souhaitez publier :
rust-v0.18.5, python-v0.1.0, wireshark-v0.1.1).v1.2.3).Exemple :
git tag v1.2.3
git push origin v1.2.3
(Pour Zeek)
Ou, pour Rust :
git tag rust-v0.18.5
git push origin rust-v0.18.5
Le workflow GitHub Actions correspondant s'exécutera et publiera automatiquement les actifs de version. Pour Zeek, la version apparaîtra sur packages.zeek.org.
JA4+ est un ensemble d'empreintes réseau simples mais puissantes pour plusieurs protocoles, à la fois lisibles par l'humain et la machine, facilitant une chasse aux menaces et une analyse de sécurité améliorées. Si vous n'êtes pas familier avec les empreintes réseau, je vous encourage à lire mes blogs publiant JA3 ici, JARM ici, et cet excellent blog de Fastly sur l'État des empreintes TLS qui décrit l'historique de ce qui précède ainsi que leurs problèmes. JA4+ apporte un support dédié, maintenant les méthodes à jour à mesure que l'industrie évolue.
Toutes les empreintes JA4+ ont un format a_b_c, délimitant les différentes sections qui composent l'empreinte. Cela permet la chasse et la détection en utilisant seulement ab ou ac ou c uniquement. Si l'on souhaite simplement analyser les cookies entrants dans son application, on regarderait uniquement JA4H_c. Ce nouveau format préservant la localité facilite une analyse plus approfondie et plus riche tout en restant simple, facile à utiliser et en permettant l'extensibilité.
Par exemple, GreyNoise est un écouteur internet qui identifie les scanners internet et implémente JA4+ dans son produit. Ils ont un acteur qui scrute internet avec un seul chiffrement TLS changeant constamment. Cela génère une quantité massive d'empreintes JA3 complètement différentes, mais avec JA4, seule la partie b de l'empreinte JA4 change, les parties a et c restent les mêmes. Ainsi, GreyNoise peut suivre l'acteur en regardant l'empreinte JA4_ac (en joignant a+c, en supprimant b).
Pour une liste des méthodes JA4+ et leurs descriptions, voir Méthodes actuelles et détails d'implémentation.
Pour comprendre comment lire les empreintes JA4+, voir Détails techniques.
JA4 : Empreinte client TLS est open-source, BSD 3-Clause, comme JA3. FoxIO n'a pas de revendications de brevet et n'envisage pas de demander une couverture de brevet pour JA4 TLS Client Fingerprinting. Cela permet à toute entreprise ou outil utilisant actuellement JA3 de passer immédiatement à JA4 sans délai.
JA4S, JA4L, JA4LS, JA4H, JA4X, JA4SSH, JA4T, JA4TS, JA4TScan et toutes les futures additions (collectivement appelées JA4+) sont sous licence FoxIO License 1.1. Cette licence est permissive pour la plupart des cas d'utilisation, y compris à des fins académiques et commerciales internes, mais n'est pas permissive pour la monétisation. Si, par exemple, une entreprise souhaite utiliser JA4+ en interne pour sécuriser sa propre société, cela est autorisé. Si, par exemple, un fournisseur souhaite vendre l'empreinte JA4+ dans le cadre de son offre de produits, il devrait nous demander une licence OEM.
Toutes les méthodes JA4+ sont en instance de brevet.
JA4+ est une marque déposée de FoxIO
JA4+ peut et est implémenté dans des outils open source, voir la FAQ sur la licence pour plus de détails.
Cette licence nous permet de fournir JA4+ au monde d'une manière ouverte et immédiatement utilisable, tout en nous offrant un moyen de financer le support continu, la recherche de nouvelles méthodes et le développement de la base de données JA4+. Nous voulons que tout le monde ait la capacité d'utiliser JA4+ et sommes heureux de travailler avec les fournisseurs et les projets open source pour y parvenir.
Q : Pourquoi triez-vous les chiffrements ? L'ordre n'a-t-il pas d'importance ?
R : Cela en a, mais dans nos recherches, nous avons constaté que les applications et les bibliothèques choisissent une liste de chiffrements unique plus souvent qu'un ordre unique. Cela réduit également l'efficacité du « cipher stunting », une tactique de randomisation de l'ordre des chiffrements pour empêcher la détection JA3.
Q : Pourquoi triez-vous les extensions ?
R : Plus tôt en 2023, Google a mis à jour Chromium pour randomiser l'ordre de ses extensions. Tout comme le cipher stunting, c'était une tactique pour empêcher la détection JA3 et « rendre l'écosystème TLS plus robuste aux changements ». Google craignait que les implémenteurs de serveurs supposent que l'empreinte Chrome ne changerait jamais et finissent par construire une logique autour d'elle, ce qui poserait des problèmes chaque fois que Google mettrait à jour Chrome.
Je veux donc clarifier ceci : les empreintes JA4 changeront au fur et à mesure que les bibliothèques TLS des applications sont mises à jour, environ une fois par an. Ne supposez pas que les empreintes resteront constantes dans un environnement où les applications sont mises à jour. Dans tous les cas, le tri des extensions contourne ce problème et l'ajout des algorithmes de signature préserve l'unicité.
Q : TLS 1.3 ne rend-il pas l'empreinte des clients TLS plus difficile ?
R : Non, cela la rend plus facile ! Depuis TLS 1.3, les clients ont un ensemble d'extensions beaucoup plus large et même si TLS 1.3 ne supporte que quelques chiffrements, les navigateurs et les applications en supportent encore beaucoup plus.
John Althouse, avec les retours de :
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
Et des ingénieurs travaillant chez GreyNoise, Hunt, Google, ExtraHop, F5, Driftnet et autres.
Contactez John Althouse à [email protected] pour les licences et les questions.
JA4 et JA4+ sont des marques déposées de FoxIO, Inc.
Copyright (c) 2025, FoxIO
| Nom complet | Nom court | Description |
|---|
| JA4 | JA4 | Empreinte client TLS |
| JA4Server | JA4S | Empreinte de réponse serveur / session TLS |
| JA4HTTP | JA4H | Empreinte client HTTP |
| JA4Latency | JA4L | Mesure de latence client vers serveur / distance lumineuse |
| JA4LatencyServer | JA4LS | Mesure de latence serveur vers client / distance lumineuse |
| JA4X509 | JA4X | Empreinte de certificat X509 TLS |
| JA4SSH | JA4SSH | Empreinte de trafic SSH |
| JA4TCP | JA4T | Empreinte client TCP |
| JA4TCPServer | JA4TS | Empreinte de réponse serveur TCP |
| JA4TCPScan | JA4TScan | Scanner actif d'empreintes TCP |
| JA4DHCP | JA4D | Empreinte DHCP |
| JA4DHCPv6 | JA4D6 | Empreinte DHCPv6 |
| Outil/Éditeur | Support JA4+ |
|---|
| Wireshark | JA4+ |
| Zeek | JA4+ |
| Arkime | JA4+ |
| Suricata | JA4+ (en développement) |
| GreyNoise | JA4+ |
| Hunt | JA4+ |
| Driftnet | JA4+ |
| GoLang | JA4X |
| nzyme | JA4+ (en développement) |
| Netresec's CapLoader | JA4+ (en développement) |
| Netresec's NetworkMiner | JA4+ (en développement) |
| NGINX | JA4+ |
| F5 BIG-IP | JA4+ |
| nfdump | JA4+ |
| ntop's ntopng | JA4+ |
| ntop's nDPI | JA4 |
| Team Cymru | JA4+ |
| NetQuest | JA4+ |
| Censys | JA4+ |
| Exploit.org's Netryx | JA4 et JA4H |
| Cloudflare | JA4 |
| Fastly | JA4+ (demandez-le) |
| MISP | JA4+ |
| OCSF | JA4+ |
| Vercel | JA4 |
| Seika | JA4+ |
| VirusTotal | JA4 |
| AWS Cloudfront | JA4 |
| ELLIO | JA4+ |
| Webscout | JA4+ |
| Rama | JA4 et JA4H |
| Vectra | JA4+ |
| AWS WAF | JA4 |
| Tacticly | JA4+ |
| Palo Alto Networks | JA4+ |
| ngrok | JA4 |
| Vertex Synapse | JA4 et JA4S |
| Google Cloud Armor | JA4 |
| Fortinet | JA4 |
| AppOmni | JA4+ |
| IntelliGenesis | JA4+ |
| HAProxy | JA4 et JA4H plugins par OXL |
| SentinelOne | JA4 |
| Akamai | JA4 |
| Alibaba Cloud | JA4 |
| Huawei Cloud | JA4 |
| Google Cloud LBs | JA4 |
| eSentire | JA4+ |
| Microsoft Azure Front Door CDN | JA4 |
| Synapse par Gen0Sec | JA4X |
| Zscaler | JA4 |
| ExtraHop | JA4+ |
| Validin | JA4+ |
| Auth0 | JA4 |
| Security Onion | JA4+ |
| Application | Empreintes JA4+ |
|---|
| Chrome | JA4=t13d1516h2_8daaf6152771_02713d6af862 (TCP) JA4=q13d0312h3_55b375c5d22e_06cda9e17597 (QUIC) JA4=t13d1517h2_8daaf6152771_b0da82dd1658 (clé pré-partagée) JA4=t13d1517h2_8daaf6152771_b1ff8ab2d16f (sans clé) |
| IcedID Malware Dropper | JA4H=ge11cn020000_9ed1ff1f7b03_cd8dafe26982 |
| IcedID Malware | JA4=t13d201100_2b729b4bf6f3_9e7b989ebec8 JA4S=t120300_c030_5e2616a54c73 |
| Sliver Malware | 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 (client) 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 |
| Reverse SSH Shell | JA4SSH=c76s76_c71s59_c0s70 |
| Windows 11 | JA4T=64240_2-1-3-1-1-4_1460_8 |
| Epson Printer | 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 Receiver | JA4D6=solct0010nn_8-1-3-6_24-23 |