Tecniche di evasione C2: comprensione della randomizzazione JA3/S e dello stunting dei cifrari

28 gennaio 2021
Joshua St. Hilaire
Director of Security Research
Tecniche di evasione C2: comprensione della randomizzazione JA3/S e dello stunting dei cifrari

JA3 sta guadagnando popolarità nella comunità della sicurezza per la sua capacità di segnalare facilmente strumenti o malware noti malware una firma che può essere generata facilmente dai valori Transport Layer Security (TLS) utilizzati durante la comunicazione che impiega tale crittografia. Sebbene le firme JA3 siano facili da usare e sembrino un modo semplice per i difensori di rilevare comunicazioni dannose, possono essere facilmente manomesse per eludere il rilevamento e confondersi con il normale traffico TLS/SSL.

In questo post inizieremo a scoprire alcuni dei metodi utilizzati dai server e dagli agenti di comando e controllo (C2) per eludere il rilevamento. Ci concentreremo sulle tecniche di elusione utilizzate dai noti framework C2 che impiegano 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, vi sono prove evidenti che queste stesse tecniche di elusione vengono attivamente utilizzate dal malware aggirare il rilevamento.

Svelare JA3/S: un manuale introduttivo

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 da John Althouse, Jeff Atkinson e Josh Atkins di Salesforce nel 2017. Il traffico Internet che implementa TLS trasmette valori reciproci nel tentativo di stabilire una connessione sicura. I seguenti valori vengono 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 quali tipi di cifrari di crittografia sono disponibili per l'uso. Questi sono alla base di ciò che viene utilizzato per formare un hash JA3/S. Questi valori possono essere utilizzati per identificare determinati tipi di traffico dannoso quando sono affidabili. Per una spiegazione più approfondita, è possibile consultare il post originale di SalesForce.

Comprendere la randomizzazione JA3/S e il cipher-stunting

Come accennato in precedenza, parte della firma JA3/S deriva dal codice cifrato. L'elenco dei codici cifrati viene trasmesso durante la negoziazione client/server hello. Un esempio di ciò è visibile nell'immagine di un pacchetto catturato riportata di seguito.

Figura 1: Elenco dei codici crittografici trasmessi durante il saluto del client TLS

Durante questo processo, il server sceglierà il codice di cifratura più elevato disponibile supportato da entrambe le estremità della connessione. Ciò significa che per ogni connessione stabilita tra un endpoint un server, la firma JA3/S dovrebbe essere la stessa e produrre lo stesso risultato. Tuttavia, utilizzando la randomizzazione JA3/S, il server sceglierà un codice di cifratura casuale dall'elenco dei codici supportati. Utilizzando un cifrario diverso, l'hash JA3/S derivato da questi valori risulterà diverso.

Per eludere il rilevamento, malware dovranno manomettere i valori TLS utilizzati, che costituiscono la base della firma JA3. In questo modo potranno aggirare con successo il rilevamento. Un modo semplice per farlo è scegliere in modo casuale una suite di cifratura. Questa tecnica è nota come randomizzazione JA3/S.

Una tendenza in crescita: JA3/S nei framework C2

Il team di ricerca di Akamai ha condiviso alcune informazioni su questo argomento. In sintesi, i risultati della loro ricerca mostrano che le impronte digitali TLS sono passate da 18.652 impronte digitali distinte a livello globale nell'agosto 2018 a oltre 1,3 miliardi alla fine di febbraio 2019. Ciò suggerisce che, a seguito della ricerca e dell'interesse per il fingerprinting JA3/S da parte della comunità della sicurezza, malware e i controllori di bot hanno implementato tecniche per aggirare le firme TLS.

La randomizzazione JA3/S/Cipher-Stunting ha iniziato a diffondersi 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 è possibile ottenere la randomizzazione JA3.

Figura 2: Randomizzazione della firma JA3 utilizzando una scelta casuale da un elenco di cifrari

Evitare il rilevamento: più di un approccio

Come per tutte le nuove tecniche utilizzate nella comunità della sicurezza per identificare le minacce, gli aggressori hanno sempre cambiato rapidamente tattica per eludere le strategie di rilevamento. Sebbene abbiamo visto strumenti red team utilizzare la randomizzazione JA3 per ostacolare il rilevamento, esistono altri metodi per ottenere lo stesso risultato. Come dice il proverbio, "ci sono molti modi per scuoiare un gatto". Ad esempio, l'impersonificazione JA3 può essere effettuata imitando i valori TLS dei browser comuni o anche utilizzando il client HTTPS del sistema operativo sottostante per eludere il rilevamento.

Conclusione: la sfida della rilevazione

È evidente che, qualunque sia la tecnica utilizzata dai professionisti della sicurezza per individuare le "minacce", gli aggressori si adatteranno rapidamente per continuare a operare senza essere rilevati. Identificare i framework C2 con le 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, il C2 continuerà a eludere il rilevamento e ad operare sotto il radar dei professionisti della sicurezza informatica. Le firme JA3, anche senza manomissione, sono un indicatore di bassa fedeltà delle attività dannose e le tecniche descritte nel post le rendono ancora meno affidabili a causa della facilità con cui possono essere manipolate.

Tenendo presente questo, le firme JA3 possono essere utilizzate come indicatori supplementari di compromissione, ma non dovrebbero essere considerate troppo affidabili a causa della loro scarsa fedeltà e della facilità con cui possono essere manomesse. L'efficacia dei rilevamenti basati sulle firme dipende dall'affidabilità dei dati su cui si basano e dalla qualità della loro manutenzione. Idealmente, il rilevamento di C2 dovrebbe utilizzare una strategia di rilevamento di rete multiforme, agile e in grado di generalizzare. Naturalmente, questo approccio richiede un investimento molto maggiore, ma a lungo termine darà risultati significativi.

Dai un'occhiata il mio secondo blog in cui esamino un metodo noto come profili C2 malleabili.

Domande frequenti

Che cos'è JA3 e in che modo aiuta a rilevare il traffico dannoso?
In che modo la randomizzazione JA3 aiuta malware il rilevamento?
Che cos'è JA3S e in cosa differisce da JA3?
Quali sono alcune tecniche comunemente utilizzate dai framework C2 per eludere il rilevamento?
Perché il fingerprinting JA3/S è considerato un indicatore poco affidabile di attività dannose?
Come si è evoluta l'adozione della randomizzazione JA3/S nei framework malware C2?
Quali sono i limiti dell'utilizzo delle firme JA3/S per il rilevamento delle minacce?
Quali strategie possono essere adottate per migliorare l'individuazione delle comunicazioni C2?
Perché è importante che gli strumenti di rilevamento siano agili e adattabili?
Qual è il ruolo di una piattaforma di rilevamento e risposta alle minacce in un Security Operations Center (SOC)?