Tecniche di evasione C2: Comprendere i profili C2 malleabili

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

Questa è la seconda puntata della nostra serie sulle tecniche di evasione del comando e del controllo (C2), in cui parlo dei profili C2 malleabili. Date un'occhiata al il mio primo blog in cui esamino un metodo noto come randomizzazione della firma JA3.

I profili malleabili C2 sono stati ampiamente adottati e utilizzati da Cobalt Strikeun framework popolare utilizzato da pen-tester e gruppi di Advanced Persistent Threat (APT). Vale la pena notare che mentre i profili malleabili sono familiari agli utenti di Cobalt Strike , l'adozione del loro uso ha iniziato a diffondersi anche in altri framework C2. A partire dalla versione 3.4, i profili malleabili sono utilizzati anche in Empire C2. 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 malleabili.

Profili malleabili per l'evasione

I profili malleabili per C2 consentono all'attore di eludere non solo il rilevamento sul filo degli strumenti di rilevamento basati sulla rete, ma anche i prodotti di sicurezza endpoint . Il livello di "malleabilità" consente agli operatori Cobalt Strike non solo di personalizzare completamente la forma e la tempistica dei segnali C2, ma anche di personalizzare le funzioni sull'obiettivo, 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 bersaglio. Pertanto, il monitoraggio della sicurezza della rete è sempre un aspetto da tenere in considerazione quando si vuole mantenere la segretezza del comando e del controllo. Supponiamo che quando gli aggressori installano agenti su macchine compromesse all'interno della rete, il traffico generato da questi agenti durante la connessione al server C2 utilizzi lo stesso o simili user-agent, URI o altri artefatti facili da segnalare. Il rischio di rilevare queste attività sarebbe eccezionalmente alto se fossero note in anticipo a causa dell'uso ripetuto. Per questo motivo è necessario trasformare o modellare il traffico in modo tale che possa confondersi con il "normale" traffico previsto o semplicemente utilizzare nuovi valori a ogni esecuzione. Entrambi gli approcci sarebbero utili per eludere il rilevamento. Un'altra motivazione per l'impiego di profili malleabili è il desiderio di effettuare test contro minacce conosciute. Se posso impostare un agente e un server C2 in modo che appaiano esattamente come un malware si presenta sul filo o su un endpoint di destinazione, posso vedere se il mio stack di rilevamento della rete o il monitoraggio della sicurezza endpoint sono in grado di segnalare l'attività.

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

Evasione attraverso la personalizzazione

Indipendentemente dal protocollo di rete, ad esempio HyperText Transfer Protocol (HTTP) o HTTPS, gli agenti comunicano 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 sul filo. Cose come agenti-utente unici, stringhe di accettazione personalizzate e valori di percorso unici sono tutte ispezionabili Le impostazioni possono essere utilizzate anche per modificare gli elementi dell'intestazione dal lato server.

Con i profili malleabili si può semplicemente rispecchiare i valori di un programma legittimo, come quelli dell'intestazione HTTP, per far apparire la connessione identica a connessioni benigne, come ad esempio l'agente di aggiornamento di Microsoft Windows. L'immagine seguente mostra la ricostruzione con Wireshark di una sessione HTTP che utilizza un profilo malleabileCobalt Strike Windows update.

Figura 1: Profilo malleabile di Cobalt Strike Windows Update

Vale la pena di sottolineare che le trasformazioni dei dati sono disponibili per codificare i dati prima della trasmissione. Forse non è evidente, ma l'Uniform Resource Identifier (URI) che segue la richiesta HTTP GET nella schermata precedente è codificato in base 64 prima della trasmissione e poi decodificato sul server. L'elenco seguente riporta le trasformazioni di dati disponibili in Cobalt Strike.

Tabella 1: Trasformazioni dei dati Cobalt Strike

Inoltre, è possibile combinare più trasformazioni. Ad esempio, base64 e maschera possono essere stratificate insieme per aggiungere OPSEC.

Anche nei casi in cui si utilizza HTTPS, i valori possono 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 sul modo in cui le connessioni appaiono sul filo, 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 tempo tra le connessioni C2.

Endpoint malleabile

La malleabilità non viene utilizzata solo quando l'agente invia dati in rete, ma anche quando controlla le caratteristiche in-memory, il modo in cui si inietta nei processi e le attività post-exploitation. Ciò è utile per eludere il rilevamento e la risposta endpoint (EDR) e il rilevamento antivirus. Un esempio qui sotto mostra alcune opzioni relative al comportamento dell'agente sull'endpoint di destinazione che possono essere impostate nei profili malleabili.

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

Nel blocco stage si può controllare il modo in cui l'agente viene caricato in memoria. È possibile specificare elementi quali il nome, l'ora di compilazione, i permessi di memoria, l'offuscamento e il tipo di caricatore. Spesso gli analisti alla ricerca di codice dannoso caricato in un processo controllano prima i segmenti di memoria e si concentrano sui segmenti caricati con l'autorizzazione RWX nei segmenti di memoria sospetti.

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

Sfide per i difensori

Permettere una tale granularità di controllo delle comunicazioni C2 e del comportamento di staging rende la difesa e il rilevamento con le firme un compito impegnativo. Un altro punto da sottolineare è che, mentre Cobalt Strike ha consentito la malleabilità per qualche tempo, anche altri framework C2 popolari come Empire C2 stanno adottando profili malleabili. Questo, unito al fatto che il loro uso è in aumento nelle recenti intrusioni da parte di attori APT e ransomware, rende il compito dei difensori sempre più complesso.

