Tecniche di evasione C2: comprensione dei profili C2 malleabili

26 aprile 2021
Joshua St. Hilaire
Director of Security Research
Tecniche di evasione C2: comprensione dei profili C2 malleabili

Questo è il secondo articolo della nostra serie sulle tecniche di evasione dei comandi e controlli (C2), in cui parlo dei profili C2 malleabili. Dai un'occhiata al il mio primo blog in cui esamino un metodo noto come randomizzazione della firma JA3.

I profili C2 malleabili sono stati ampiamente adottati e utilizzati da Cobalt Strike, un popolare framework utilizzato dai pen-tester e dai gruppi APT (Advanced Persistent Threat). Vale la pena notare che, sebbene i profili Malleable siano familiari agli Cobalt Strike , il loro utilizzo ha iniziato a diffondersi anche ad altri framework C2. Al momento della stesura di questo articolo, i profili Malleable sono utilizzati anche in Empire C2 a partire dalla versione 3.4. Ciò che rende questo sviluppo ancora più interessante è che il team di Empire ha recentemente annunciato una partnership con Kali Linux, una popolare distribuzione di pen-testing, che aumenterà la diffusione dell'uso dei profili Malleable.

Profili malleabili per l'evasione

I profili malleabili per C2 consentono all'autore dell'attacco non solo di eludere il rilevamento in rete da parte degli strumenti di rilevamento basati sulla rete, ma anche dei prodotti endpoint . Il livello di "malleabilità" consente Cobalt Strike non solo di personalizzare completamente la forma e la tempistica dei beacon C2, ma anche di personalizzare le funzioni sul bersaglio, come l'iniezione di processi e i metodi di offuscamento in memoria. La sicurezza operativa è sempre una preoccupazione quando si eseguono agenti all'interno di un ambiente di destinazione. Pertanto, il monitoraggio della sicurezza della rete è sempre una considerazione da tenere presente quando si mantiene la furtività con il comando e il controllo. Supponiamo che quando gli aggressori installano agenti su macchine compromesse all'interno della vostra rete, il traffico generato da questi agenti quando si connettono al server C2 utilizzi gli stessi o simili user-agent, URI o altri artefatti che sono facili da segnalare. Il rischio che tali attività vengano rilevate sarebbe eccezionalmente elevato se fossero note in anticipo a causa del loro uso ripetuto. Pertanto, è necessario trasformare o modellare il traffico in modo tale che possa confondersi con il traffico "normale" previsto o semplicemente utilizzare nuovi valori ad ogni esecuzione. Entrambi gli approcci sarebbero utili per eludere il rilevamento. Un altro motivo per utilizzare profili malleabili è il desiderio di testare le minacce conosciute. Se riesco a configurare un agente e un server C2 in modo che appaiano esattamente malware alcuni malware rete o su un endpoint di destinazione endpoint quindi verificare se il mio stack di rilevamento di rete o il monitoraggio endpoint è in grado di segnalare l'attività.

È qui che entra in gioco la malleabilità. Vale la pena esaminare alcune delle opzioni fornite all'operatore per personalizzare C2. Inoltre, in sintesi, parleremo di come queste opzioni rendano difficile il rilevamento, in particolare con le strategie di rilevamento basate sulle firme. Separerò la sintesi delle funzionalità tra rete ed endpoint. Le opzioni presentate non devono in alcun modo essere considerate un elenco esaustivo.

Evasione attraverso la personalizzazione

Indipendentemente dal protocollo di rete, ad esempio HyperText Transfer Protocol (HTTP) o HTTPS, gli agenti comunicheranno con i server in un modo specifico. Se si utilizza HTTP, molte parti di una conversazione HTTP possono essere ispezionate dalle difese del livello di rete. Ad esempio, le stringhe all'interno di un'intestazione HTTP che sono sufficientemente uniche possono essere utilizzate dai difensori per rilevare le connessioni sulla rete. Elementi come user-agent univoci, stringhe di accettazione personalizzate e valori di percorso univoci sono tutti disponibili per l'ispezione. Le impostazioni possono essere utilizzate anche per modificare gli elementi dell'intestazione dal lato server.

Con i profili malleabili è possibile semplicemente rispecchiare i valori di programmi legittimi, come quelli presenti nell'intestazione HTTP, per far apparire la connessione identica a connessioni innocue, come ad esempio l'agente di aggiornamento di Microsoft Windows. La schermata sottostante mostra una ricostruzione Wireshark di una sessione HTTP utilizzando un profilo malleabileCobalt Strike Update.

Figura 1: Profilo modificabile di Cobalt Strike Update

