
ja4 v1.0.0
JA4+ ist eine Suite von Netzwerk-Fingerprinting-Standards
JA4+™ Netzwerk-Fingerprinting
JA4+ ist eine Suite von Netzwerk-Fingerprinting-Methoden von FoxIO, die einfach zu verwenden und zu teilen sind. Diese Methoden sind sowohl für Menschen als auch für Maschinen lesbar, um eine effektivere Bedrohungssuche und -analyse zu ermöglichen. Die Anwendungsfälle für diese Fingerabdrücke umfassen die Erkennung von Bedrohungsakteuren, Malware-Erkennung, Verhinderung von Session-Hijacking, Compliance-Automatisierung, Standortverfolgung, DDoS-Erkennung, Gruppierung von Bedrohungsakteuren, Erkennung von Reverse Shells und viele weitere.
Für eine kurze Erklärung zu JA4+ und zur Verwendung als Referenz während der Analyse siehe:
JA4+ Cheat Sheet
Für detaillierte Informationen lesen Sie bitte unsere Blogs darüber, wie JA4+ funktioniert, warum es funktioniert und Beispiele, was damit erkannt/verhindert werden kann:
JA4+ Network Fingerprinting (JA4/S/H/L/X/SSH)
JA4T: TCP Fingerprinting (JA4T/TS/TScan)
Investigating Surfshark and NordVPN with JA4T (JA4T)
Wenn Sie JA4+ lieben, denken Sie über den Kauf eines T-Shirts oder Hoodies nach:
JA4+ Shirts, Hoodies, and Stickers
Inhaltsverzeichnis
- Aktuelle Methoden und Implementierungsdetails
- Implementierungen
- Tools, die JA4+ unterstützen
- Beispiele
- Plugins
- Binärdateien
- Datenbank
- Release-Prozess
- JA4+ Details
- Lizenzierung
- F&A
- JA4+ wurde erstellt von
Aktuelle Methoden und Implementierungsdetails
| Vollständiger Name | Kurzname | Beschreibung |
|---|---|---|
| JA4 | JA4 | TLS-Client-Fingerprinting |
| JA4Server | JA4S | TLS-Serverantwort-/Session-Fingerprinting |
| JA4HTTP | JA4H | HTTP-Client-Fingerprinting |
| JA4Latency | JA4L | Client-zu-Server-Latenzmessung / Lichtdistanz |
| JA4LatencyServer | JA4LS | Server-zu-Client-Latenzmessung / Lichtdistanz |
| JA4X509 | JA4X | X509-TLS-Zertifikat-Fingerprinting |
| JA4SSH | JA4SSH | SSH-Verkehrs-Fingerprinting |
| JA4TCP | JA4T | TCP-Client-Fingerprinting |
| JA4TCPServer | JA4TS | TCP-Serverantwort-Fingerprinting |
| JA4TCPScan | JA4TScan | Aktiver TCP-Fingerprint-Scanner |
| JA4DHCP | JA4D | DHCP-Fingerprinting |
| JA4DHCPv6 | JA4D6 | DHCPv6-Fingerprinting |
Der vollständige Name oder der Kurzname können austauschbar verwendet werden. Weitere JA4+-Methoden sind in Arbeit...
Um zu verstehen, wie JA4+-Fingerprints gelesen werden, siehe Technische Details
Implementierungen
Dieses Repository enthält JA4+ in
Tools, die JA4+ unterstützen
| Tool/Anbieter | JA4+-Unterstützung |
|---|---|
| Wireshark | JA4+ |
| Zeek | JA4+ |
| Arkime | JA4+ |
| Suricata | JA4+ (in Entwicklung) |
| GreyNoise | JA4+ |
| Hunt | JA4+ |
| Driftnet | JA4+ |
| GoLang | JA4X |
| nzyme | JA4+ (in Entwicklung) |
| Netresec's CapLoader | JA4+ (in Entwicklung) |
| Netresec's NetworkMiner | JA4+ (in Entwicklung) |
| 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 und JA4H |
| Cloudflare | JA4 |
| Fastly | JA4+ (danach fragen) |
| MISP | JA4+ |
| OCSF | JA4+ |
| Vercel | JA4 |
| Seika | JA4+ |
| VirusTotal | JA4 |
| AWS Cloudfront | JA4 |
| ELLIO | JA4+ |
| Webscout | JA4+ |
| Rama | JA4 und JA4H |
| Vectra | JA4+ |
| AWS WAF | JA4 |
| Tacticly | JA4+ |
| Palo Alto Networks | JA4+ |
| ngrok | JA4 |
| Vertex Synapse | JA4 und JA4S |
| Google Cloud Armor | JA4 |
| Fortinet | JA4 |
| AppOmni | JA4+ |
| IntelliGenesis | JA4+ |
| HAProxy | JA4 und JA4H Plugins von OXL |
| SentinelOne | JA4 |
| Akamai | JA4 |
| Alibaba Cloud | JA4 |
| Huawei Cloud | JA4 |
| Google Cloud LBs | JA4 |
| eSentire | JA4+ |
| Microsoft Azure Front Door CDN | JA4 |
| Synapse von Gen0Sec | JA4X |
| Zscaler | JA4 |
| ExtraHop | JA4+ |
| Validin | JA4+ |
| Auth0 | JA4 |
| Security Onion | JA4+ |
Weitere werden noch bekannt gegeben...
Beispiele
| Anwendung | JA4+-Fingerprints |
|---|---|
| Chrome | JA4=t13d1516h2_8daaf6152771_02713d6af862 (TCP) JA4=q13d0312h3_55b375c5d22e_06cda9e17597 (QUIC) JA4=t13d1517h2_8daaf6152771_b0da82dd1658 (Pre-Shared Key) JA4=t13d1517h2_8daaf6152771_b1ff8ab2d16f (Kein Key) |
| 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 Drucker | 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 |
Für weitere Beispiele siehe ja4plus-mapping.csv
Für eine vollständige Datenbank siehe ja4db.com
Plugins
Binärdateien
JA4-Binärdateien werden aus der Rust-Implementierung der Suite erstellt. Um die volle Funktionalität zu gewährleisten, ist tshark (Version 4.0.6 oder neuer) erforderlich. Laden Sie die neuesten JA4-Binärdateien von der Releases-Seite herunter. Die Release-Versionen der Rust-Implementierung folgen Semantic Versioning und werden als vX.Y.Z gekennzeichnet, im Gegensatz zu Wireshark-Plugin-Releases.
Release-Assets
Release-Assets werden nach Komponente und Plattform benannt:
- Rust:
ja4-vX.Y.Z-<architecture>-<platform>.tar.gz(z.B.ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz)
- Python:
ja4-python-vX.Y.Z.tar.gz(enthält das vollständige Verzeichnispython/)
- Wireshark:
ja4.so.linux,ja4.so.macos,ja4.dll(angehängt an ein Release mit Namen wiewireshark-vX.Y.Z)
Wählen Sie die für Ihr System und Ihre Komponente passende Datei aus.
Installieren von tshark
Linux
Installieren Sie es mit Ihrem Paketmanager (der Name des Pakets tshark oder wireshark-cli hängt von der Distribution ab). Zum Beispiel unter Ubuntu:
sudo apt install tshark
macOS
- Laden Sie Wireshark herunter und installieren Sie es (enthält
tshark). - Fügen Sie
tsharkzu IhremPATHhinzu:sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
Windows
- Laden Sie Wireshark herunter und installieren Sie es (enthält
tshark.exe). - Suchen Sie
tshark.exe(normalerweise inC:\Program Files\Wireshark\tshark.exe). - Fügen Sie den Ordner, der
tshark.exeenthält, zu Ihrem System-PATHhinzu:- Öffnen Sie Systemeigenschaften > Umgebungsvariablen > Pfad bearbeiten.
Ausführen von JA4+
Sobald tshark und die JA4+-Binärdateien verfügbar sind, führen Sie JA4+ mit dem folgenden Befehl aus:
- Unter Linux und macOS:
./ja4 [optionen] [pcap] - Unter Windows öffnen Sie die Eingabeaufforderung und führen Sie aus:
ja4 [optionen] [pcap]
Weitere Details zum Ausführen von JA4+ und seinen erweiterten Konfigurationen finden Sie in der Rust-Implementierungs-README, die Informationen zu den Funktionen, Nutzungsszenarien und Anpassungsoptionen enthält.
Datenbank
Die offizielle JA4+-Datenbank mit Fingerprints, zugehörigen Anwendungen und empfohlener Erkennungslogik finden Sie hier: ja4db.com
Diese Datenbank befindet sich in sehr aktiver Entwicklung. Erwarten Sie in den nächsten Monaten um Größenordnungen mehr Fingerprint-Kombinationen und Daten.
Ein Beispiel ja4plus-mapping.csv ist ebenfalls zur schnellen Referenz verfügbar.
Release-Prozess
JA4+ verwendet GitHub Actions, um Releases für seine Rust-, Python-, Wireshark- und Zeek-Komponenten zu automatisieren. Releases werden erstellt, indem ein Tag mit einem bestimmten Präfix an das Repository gepusht wird, mit Ausnahme von Zeek, das ein reines Semantic-Versioning-Tag (semver) verwendet. Release-Assets werden wie folgt benannt:
- Rust:
ja4-vX.Y.Z-<architecture>-<platform>.tar.gz - Python:
ja4-python-vX.Y.Z.tar.gz - Wireshark:
ja4.so.linux,ja4.so.macos,ja4.dll(in einem Release mit Namen wiewireshark-vX.Y.Z)
Die folgenden Workflows sind verfügbar:
-
Rust-Release:
Pushen Sie einen Tag, der mitrust-beginnt, z.B.rust-v0.18.5, um ein Release der Rust-Binärdateien auszulösen. Der Workflow erstellt und lädt die Release-Assets automatisch hoch. -
Python-Release:
Pushen Sie einen Tag, der mitpython-beginnt, z.B.python-v0.1.0, um ein Release der Python-Implementierung auszulösen. Der Workflow erstellt ein Tarball des Verzeichnissespython/und veröffentlicht es als Release-Asset. -
Wireshark-Plugin-Release:
Pushen Sie einen Tag, der mitwireshark-beginnt, z.B.wireshark-v0.1.1, um ein Release der Wireshark-Plugin-Binärdateien für alle unterstützten Plattformen auszulösen. -
Zeek-Release:
Pushen Sie einen Tag, der eine reine semantische Version ist (z.B.v1.2.3), ohne Präfix, um ein Zeek-Release auszulösen. Dies erstellt automatisch ein Release auf packages.zeek.org.
So erstellen Sie ein Release
-
Stellen Sie sicher, dass Ihre Änderungen in den
main-Branch gemergt wurden. -
Erstellen und pushen Sie einen Tag für die Komponente, die Sie veröffentlichen möchten:
- Für Rust, Python oder Wireshark verwenden Sie das entsprechende Präfix (z.B.
rust-v0.18.5,python-v0.1.0,wireshark-v0.1.1). - Für Zeek verwenden Sie ein reines Semver-Tag (z.B.
v1.2.3).
Beispiel:
git tag v1.2.3 git push origin v1.2.3(Für Zeek)
Oder für Rust:
git tag rust-v0.18.5 git push origin rust-v0.18.5 - Für Rust, Python oder Wireshark verwenden Sie das entsprechende Präfix (z.B.
-
Der entsprechende GitHub Actions-Workflow wird ausgeführt und veröffentlicht die Release-Assets automatisch. Für Zeek erscheint das Release auf packages.zeek.org.
JA4+ Details
JA4+ ist eine Reihe einfacher, aber leistungsstarker Netzwerk-Fingerprints für mehrere Protokolle, die sowohl für Menschen als auch für Maschinen lesbar sind und eine verbesserte Bedrohungssuche und Sicherheitsanalyse ermöglichen. Wenn Sie mit Netzwerk-Fingerprinting nicht vertraut sind, empfehle ich Ihnen, meine Blogs zur Veröffentlichung von JA3 hier, JARM hier und diesen hervorragenden Blog von Fastly über den Stand des TLS-Fingerprintings zu lesen, der die Geschichte der zuvor Genannten zusammen mit ihren Problemen skizziert. JA4+ bietet dedizierte Unterstützung und hält die Methoden auf dem neuesten Stand, wenn sich die Branche ändert.
Alle JA4+-Fingerprints haben ein a_b_c-Format, das die verschiedenen Abschnitte des Fingerprints abgrenzt. Dies ermöglicht die Jagd und Erkennung unter Verwendung von nur ab oder ac oder nur c. Wenn man nur die eingehenden Cookies in seiner App analysieren möchte, würde man nur JA4H_c betrachten. Dieses neue ortserhaltende Format ermöglicht tiefere und reichhaltigere Analysen, bleibt dabei einfach, benutzerfreundlich und erweiterbar.
Zum Beispiel ist GreyNoise ein Internet-Lauscher, der Internetscanner identifiziert und JA4+ in sein Produkt implementiert. Sie haben einen Akteur, der das Internet mit einer sich ständig ändernden einzelnen TLS-Chiffre scannt. Dies erzeugt eine massive Anzahl völlig unterschiedlicher JA3-Fingerprints, aber bei JA4 ändert sich nur der b-Teil des JA4-Fingerprints, die Teile a und c bleiben gleich. Daher kann GreyNoise den Akteur verfolgen, indem es den JA4_ac-Fingerprint betrachtet (a+c verbunden, b weggelassen).
Eine Liste der JA4+-Methoden und ihrer Beschreibungen finden Sie unter Aktuelle Methoden und Implementierungsdetails.
Um zu verstehen, wie JA4+-Fingerprints gelesen werden, siehe Technische Details.
Lizenzierung
JA4: TLS Client Fingerprinting ist Open-Source, BSD 3-Clause, genau wie JA3. FoxIO hat keine Patentansprüche und plant nicht, Patentschutz für JA4 TLS Client Fingerprinting zu beantragen. Dies ermöglicht jedem Unternehmen oder Tool, das derzeit JA3 verwendet, sofort auf JA4 aufzurüsten, ohne Verzögerung.
JA4S, JA4L, JA4LS, JA4H, JA4X, JA4SSH, JA4T, JA4TS, JA4TScan und alle zukünftigen Ergänzungen (zusammen als JA4+ bezeichnet) sind unter der FoxIO License 1.1 lizenziert. Diese Lizenz ist für die meisten Anwendungsfälle großzügig, einschließlich akademischer und interner Geschäftszwecke, jedoch nicht für die Monetarisierung. Wenn ein Unternehmen JA4+ beispielsweise intern nutzen möchte, um sein eigenes Unternehmen zu schützen, ist dies erlaubt. Wenn ein Anbieter JA4+-Fingerprinting als Teil seines Produktangebots verkaufen möchte, müsste er eine OEM-Lizenz von uns anfordern.
Alle JA4+-Methoden sind patentrechtlich angemeldet.
JA4+ ist eine Marke von FoxIO
JA4+ kann und wird in Open-Source-Tools implementiert, siehe Lizenz-FAQ für Details.
Diese Lizenzierung ermöglicht es uns, JA4+ der Welt auf eine offene und sofort nutzbare Weise zur Verfügung zu stellen, bietet uns aber auch eine Möglichkeit, die fortlaufende Unterstützung, die Erforschung neuer Methoden und die Entwicklung der JA4+-Datenbank zu finanzieren. Wir möchten jedem die Möglichkeit geben, JA4+ zu nutzen, und arbeiten gerne mit Anbietern und Open-Source-Projekten zusammen, um dies zu ermöglichen.
F&A
F: Warum sortieren Sie die Chiffren? Spielt die Reihenfolge keine Rolle?
A: Sie spielt eine Rolle, aber in unserer Forschung haben wir festgestellt, dass Anwendungen und Bibliotheken eher eine einzigartige Chiffrenliste als eine einzigartige Reihenfolge wählen. Dies verringert auch die Wirksamkeit von "Cipher Stunting", einer Taktik, bei der die Chiffrenreihenfolge randomisiert wird, um die JA3-Erkennung zu verhindern.
F: Warum sortieren Sie die Erweiterungen?
A: Anfang 2023 hat Google Chromium-Browser aktualisiert, um die Reihenfolge ihrer Erweiterungen zu randomisieren. Ähnlich wie beim Cipher Stunting war dies eine Taktik, um die JA3-Erkennung zu verhindern und "das TLS-Ökosystem robuster gegenüber Änderungen zu machen". Google befürchtete, dass Serverimplementierer annehmen würden, dass sich der Chrome-Fingerprint niemals ändert, und darauf aufbauend Logik entwickeln würden, was zu Problemen führen würde, wann immer Google Chrome aktualisiert.
Ich möchte daher klarstellen: JA4-Fingerprints werden sich ändern, wenn Anwendungs-TLS-Bibliotheken aktualisiert werden, etwa einmal im Jahr. Gehen Sie nicht davon aus, dass Fingerprints in einer Umgebung, in der Anwendungen aktualisiert werden, konstant bleiben. In jedem Fall umgeht das Sortieren der Erweiterungen dieses Problem, und das Hinzufügen von Signaturalgorithmen bewahrt die Einzigartigkeit.
F: Erschwert TLS 1.3 das Fingerprinting von TLS-Clients nicht?
A: Nein, es erleichtert es! Seit TLS 1.3 haben Clients einen viel größeren Satz an Erweiterungen, und obwohl TLS 1.3 nur wenige Chiffren unterstützt, unterstützen Browser und Anwendungen immer noch viele weitere.
JA4+ wurde erstellt von
John Althouse, mit Feedback von:
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
Und Ingenieuren, die bei GreyNoise, Hunt, Google, ExtraHop, F5, Driftnet und anderen arbeiten.
Kontaktieren Sie John Althouse unter [email protected] für Lizenzierung und Fragen.
JA4 und JA4+ sind Marken von FoxIO, Inc.
Copyright (c) 2025, FoxIO