
ja4 v1.0.1
JA4+ è una suite di standard di fingerprinting di rete
Fingerprinting di rete JA4+™
JA4+ è una suite di metodi di fingerprinting di rete di FoxIO che è facile da usare e facile da condividere. Questi metodi sono sia leggibili dall'uomo che dalla macchina per facilitare una più efficace caccia alle minacce e analisi. I casi d'uso per queste impronte digitali includono la scansione per attori delle minacce, rilevamento malware, prevenzione del dirottamento di sessione, automazione della conformità, tracciamento della posizione, rilevamento DDoS, raggruppamento di attori delle minacce, rilevamento di reverse shell e molti altri.
Per una spiegazione rapida su JA4+ e da usare come riferimento durante l'analisi vedi:
JA4+ Cheat Sheet
Per dettagli approfonditi, ti preghiamo di leggere i nostri blog su come funziona JA4+, perché funziona, ed esempi di cosa può essere rilevato/prevenuto con esso:
JA4+ Network Fingerprinting (JA4/S/H/L/X/SSH)
JA4T: TCP Fingerprinting (JA4T/TS/TScan)
Investigating Surfshark and NordVPN with JA4T (JA4T)
JA4D and JA4D6: DHCP Fingerprinting (JA4D/6)
Se ami JA4+, considera di acquistare una t-shirt o una felpa:
JA4+ Shirts, Hoodies, and Stickers
Sommario
- Metodi attuali e dettagli di implementazione
- Implementazioni
- Strumenti che supportano JA4+
- Esempi
- Plugin
- Binari
- Database
- Processo di rilascio
- Dettagli JA4+
- Licenze
- Domande e risposte
- JA4+ è stato creato da
Metodi attuali e dettagli di implementazione
| Nome completo | Nome breve | Descrizione |
|---|---|---|
| JA4 | JA4 | Fingerprinting client TLS |
| JA4Server | JA4S | Fingerprinting risposta server TLS / sessione |
| JA4HTTP | JA4H | Fingerprinting client HTTP |
| JA4Latency | JA4L | Misurazione latenza client-server / distanza luce |
| JA4LatencyServer | JA4LS | Misurazione latenza server-client / distanza luce |
| JA4X509 | JA4X | Fingerprinting certificato TLS X509 |
| JA4SSH | JA4SSH | Fingerprinting traffico SSH |
| JA4TCP | JA4T | Fingerprinting client TCP |
| JA4TCPServer | JA4TS | Fingerprinting risposta server TCP |
| JA4TCPScan | JA4TScan | Scanner attivo di fingerprint TCP |
| JA4DHCP | JA4D | Fingerprinting DHCP |
| JA4DHCPv6 | JA4D6 | Fingerprinting DHCPv6 |
| JA4NTP | JA4N | Fingerprinting NTP |
| JA4Scan-TLS | JA4Scan-TLS | Scanner attivo di fingerprint server TLS |
| JA4Scan-QUIC | JA4Scan-QUIC | Scanner attivo di fingerprint server QUIC |
Il nome completo o il nome breve possono essere usati in modo intercambiabile. Ulteriori metodi JA4+ sono in lavorazione...
Per capire come leggere le impronte digitali JA4+, vedi Dettagli tecnici
Implementazioni
Questo repository include JA4+ in
Strumenti che supportano JA4+
| Strumento/Fornitore | Supporto JA4+ |
|---|---|
| Wireshark | JA4+ |
| Zeek | JA4+ |
| Arkime | JA4+ (il nostro strumento open source JA4+ consigliato) |
| Suricata | JA4+ (in sviluppo) |
| GreyNoise | JA4+ |
| Hunt | JA4+ |
| Driftnet | JA4+ |
| GoLang (1) | JA4X |
| GoLang (2) | JA4 |
| nzyme | JA4+ (in sviluppo) |
| Netresec's CapLoader | JA4+ (in sviluppo) |
| Netresec's NetworkMiner | JA4+ (in sviluppo) |
| 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 e JA4H |
| Cloudflare | JA4 |
| Fastly | JA4+ (richiedilo) |
| MISP | JA4+ |
| OCSF | JA4+ |
| Vercel | JA4 |
| Seika | JA4+ |
| VirusTotal | JA4 |
| AWS Cloudfront | JA4 |
| ELLIO | JA4+ |
| Webscout | JA4+ |
| Rama | JA4 e JA4H |
| Vectra | JA4+ |
| AWS WAF | JA4 |
| Tacticly | JA4+ |
| Palo Alto Networks | JA4+ |
| ngrok | JA4 |
| Vertex Synapse | JA4 e JA4S |
| Google Cloud Armor | JA4 |
| Fortinet | JA4 |
| AppOmni | JA4+ |
| IntelliGenesis | JA4+ |
| HAProxy | JA4 e JA4H plugin di OXL |
| SentinelOne | JA4 |
| Akamai | JA4 |
| Alibaba Cloud | JA4 |
| Huawei Cloud | JA4 |
| Google Cloud LBs | JA4 |
| eSentire | JA4+ |
| Microsoft Azure Front Door CDN | JA4 |
| Synapse di Gen0Sec | JA4X |
| Zscaler | JA4 |
| ExtraHop | JA4+ |
| Validin | JA4+ |
| Auth0 | JA4 |
| Security Onion | JA4+ |
| bunny.net | JA4 |
| ENEA | JA4+ |
| F5 Distributed Cloud Services | JA4+ |
con altri in arrivo...
Esempi
| Applicazione | Impronte digitali JA4+ |
|---|---|
| Chrome | JA4=t13d1517h2_8daaf6152771_cb7bf5808d99 (TCP) JA4=q13d0312h3_55b375c5d22e_178839b6cec1 (QUIC) |
| Dropper malware IcedID | JA4H=ge11cn020000_9ed1ff1f7b03_cd8dafe26982 |
| Malware IcedID | JA4=t13d201100_2b729b4bf6f3_9e7b989ebec8 JA4S=t120300_c030_5e2616a54c73 |
| Malware 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 (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 |
| Stampante 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 |
| Ricevitore Sony | JA4D6=solct0010nn_8-1-3-6_24-23 |
Per più esempi, vedi ja4plus-mapping.csv
Per un database completo, vedi ja4db.com
Plugin
Binari
I binari JA4 sono compilati dall'implementazione Rust della suite. Per garantire la piena funzionalità, è richiesto tshark (versione 4.0.6 o successiva). Scarica gli ultimi binari JA4 dalla pagina Releases. Le versioni di rilascio per l'implementazione Rust seguono il Versionamento Semantico e sono contrassegnate come vX.Y.Z, a differenza dei rilasci del plugin Wireshark.
Asset di rilascio
Gli asset di rilascio sono denominati in base al componente e alla piattaforma:
- Rust:
ja4-vX.Y.Z-<architettura>-<piattaforma>.tar.gz(es.,ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz)
- Python:
ja4-python-vX.Y.Z.tar.gz(contiene l'intera directorypython/)
- Wireshark:
ja4.so.linux,ja4.so.macos,ja4.dll(allegati a un rilascio denominato comewireshark-vX.Y.Z)
Scegli il file appropriato per il tuo sistema e componente.
Installazione di tshark
Linux
Installalo usando il tuo gestore di pacchetti (il nome del pacchetto tshark o wireshark-cli dipende dalla distribuzione). Ad esempio, su Ubuntu:```sh
sudo apt install tshark
#### macOS
1. [Scarica](https://www.wireshark.org/download.html) e installa Wireshark (include `tshark`).
2. Aggiungi `tshark` al tuo `PATH`: ```sh
sudo ln -s /Applications/Wireshark.app/Contents/MacOS/tshark /usr/local/bin/tshark
Windows
- Scarica e installa Wireshark (include
tshark.exe). - Individua
tshark.exe(di solito inC:\Program Files\Wireshark\tshark.exe). - Aggiungi la cartella che contiene
tshark.exealPATHdi sistema:- Apri Proprietà del sistema > Variabili d'ambiente > Modifica Path.
Esecuzione di JA4+
Una volta disponibili tshark e i binari JA4+, esegui JA4+ usando il seguente comando:
- Su Linux e macOS: ```sh
./ja4 [options] [pcap]
- Su Windows, apri il Prompt dei comandi ed esegui: ```cmd
ja4 [options] [pcap]
Per maggiori dettagli sull'esecuzione di JA4+ e sulle sue configurazioni avanzate, fare riferimento al README dell'implementazione Rust, che fornisce informazioni sulle sue funzionalità, scenari d'uso e opzioni di personalizzazione.
Database
Il database ufficiale JA4+ delle impronte digitali, delle applicazioni associate e della logica di rilevamento consigliata è disponibile qui: ja4db.com
Questo database è in fase di sviluppo molto attivo. Nei prossimi mesi ci si aspettano ordini di grandezza in più di combinazioni di impronte digitali e dati.
È disponibile anche un esempio di ja4plus-mapping.csv per una rapida consultazione.
Processo di rilascio
JA4+ utilizza GitHub Actions per automatizzare i rilasci dei suoi componenti Rust, Python, Wireshark e Zeek. I rilasci vengono creati inviando un tag con un prefisso specifico al repository, ad eccezione di Zeek, che utilizza un tag di versione semantica (semver) pura. Gli asset di rilascio sono denominati come segue:
- Rust:
ja4-vX.Y.Z-<architettura>-<piattaforma>.tar.gz - Python:
ja4-python-vX.Y.Z.tar.gz - Wireshark:
ja4.so.linux,ja4.so.macos,ja4.dll(in un rilascio denominato comewireshark-vX.Y.Z)
Sono disponibili i seguenti workflow:
-
Rilascio Rust:
Inviare un tag che inizia conrust-, ad es.,rust-v0.18.5, per attivare un rilascio dei binari Rust. Il workflow compilerà e caricherà automaticamente gli asset di rilascio. -
Rilascio Python:
Inviare un tag che inizia conpython-, ad es.,python-v0.1.0, per attivare un rilascio dell'implementazione Python. Il workflow creerà un archivio della directorypython/e lo pubblicherà come asset di rilascio. -
Rilascio Plugin Wireshark:
Inviare un tag che inizia conwireshark-, ad es.,wireshark-v0.1.1, per attivare un rilascio dei binari del plugin Wireshark per tutte le piattaforme supportate. -
Rilascio Zeek:
Inviare un tag che sia una versione semantica pura (ad es.,v1.2.3), senza prefisso, per attivare un rilascio Zeek. Questo creerà automaticamente un rilascio su packages.zeek.org.
Come creare un rilascio
-
Assicurarsi che le modifiche siano state unite nel ramo
main. -
Creare e inviare un tag per il componente che si desidera rilasciare:
- Per Rust, Python o Wireshark, utilizzare il prefisso appropriato (ad es.,
rust-v0.18.5,python-v0.1.0,wireshark-v0.1.1). - Per Zeek, utilizzare un tag semver puro (ad es.,
v1.2.3).
Esempio: ```sh git tag v1.2.3 git push origin v1.2.3
- Per Rust, Python o Wireshark, utilizzare il prefisso appropriato (ad es.,
(Per Zeek)
Oppure, per Rust: ```sh git tag rust-v0.18.5 git push origin rust-v0.18.5
3. Il workflow GitHub Actions corrispondente verrà eseguito e pubblicherà automaticamente gli asset della release. Per Zeek, la release apparirà su [packages.zeek.org](https://packages.zeek.org/).
## Dettagli su JA4+
JA4+ è un insieme di fingerprint di rete semplici ma potenti per più protocolli, sia leggibili dall'uomo che dalla macchina, che facilita un miglior threat-hunting e un'analisi di sicurezza più efficace. Se non hai familiarità con il fingerprinting di rete, ti incoraggio a leggere i miei blog sulla pubblicazione di JA3 [qui](https://medium.com/salesforce-engineering/tls-fingerprinting-with-ja3-and-ja3s-247362855967), JARM [qui](https://medium.com/salesforce-engineering/easily-identify-malicious-servers-on-the-internet-with-jarm-e095edac525a), e questo eccellente blog di Fastly sullo [Stato del Fingerprinting TLS](https://www.fastly.com/blog/the-state-of-tls-fingerprinting-whats-working-what-isnt-and-whats-next) che delinea la storia dei suddetti insieme ai loro problemi. JA4+ offre un supporto dedicato, mantenendo i metodi aggiornati man mano che il settore evolve.
Tutti i fingerprint JA4+ hanno un formato a_b_c, che delimita le diverse sezioni che compongono il fingerprint. Ciò consente di effettuare ricerche e rilevamenti utilizzando solo ab o ac o solo c. Se si volesse fare un'analisi solo sui cookie in ingresso nella propria applicazione, si guarderebbe solo a JA4H_c. Questo nuovo formato che preserva la località facilita un'analisi più profonda e ricca, rimanendo al contempo semplice, facile da usare e consentendo l'estensibilità.
Ad esempio, GreyNoise è un ascoltatore internet che identifica gli scanner internet e sta implementando JA4+ nel proprio prodotto. Hanno un attore che scansiona internet con un singolo cipher TLS in continua evoluzione. Questo genera una quantità enorme di fingerprint JA3 completamente diversi, ma con JA4, solo la parte b del fingerprint JA4 cambia, mentre le parti a e c rimangono le stesse. Pertanto, GreyNoise può tracciare l'attore guardando il fingerprint JA4_ac (unendo a+c, eliminando b).
Per un elenco dei metodi JA4+ e delle loro descrizioni, vedi [Metodi attuali e dettagli di implementazione](#current-methods-and-implementation-details).
Per capire come leggere i fingerprint JA4+, vedi [Dettagli tecnici](https://github.com/foxio-llc/ja4/blob/main/technical_details/README.md).
## Licenza
*JA4: TLS Client Fingerprinting* è [open-source, BSD 3-Clause](https://github.com/foxio-llc/ja4/blob/main/LICENSE-JA4), come JA3. FoxIO non ha rivendicazioni di brevetto e non prevede di perseguire una copertura brevettuale per JA4 TLS Client Fingerprinting. Ciò consente a qualsiasi azienda o strumento che attualmente utilizza JA3 di passare immediatamente a JA4 senza ritardi.
**JA4S, JA4L, JA4LS, JA4L-Delta, JA4H, JA4X, JA4SSH, JA4T, JA4TS, JA4TScan, JA4D, JA4D6, JA4Scan-TLS, JA4Scan-QUIC, JA4N e tutte le future aggiunte (collettivamente denominate JA4+)** sono in attesa di brevetto e concessi in licenza sotto la [FoxIO License 1.1](https://github.com/foxio-llc/ja4/blob/main/LICENSE). Questa licenza è permissiva per la maggior parte dei casi d'uso, inclusi scopi accademici e interni aziendali, ma non è permissiva per la monetizzazione. Se, ad esempio, un'azienda volesse utilizzare JA4+ internamente per contribuire a proteggere la propria azienda, ciò è consentito. Se, ad esempio, un fornitore volesse vendere il fingerprinting JA4+ come parte della propria offerta di prodotti, dovrebbe richiederci una licenza OEM.
JA4+ è un marchio di FoxIO
JA4+ può essere ed è implementato in strumenti open source, vedi le [FAQ sulla licenza](https://github.com/foxio-llc/ja4/blob/main/License%20FAQ.md) per i dettagli.
Questa licenza ci consente di fornire JA4+ al mondo in modo aperto e immediatamente utilizzabile, ma ci fornisce anche un modo per finanziare il supporto continuo, la ricerca su nuovi metodi e lo sviluppo del Database JA4+. Vogliamo che tutti abbiano la possibilità di utilizzare JA4+ e siamo felici di collaborare con fornitori e progetti open source per contribuire a realizzare questo obiettivo.
## Domande e risposte
D: Perché ordinate i cipher? L'ordine non ha importanza?
R: Sì, ma nella nostra ricerca abbiamo scoperto che le applicazioni e le librerie scelgono un elenco di cipher unico più che un ordinamento unico. Questo riduce anche l'efficacia del "cipher stunting", una tattica di randomizzazione dell'ordine dei cipher per prevenire il rilevamento JA3.
D: Perché ordinate le estensioni?
R: All'inizio del 2023, Google ha [aggiornato i browser Chromium](https://chromestatus.com/feature/5124606246518784) per randomizzare l'ordine delle loro estensioni. Proprio come il cipher stunting, questa era una tattica per prevenire il rilevamento JA3 e "rendere l'ecosistema TLS più robusto ai cambiamenti". Google temeva che gli implementatori di server assumessero che il fingerprint di Chrome non sarebbe mai cambiato e finissero per costruire logica attorno ad esso, il che avrebbe causato problemi ogni volta che Google avesse aggiornato Chrome.
Quindi voglio essere chiaro: i fingerprint JA4 cambieranno man mano che le librerie TLS delle applicazioni vengono aggiornate, circa una volta all'anno. Non dare per scontato che i fingerprint rimangano costanti in un ambiente in cui le applicazioni vengono aggiornate. In ogni caso, l'ordinamento delle estensioni aggira questo problema e l'aggiunta degli Algorithmi di Firma preserva l'unicità.
D: TLS 1.3 non rende più difficile il fingerprinting dei client TLS?
R: No, lo rende più facile! Dal TLS 1.3, i client hanno un insieme molto più ampio di estensioni e anche se TLS 1.3 supporta solo pochi cipher, i browser e le applicazioni ne supportano ancora molti di più.
## JA4+ è stato creato da
[John Althouse](https://www.linkedin.com/in/johnalthouse/), con feedback di:
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
E ingegneri che lavorano presso GreyNoise, Hunt, Google, ExtraHop, F5, Driftnet e altri.
Contatta John Althouse all'indirizzo [email protected] per licenze e domande.
<sub>JA4 e JA4+ sono marchi di FoxIO, Inc.
Copyright (c) 2026, FoxIO</sup>