Vale la pena sottolineare che sono disponibili trasformazioni dei dati per codificarli prima della trasmissione. Potrebbe non essere ovvio, ma l'Uniform Resource Identifier (URI) che segue la richiesta HTTP GET nella schermata sopra riportata viene codificato in base 64 prima della trasmissione e poi decodificato sul lato server. Di seguito è riportato un elenco delle trasformazioni dei dati disponibili in Cobalt Strike.

Tabella 1: Trasformazioni Cobalt Strike

Inoltre, è possibile combinare più trasformazioni. Ad esempio, base64 e mask possono essere sovrapposti per aumentare la sicurezza operativa (OPSEC).

Anche nei casi in cui viene utilizzato HTTPS, i valori possono comunque essere manipolati, come ad esempio i certificati SSL (Secure Sockets Layer). Il seguente certificato SSL è utilizzato dai profili di aggiornamento di Windows menzionati in precedenza:

Oltre al controllo preciso sul modo in cui le connessioni appaiono sul cavo, anche i valori di temporizzazione che controllano quando il client si connette al server C2 possono essere manipolati tramite profili malleabili. Valori come jitter e delay consentono agli aggressori di modificare l'intervallo di temporizzazione tra le connessioni C2.

Endpoint

La malleabilità non viene utilizzata solo quando l'agente invia dati attraverso la rete, ma anche per controllare le caratteristiche della memoria, il modo in cui si inserisce nei processi e le attività post-sfruttamento. Ciò è utile per eludere endpoint e la risposta endpoint (EDR) e il rilevamento antivirus. L'esempio riportato di seguito mostra alcune opzioni relative al comportamento dell'agente endpoint di destinazione endpoint possono essere impostate nei profili malleabili.

Figura 2: Esempio di opzioni malleabili endpoint nel profilo Cobalt Strike .

Nel blocco Stage è possibile controllare il modo in cui l'agente viene caricato nella memoria. È possibile specificare elementi quali nome, tempo di compilazione, autorizzazioni di memoria, offuscamento e tipo di caricatore. Spesso gli analisti che cercano codice dannoso caricato in un processo controllano prima i segmenti di memoria e si concentrano sui segmenti caricati con autorizzazione RWX nei segmenti di memoria sospetti.

Nelle opzioni di iniezione del processo è possibile modellare il contenuto iniettato. È possibile riempire i dati utilizzando le opzioni di trasformazione e impostare il metodo di allocazione, nonché controllare le autorizzazioni. Infine, è anche possibile controllare le attività post-sfruttamento scegliendo diversi nomi di pipe da utilizzare, utilizzare l'iniezione intelligente e specificare le posizioni di spawn. Ciò è ottimo per eludere e testare le soluzioni EDR. Per una panoramica più completa è possibile visitare la guida online di Cobalt Strikes.

Sfide per i difensori

Consentire una tale granularità con cui controllare le comunicazioni C2 e il comportamento di staging rende difficile la difesa e il rilevamento con le firme. Un altro punto da sottolineare è che, mentre Cobalt Strike consentito la malleabilità per un certo periodo di tempo, anche altri framework C2 popolari come Empire C2 stanno adottando profili malleabili. Questo, insieme al fatto che il loro utilizzo è in aumento nelle recenti intrusioni da parte di attori APT e ransomware, rende il compito dei difensori sempre più complesso.

Le tecnologie endpoint della rete e endpoint dovranno disporre di firme aggiornate rapidamente o utilizzare altri metodi investigativi per rilevare comandi e controlli che non si basano su modelli ripetuti nei dati o sequenze temporali corrispondenti all'attività di segnalazione.

Domande frequenti

Cosa sono i profili Malleable C2 e come vengono utilizzati in Cobalt Strike?
In che modo i profili Malleable C2 si stanno diffondendo in altri framework?
Perché i profili C2 malleabili sono vantaggiosi per gli aggressori?
Quali elementi specifici del traffico C2 possono essere personalizzati utilizzando i profili Malleable?
In che modo i profili malleabili migliorano la sicurezza operativa durante i test di penetrazione o gli attacchi?
Quali sfide presentano i profili malleabili ai difensori?
In che modo i profili malleabili influiscono endpoint ?
Quali sono alcune opzioni di personalizzazione specifiche disponibili per endpoint in Cobalt Strike?
In che modo l'uso dei profili malleabili complica il rilevamento delle attività di beaconing?
Perché è fondamentale che i centri operativi di sicurezza (SOC) dispongano di una solida piattaforma di rilevamento e risposta alle minacce quando hanno a che fare con profili malleabili?