Una combinazione di DLL Sideloading, Module Overloading e un payload XOR cifrato è bastata per aggirare CrowdStrike Falcon su una macchina Windows 11 completamente aggiornata. Il trucco stava nell'immagine sacrificale.
01. Panoramica
CrowdStrike Falcon è uno degli EDR più diffusi in ambienti enterprise. Eluderlo in modo affidabile è una sfida reale — la maggior parte delle tecniche che funzionano contro prodotti meno maturi fallisce qui. Questo post illustra una catena che ha funzionato e spiega perché un piccolo cambiamento ha fatto tutta la differenza.
La catena di esecuzione si articola in quattro fasi: generare uno shellcode con Adaptix C2, cifrarlo con XOR e incorporarlo in un falso file PDF, usare un binario legittimo firmato vulnerabile al DLL Sideloading, e fare in modo che la DLL iniettata esegua il Module Overloading per lanciare lo shellcode in memoria.
02. Generazione del payload e cifratura XOR
Adaptix C2 è un framework per post-exploitation e adversary emulation. Una volta avviato il server C2, genera lo shellcode grezzo che costituisce la base di tutto ciò che segue.
Il primo passo dopo la generazione è la cifratura. Senza di essa, la maggior parte degli EDR rileva immediatamente lo shellcode grezzo tramite signature matching. Una semplice cifratura XOR è sufficiente a rompere queste signature ed evitare il rilevamento statico.
Il payload cifrato viene poi incorporato in un file che imita un documento PDF legittimo. Questo serve a due scopi: rende il file apparentemente innocuo sia per l'analisi automatizzata sia per un'eventuale ispezione manuale.
03. DLL Sideloading e Module Overloading
Il DLL Sideloading sfrutta il modo in cui Windows risolve i percorsi delle DLL. Un binario legittimo e firmato carica una DLL dalla propria directory corrente. Poiché il binario stesso è attendibile e firmato da un vendor noto, l'EDR è meno sospettoso del suo comportamento. Sostituiamo la DLL attesa con la nostra.
Il Module Overloading è la tecnica usata dalla DLL iniettata per eseguire lo shellcode. Invece di allocare nuova memoria eseguibile — che gli EDR monitorano attentamente — carica in memoria un'immagine di un eseguibile legittimo e la sovrascrive con il payload. Il modulo appare come un binario noto e attendibile; lo shellcode vi gira all'interno.
La catena completa: il binario firmato viene eseguito, carica la DLL malevola dalla stessa directory, la DLL legge il falso PDF e decifra lo shellcode XOR, esegue il Module Overloading usando un'immagine sacrificale, e lo shellcode gira all'interno del modulo sovrascritto.
04. Primo test — notepad.exe come immagine sacrificale
Nel primo tentativo, notepad.exe viene usato come immagine sacrificale per il Module Overloading. CrowdStrike Falcon è completamente attivo sulla macchina target:

CrowdStrike rileva il payload immediatamente. La notifica è inequivocabile: un processo è stato interrotto perché è stato rilevato un comportamento anomalo.

L'EDR riconosce che qualcosa non va nel modulo sovrascritto. Usare un binario Windows standard come immagine sacrificale non è sufficiente. CrowdStrike ispeziona ciò che gira all'interno del modulo e segnala la discrepanza.
05. Secondo test — CSFalconContainer.exe come immagine sacrificale
La domanda diventa: cosa succede se usiamo il binario di CrowdStrike stesso come immagine sacrificale? La variabile LEGIT_IMG viene modificata per puntare a C:Program FilesCrowdStrikeCSFalconContainer.exe. Tutto il resto rimane identico — stesso payload, stessa catena di DLL Sideloading, stesso shellcode XOR cifrato.

LEGIT_IMG ora punta al binario di CrowdStrike.CrowdStrike si fida dei propri eseguibili. Abusando di questa fiducia, carichiamo il nostro payload senza attivare alcun alert.
Il beacon appare nel pannello di Adaptix C2. Una sessione attiva gira su una macchina Windows 11 x64 con CrowdStrike Falcon completamente operativo. Il processo compare come PH1F.tmp crowdstrike — il nome dell'EDR stesso, che trasporta il nostro payload.

Per confermare l'accesso completo, viene eseguito con successo un comando screenshot tramite BOF (Beacon Object File). Tutti i processi di CrowdStrike Falcon Sensor continuano a girare in background. L'EDR è attivo, il beacon è vivo, e i comandi vengono eseguiti senza alcun rilevamento.

06. Conclusione
Un parametro. È tutta la differenza tra essere scoperti ed entrare. Usando notepad.exe come immagine sacrificale, CrowdStrike rileva e termina il processo immediatamente. Usando CSFalconContainer.exe, lo stesso payload gira senza problemi.
La lezione non è che CrowdStrike sia difettoso — è che qualsiasi sistema che concede fiducia elevata ai propri componenti può avere quella fiducia rivolta contro di sé. Più un EDR si fida di se stesso, più i suoi stessi binari diventano una copertura preziosa.
Un parametro. Tutta la differenza.
