JA3 ha guadagnato una certa popolarità all'interno della comunità della sicurezza per segnalare facilmente strumenti noti o malware utilizzando una firma che può essere generata facilmente dai valori Transport Layer Security (TLS) utilizzati durante le comunicazioni che impiegano tale crittografia. Sebbene le firme JA3 siano facili da usare e sembrino un modo semplice con cui i difensori possono rilevare le comunicazioni dannose, possono essere altrettanto facilmente manomesse per eludere il rilevamento e confondersi con il normale traffico TLS/SSL.
In questo post, inizieremo a scoprire alcuni dei metodi implementati in natura da server e agenti di comando e controllo (C2) per eludere il rilevamento. La nostra attenzione si concentrerà sulle tecniche di elusione utilizzate da noti framework C2 che utilizzano diverse tecniche per eludere il rilevamento. Per quanto riguarda specificamente le firme JA3, gli sviluppatori di questi strumenti hanno compiuto alcuni sforzi per evitare il rilevamento. Inoltre, esistono prove evidenti che queste stesse tecniche di evasione vengono utilizzate attivamente dal malware per eludere il rilevamento.
Svelare JA3/S: un primo passo
Innanzitutto, riassumiamo brevemente cos'è JA3 e perché può essere utilizzato per rilevare il traffico dannoso. JA3 è un metodo di fingerprinting dell'handshake TLS pubblicato per la prima volta nel 2017 da John Althouse, Jeff Atkinson e Josh Atkins di Salesforce. Il traffico Internet che implementa TLS si trasmette reciprocamente dei valori nel tentativo di stabilire una connessione sicura. I seguenti valori sono utilizzati per formare un hash JA3 (SSLVersion, Cipher, SSLExtension, EllipticCurve, EllipticCurvePointFormat) e per l'hash JA3S(SSLVersion,Cipher,SSLExtension). Questi valori vengono trasmessi in chiaro prima della crittografia, in modo che il client e il server sappiano quale tipo di cifratura è possibile utilizzare. Sono la base di ciò che viene utilizzato per formare un hash JA3/S. Questi valori possono essere utilizzati per identificare alcuni tipi di traffico dannoso quando sono affidabili. Per una spiegazione più approfondita è possibile consultare il post originale di SalesForce.
Comprensione della randomizzazione JA3/S e del Cipher-Stunting
Come già accennato, parte della firma JA3/S deriva dal cifrario. L'elenco dei cifrari viene trasmesso durante la negoziazione del client/server. Un esempio di ciò è visibile nell'immagine della cattura di un pacchetto qui sotto.

Durante questo processo, il server sceglierà il più alto cifrario disponibile supportato da entrambe le estremità della connessione. Questo significa che per ogni connessione effettuata tra un endpoint e un server, la firma JA3/S dovrebbe essere la stessa e risultare nella stessa firma JA3/S. Tuttavia, utilizzando la randomizzazione JA3/S, il server sceglierà un cifrario casuale dall'elenco dei cifrari supportati. Utilizzando un cifrario diverso, l'hash JA3/S derivato da questi valori risulterà diverso.
Per eludere il rilevamento, gli autori malware dovranno manomettere i valori TLS utilizzati che sono alla base della firma JA3. In questo modo possono eludere il rilevamento. Un modo semplice per farlo è scegliere casualmente una suite di cifratura. Questa tecnica è nota come randomizzazione JA3/S.
Una tendenza in crescita: JA3/S nei quadri C2
Il team di ricerca di Akamai ha condiviso degli approfondimenti in merito. In sintesi, i risultati della ricerca mostrano che le impronte digitali TLS sono passate da 18.652 impronte distinte a livello globale nell'agosto 2018 a oltre 1,3 miliardi alla fine di febbraio 2019. Ciò suggerisce che, in seguito alla ricerca e all'interesse per il fingerprinting JA3/S da parte della comunità della sicurezza, gli autori malware e i controllori di bot hanno implementato tecniche per aggirare le firme TLS.
La randomizzazione JA3/S/Cipher-Stunting ha iniziato a insinuarsi anche nei framework C2 come Empire a partire dalla versione 3.0 master, secondo il changelog di Github. L'immagine sottostante mostra il codice sorgente di Empire GitHub, che evidenzia un esempio di come si possa ottenere la randomizzazione JA3.

Eludere il rilevamento: Più di un approccio
Come per tutte le nuove tecniche utilizzate dalla comunità della sicurezza per identificare le minacce, gli aggressori sono sempre stati pronti a cambiare tattica per aggirare le strategie di rilevamento. Sebbene abbiamo visto strumenti della squadra rossa utilizzare la randomizzazione JA3 per eludere il rilevamento, esistono altri metodi per fare lo stesso. Come dice l'adagio, "c'è più di un modo per scuoiare un gatto". Ad esempio, l'impersonificazione di JA3 può essere effettuata imitando i valori TLS dei browser più comuni o addirittura utilizzando il client HTTPS del sistema operativo sottostante per aggirare il rilevamento.
Conclusione: La sfida del rilevamento
È chiaro che con qualsiasi tecnica che possa essere utilizzata per catturare la "cattiveria" da parte dei professionisti della sicurezza, gli aggressori si adatteranno rapidamente per continuare a operare senza essere individuati. L'identificazione dei framework C2 con firme JA3 diventa difficile quando il framework implementa la randomizzazione JA3/S o un'altra tecnica. Gli strumenti e le tecniche di sicurezza utilizzati dai difensori devono essere molto flessibili e in grado di adattarsi rapidamente ai cambiamenti. In caso contrario, C2 continuerà a eludere il rilevamento e a operare sotto il radar dei professionisti della sicurezza informatica. Le firme JA3, anche senza manomissioni, sono un indicatore a bassa fedeltà di attività dannose e le tecniche descritte nel post le rendono ancora meno affidabili a causa della facilità con cui possono essere manipolate.
Per questo motivo, le firme JA3 possono essere utilizzate come indicatore supplementare di compromissione, ma non si dovrebbe fare molto affidamento su di esse a causa della bassa fedeltà e della facilità con cui possono essere manomesse. I rilevamenti basati sulle firme sono validi solo nella misura in cui ci si può fidare dei dati sottostanti e della loro manutenzione. Idealmente, il rilevamento di C2 deve utilizzare una strategia di rilevamento della rete multi-sfaccettata, agile e in grado di generalizzare. Naturalmente, questo approccio richiede un investimento molto più consistente, ma darà ottimi frutti nel lungo periodo.
Date un'occhiata al il mio secondo blog in cui esamino un metodo noto come profili C2 malleabili.