Le tecnologie di difesa delle reti e degli endpoint dovranno disporre di firme rapidamente aggiornate o utilizzare altri metodi di indagine per rilevare il comando e il controllo che non si basino su schemi ripetuti nei dati o addirittura su sequenze temporali che corrispondano all'attività di beaconing.

DOMANDE FREQUENTI

Che cosa sono i profili C2 malleabili e come vengono utilizzati nel Cobalt Strike?

I profili C2Command and Control) malleabili di Cobalt Strike consentono agli operatori di personalizzare il comportamento e l'aspetto del loro traffico C2. Questa personalizzazione aiuta a eludere il rilevamento da parte degli strumenti di sicurezza basati sulla rete e sugli endpoint . Gli operatori possono modificare le intestazioni HTTP, gli user agent, gli URI e persino la tempistica dei beacon C2 per far sì che il traffico si confonda con il normale traffico di rete o imiti le comunicazioni software legittime, come quelle provenienti dall'agente di Windows Update.

Perché i profili C2 malleabili sono vantaggiosi per gli aggressori?

I profili C2 malleabili sono vantaggiosi per gli aggressori perché consentono di eludere il rilevamento da parte degli strumenti di sicurezza. Personalizzando il traffico in modo che appaia normale o che imiti il traffico legittimo, gli aggressori possono evitare di attivare gli avvisi di sicurezza. Inoltre, questi profili consentono di testare le misure di sicurezza simulando i comportamenti noti malware e valutando l'efficacia dei meccanismi di rilevamento.

In che modo i profili malleabili migliorano la sicurezza operativa durante i test di penetrazione o gli attacchi?

I profili malleabili migliorano la sicurezza operativa rendendo più difficile per i difensori identificare e bloccare il traffico C2 dannoso. Personalizzando il traffico in modo che assomigli a comunicazioni software legittime o variando gli schemi di traffico, gli aggressori possono mantenere la segretezza e ridurre il rischio di rilevamento. Ciò è particolarmente importante quando si installano e gestiscono agenti su macchine compromesse all'interno di una rete target.

In che modo i profili malleabili influiscono sulla sicurezza endpoint ?

Sugli endpoint, i profili malleabili possono controllare le caratteristiche in-memory, i metodi di iniezione dei processi e le attività post-exploitation. Queste funzionalità aiutano a eludere gli strumenti di rilevamento e risposta endpoint (EDR) e il software antivirus, personalizzando il modo in cui il codice dannoso viene caricato e si comporta in memoria, rendendolo più difficile da rilevare con i metodi convenzionali.

In che modo l'uso di profili malleabili complica il rilevamento dell'attività di beaconing?

I profili malleabili complicano il rilevamento dell'attività di beaconing consentendo agli aggressori di randomizzare gli intervalli di tempo (jitter e ritardo) tra le comunicazioni C2. Questa randomizzazione rende difficile per gli strumenti di difesa della rete identificare modelli regolari di beaconing, spesso utilizzati per rilevare sistemi compromessi che comunicano con un server C2.

Come si stanno diffondendo i profili C2 malleabili in altri framework?

I profili C2 malleabili, originariamente diffusi da Cobalt Strike, hanno iniziato a essere adottati da altri framework C2 come Empire C2, che ha incluso questa funzionalità a partire dalla versione 3.4. Questa espansione è in parte guidata dalla partnership di Empire con Kali Linux, che ha aumentato la diffusione e l'utilizzo dei profili malleabili tra i penetration tester e gli attori delle minacce.

Quali elementi specifici del traffico C2 possono essere personalizzati utilizzando i profili malleabili?

Utilizzando i profili Malleable, gli operatori possono personalizzare vari elementi del traffico C2, tra cui le intestazioni HTTP (ad esempio, user-agent, stringhe di accettazione), gli URI, i certificati SSL e i valori di temporizzazione (ad esempio, jitter e ritardo). Queste personalizzazioni aiutano il traffico dannoso a confondersi con il traffico normale o ad apparire unico in ogni operazione, rendendo più difficile il rilevamento.

Quali sfide pongono i profili malleabili ai difensori?

I profili malleabili rappresentano una sfida significativa per i difensori, in quanto complicano il rilevamento del traffico dannoso. I metodi di rilevamento tradizionali basati sulle firme diventano meno efficaci perché il traffico personalizzato non corrisponde a schemi dannosi noti. I difensori devono affidarsi a tecniche di rilevamento più sofisticate e adattive, come l'analisi basata sul comportamento e il rilevamento delle anomalie, per identificare le attività sospette.

In che modo i profili malleabili influiscono sulla sicurezza endpoint ?

In Cobalt Strike, gli operatori possono personalizzare vari aspetti del comportamento endpoint , tra cui i permessi di memoria del codice caricato, il metodo di iniezione del processo, il padding dei dati, i metodi di allocazione e le attività di post-exploitation, come l'iniezione intelligente e la specificazione delle posizioni di spawn. Queste opzioni rendono difficile per gli strumenti di sicurezza identificare l'attività dannosa sulla base di indicatori comuni.

Perché è fondamentale che i centri operativi di sicurezza (SOC) dispongano di una solida piattaforma di rilevamento e risposta alle minacce quando si tratta di profili malleabili?

Date le tecniche di evasione avanzate consentite dai profili malleabili, è fondamentale che i SOC dispongano di una solida piattaforma di rilevamento e risposta alle minacce. Tale piattaforma può fornire analisi in tempo reale, rilevamento basato sul comportamento e rilevamento avanzato delle anomalie per identificare e rispondere alle minacce sofisticate che eludono i metodi tradizionali basati sulle firme. Ciò migliora la postura di sicurezza complessiva e consente di rispondere in modo tempestivo ed efficace a potenziali intrusioni.