MikroTik Dojo ยท prova di esistenza (OpenTimestamps) Versione: 2 Registrato il: 2026-11-10T13:06:43+00:00 Verifica: ots verify mikrotikdojo-2563-v2.txt.ots (o su https://opentimestamps.org) Indirizzo: https://mikrotikdojo.com/knowledge-base/ja3-tls-fingerprint/ ID: 2563 (post) Titolo: JA3 e JA4: le impronte TLS che smascherano scanner e botnet Pubblicato: 2026-10-21T06:25:45Z Immagini (sha256 del file): 15e76f6134f7636b0aa5ed24978f407e802940fea8d667a9d63697ff8b91a624 https://mikrotikdojo.com/wp-content/uploads/2026/10/2563-1.jpg --- Contenuto (HTML originale, in italiano) ---
In breve. JA3 è un’impronta del “saluto” TLS (il ClientHello) che identifica lo strumento che apre la connessione cifrata — la sua libreria, non l’utente. Stesso attrezzo, stessa impronta: così riconosci che centinaia di IP diversi che bussano alla tua WAN sono in realtà un solo scanner o una sola botnet che ruota gli indirizzi per non farsi bloccare.
È un’impronta digitale (un hash) calcolata sul ClientHello, cioè il primo messaggio che un client manda quando apre una connessione TLS (https, o un tunnel cifrato). Il metodo nasce in Salesforce nel 2017: si prendono alcuni campi del ClientHello, si mettono in fila in un ordine preciso, si concatenano e se ne fa un MD5. Il risultato è una stringa di 32 caratteri esadecimali, sempre uguale per lo stesso software.
JA3 = MD5( SSLVersion,Ciphers,Extensions,EllipticCurves,ECPointFormats )
esempio -> a0e9f5d64349fb13191bc781f81f42e1
Perché quei campi non li sceglie l’utente: li decide la libreria TLS del programma. Nel ClientHello il client dichiara, in chiaro, come sa parlare TLS: la versione, la lista dei cipher suite che offre, le estensioni, le curve ellittiche supportate e i formati dei loro punti. Quali elementi, e soprattutto in che ordine, dipende da chi ha scritto il client: un browser Chrome, curl, la libreria TLS di un malware, uno scanner come zgrab hanno ciascuno la propria sequenza. Cambia lo strumento, cambia l’impronta; resta lo stesso strumento, resta la stessa impronta.
Questo è il punto che rende JA3 prezioso in difesa. L’impronta dipende dal software, non dall’indirizzo IP: un attaccante può ruotare centinaia di IP, cambiare paese, passare da un proxy all’altro, ma se usa sempre lo stesso attrezzo la JA3 non cambia. Così, quando analizzi il traffico in arrivo, puoi smettere di contare “quanti IP mi stanno tastando” e iniziare a contare quanti strumenti distinti.
È lo stesso ragionamento che alimenta la mappa Il Dojo sotto assedio: la porta ti dice cosa cercano, l’operatore di rete (AS) da quale rete arrivano, e la JA3 con quale attrezzo — e se è sempre lo stesso dietro IP che cambiano.
No: dice soltanto “stesso stack”. Tutti i Chrome della stessa versione su Windows hanno la medesima JA3, quindi un’impronta da sola non è una prova di ostilità. Il valore sta nel contesto: una JA3 che sulla tua WAN prova la porta WinBox 143 volte in un’ora è sospetta; la stessa impronta usata da un browser che apre il tuo sito, no. L’impronta raggruppa; sei tu, con cosa chiede e quante volte, a dare il giudizio.
Con uno sniffer: RouterOS non calcola la JA3 da solo, ma puoi specchiare il traffico in arrivo (port mirror o pacchetti TZSP dal /tool sniffer) verso una macchina con Wireshark, tshark o un IDS come Suricata/Zeek, che quel campo lo espongono già pronto.
Quei pacchetti TZSP puoi anche riceverli e decodificarli da codice con dojo.tzsp, la libreria del Dojo che legge lo sniffer remoto di RouterOS (Python e PHP) e ti consegna il frame, pronto da passare a tshark o Suricata.
# Estrai l'impronta JA3 e il nome richiesto (SNI) da una cattura
tshark -r cattura.pcap -Y "tls.handshake.type==1" -T fields \
-e ip.src -e tls.handshake.ja3 -e tls.handshake.extensions_server_name
⚠️ Attenzione: la JA3 si legge solo sul ClientHello di una sessione TLS. Il traffico in chiaro (HTTP senza cifratura) non ne ha: lì a identificare lo strumento è semmai lo User-Agent. E ricorda che l’impronta è un indizio di raggruppamento, non un IP: non pubblicare mai gli IP di terzi quando racconti un’analisi, lavora sulle impronte e sugli aggregati.
Attenzione alla differenza JA3/JA4 negli strumenti: tshark e Wireshark hanno il campo JA3 nativo, ma non la JA4 — per quella serve il plugin JA4+ di FoxIO. Suricata invece, dalla versione 7.0.3 in poi (se compilata con il supporto JA4, la voce HAVE_JA4 nel --build-info), scrive sia la JA3 sia la JA4 nei suoi log eve.json; lo stesso vale per Zeek con il pacchetto JA4+.
JA3S è la stessa idea applicata al ServerHello: impronta la risposta del server, utile per riconoscere il software lato server (compresi certi pannelli di comando-e-controllo). JA4 (2023) è l’evoluzione pensata per il TLS moderno: gestisce meglio i valori casuali GREASE e il TLS 1.3, è più stabile e leggibile. JA3 resta il più diffuso e supportato dagli strumenti, ma se parti oggi da zero vale la pena guardare anche JA4.
⚠️ Attenzione: la JA3 non è infallibile. I valori GREASE (byte casuali che i client moderni inseriscono nel ClientHello) possono introdurre rumore, il TLS 1.3 con ClientHello cifrato (ECH) riduce ciò che si vede, e client diversi possono condividere la stessa impronta. Usala per raggruppare e indagare, mai come unico criterio per bloccare.
Prima una precisazione utile: lo sniffer (Wireshark, Suricata) ti dà l’impronta, non il nome dello strumento. Suricata, per esempio, scrive l’hash JA3/JA4 nei log ma non lo etichetta: il nome lo aggiunge un database (o una regola che riconosce quell’impronta). Il passo “impronta → nome” lo fai tu con una ricerca.
Questi database esistono, con un limite da tenere a mente: catalogano solo impronte già note (malware schedati o applicazioni censite), non sono una rubrica universale “impronta → programma”, e una stessa JA3 può appartenere anche a software legittimo. Servono ad arricchire un’analisi, non come verdetto automatico.
curl -s https://sslbl.abuse.ch/blacklist/ja3_fingerprints.csv | grep -i <impronta>https://ja4db.com/api/download/) per incrociarlo in locale: è la controparte viva del vecchio feed JA3 di SSLBL.Qualche JA3 “famosa” presa davvero dal database SSLBL, per dare l’idea di cosa voglia dire riconoscerla sul proprio traffico — se ti arriva questa impronta, dietro c’è:
b386946a5a44d1ddcc843bc75336dfce -> Dridex (trojan bancario)
1aa7bf8b97e540ca5edd75f7b8384bfa -> TrickBot (trojan bancario / botnet)
35c0a31c481927f022a3b530255ac080 -> Tofsee (botnet da spam)
c201b92f8b483fa388be174d6689f534 -> Gozi (trojan bancario)
3cda52da4ade09f1f781ad2e82dcfa20 -> QakBot (trojan bancario / loader)
fc54e0d16d9764783542f0146a98b300 -> AsyncRAT (accesso remoto)
E qualche JA4 reale dal database FoxIO: qui l’impronta è anche leggibile (t13d… vuol dire TLS 1.3 su TCP), e trovi affiancati software legittimo e strumenti offensivi — se ti arriva questa:
t13d1517h2_8daaf6152771_cb7bf5808d99 -> Chrome (browser legittimo)
t13d190900_9dc949149365_97f8aa674fd9 -> Sliver (framework C2 offensivo)
t13d201100_2b729b4bf6f3_9e7b989ebec8 -> IcedID (loader / malware)
t13d191000_9dc949149365_e7c285222651 -> Evilginx (proxy di phishing)
ge11cn060000_4e59edc1297a_4da5efaf0cbd -> Cobalt Strike (variante JA4H, lato HTTP)
⚠️ Attenzione: trovare una di queste tra le impronte che bussano alla tua WAN non è una condanna automatica — le JA3 datate possono combaciare anche con altro — ma è un segnale forte: la stessa impronta, ripetuta e abbinata a porte e tentativi sospetti, dice che è proprio quel tipo di attrezzo a lavorarti.
No. Dipendono dal software, non dall’indirizzo: è proprio questo che ti fa vedere la stessa botnet dietro IP e nazioni diverse.
JA4 è più robusto (gestisce i valori GREASE e il TLS 1.3, ed è leggibile) ed è una famiglia (JA4S lato server, JA4H per l’HTTP…). JA3 resta però il più diffuso e supportato dagli strumenti. Se parti oggi da zero guarda JA4; nella pratica spesso li tieni entrambi.
Meglio di no da sola: molti client legittimi condividono la stessa JA3/JA4. Usala per raggruppare le sorgenti e come indizio insieme a porta, frequenza e cosa viene richiesto.
Nativamente no, nessuna delle due. Le ottieni specchiando il traffico verso Wireshark/tshark (solo JA3) o verso Suricata/Zeek (JA3 e JA4). Ricorda: tshark ha solo il campo JA3; per la JA4 serve Suricata 7.0.3+ o il plugin FoxIO.
Lo User-Agent è una stringa che il client dichiara (e può falsificare a piacere) nelle richieste HTTP; JA3 e JA4 derivano da come il client parla TLS, molto più difficili da camuffare.