Il team di sicurezza informatica Elastic Security ha rivelato una nuova tecnica denominata Process Ghosting per l’offuscamento e l’evasione dei malware che sfrutterebbe una particolare manomissione delle mappature in memoria dei file eseguibili sui sistemi operativi Microsoft Windows.
Questa tecnica, una evoluzione dei metodi di attacco già noti come Process Doppelgänging e Process Herpaderping, potrebbe potenzialmente consentire a un attore malevolo di aggirare i sistemi di sicurezza degli antivirus.
Indice degli argomenti
Process Ghosting: tecniche di evasione a confronto
Come spiegato dagli stessi analisti negli esempi precedenti di attacchi simili e documentati, manomettere un eseguibile prima che i prodotti di sicurezza possano scansionarlo sarebbe possibile durante una finestra temporale che intercorre tra il momento in cui il processo viene creato e quello in cui i prodotti di sicurezza vengono “informati” della sua creazione.
Ciò è dovuto al fatto che seppure Microsoft offra ai fornitori di sicurezza di terze parti la possibilità di registrare i callback, questi non verranno richiamati alla creazione dei processi nel sistema, ma solo alla creazione dei primi thread all’interno di tali processi.
Il Process Ghosting, basandosi principalmente sui due processi sopracitati (Doppelgänging e Herpaderping) consente dunque di eseguire un payload senza che gli antivirus siano in grado di rilevarlo, sfruttando il fatto che sul sistema operativo Windows gli eseguibili possono essere modificati o eliminati solo dopo che il relativo binario sia stato mappato in una sezione di immagine in memoria.
“Con questa tecnica, un utente malintenzionato può scrivere un malware su disco in modo tale che sia difficile scansionarlo o eliminarlo ed eseguire il malware eliminato come se fosse un normale file su disco. Questa tecnica non comporta iniezione di codice, il Process Hollowing o l’NTFS transazionale (TxF)”, questo è quanto riferisce Gabriel Landau, il ricercatore di Elastic Security che ha identificato la nuova tecnica di offuscamento.
A confronto gli schemi di funzionamento delle tecniche di evasione sfruttate dai malware.
Come funzionano i processi di Windows
Un processo è un’entità dinamica caricata in memoria (RAM), generata da un programma o applicazione e identificato da un codice univoco chiamato PID (Process IDentifier).
In particolare, sui sistemi Windows ciascun processo è associato a un file eseguibile .exe archiviato su disco rigido.
Per avviare un nuovo processo, il kernel deve eseguire una serie di passaggi con l’impiego di determinate interfacce API:
- aprire un handle per l’eseguibile da avviare;
- creare una sezione immagine per il file in memoria;
- creare un processo usando la sezione immagine;
- assegnare argomenti di processo e variabili di ambiente;
- creare un thread da eseguire nel processo.
Diagramma di flusso di un processo nei sistemi Windows.
Process Ghosting: il flusso di attacco
Come accennato prima, la possibilità di eliminazione di un file (su Windows) entra in azione solo quando l’eseguibile risulta mappato in una sezione di memoria.
Ciò significa che l’algoritmo Process Ghosting riuscirebbe nel suo intento malevolo secondo il seguente flusso di attacco:
- creare un file;
- contrassegnarlo per l’eliminazione: questo ne inibisce l’eliminazione;
- scrivere l’eseguibile del payload nel file. Lo stato di attesa di eliminazione blocca i tentativi di apertura e non consente di mantenere il contenuto del file su disco;
- mappare il contenuto su una sezione dell’immagine in memoria;
- chiudere l’handle del file per completare l’eliminazione;
- creare dalla sezione un processo assegnando argomenti e variabili di ambiente;
- creare il thread da eseguire nel processo fileless.
Diagramma del flusso di attacco mediante la tecnica Process Ghosting.
Pertanto, con questo meccanismo un criminale informatico sarebbe in grado di eludere gli strumenti di protezione perché gli eventuali callback antivirus verranno richiamati solo dopo l’avvenuta eliminazione del file e la creazione del relativo thread, vanificando i tentativi degli antivirus di aprire il file prima del completamento dell’eliminazione (STATUS_DELETE_PENDING) perché in corso di eliminazione e di aprire il file o eseguire l’I/O dopo l’eliminazione (STATUS_FILE_DELETE) perché oramai cancellato.
Conclusioni
In un video dimostrativo, i ricercatori hanno dettagliato uno scenario tipo in cui Windows Defender tenta di aprire un eseguibile di payload dannoso per scansionarlo, ma non riesce a farlo perché dapprima il file è in uno stato di eliminazione e successivamente non riesce nuovamente a farlo poiché il file è stato già cancellato, consentendo, di fatto, di farlo eseguire senza problemi secondo le modalità descritte.
Seppure nello scorso mese di maggio, Elastic Security abbia segnalato il problema al Microsoft Security Response Center (MSRC) fornendo anche il codice sorgente per un PoC, secondo il principio della divulgazione responsabile, Microsoft avrebbe comunque ritenuto che il problema “non soddisfa i requisiti per la manutenzione”, facendo intendere pertanto che non risulterebbe fondamentale correggere il bug.
Qualche perplessità sulla risposta resta, come anche la questione irrisolta.