Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
La compressione dei payload rappresenta una delle strategie più longeve e trasversali nel panorama dell'evasione difensiva. La tecnica T1027.015 si colloca nella tattica TA0005 – Defense Evasion e descrive come gli avversari sfruttino formati di archivio — ZIP, RAR, 7z, gzip — o algoritmi di compressione diretta per offuscare file malevoli, shellcode e stringhe sensibili.
Il meccanismo è duplice. Da un lato la compressione altera la struttura binaria del payload, rendendo inefficaci le firme statiche; dall'altro, il formato archivio aggiunge uno strato di interazione umana che rallenta l'analisi automatizzata. Tecniche più sofisticate includono la concatenazione di archivi ZIP multipli — un singolo file che nasconde directory centrali di archivi distinti, invisibili a parser come 7zip — e gli archivi autoestraenti (SFX), che eliminano la necessità di interazione multipla da parte della vittima.
I numeri confermano la diffusione: 7 gruppi APT documentati, 24 software che implementano la tecnica e 1 mitigazione formalmente mappata. La compressione viene spesso combinata con cifratura e codifica (Base64, XOR), creando catene di offuscamento multistrato che moltiplicano il costo dell'analisi per i difensori.
Il red teamer che vuole simulare questa tecnica in laboratorio ha a disposizione un arsenale ricco, dal banale archivio ZIP password-protetto fino alla compressione in-memory di shellcode. L'obiettivo è testare la capacità dell'EDR e del gateway email di ispezionare contenuto compresso a più livelli.
Il punto di partenza più immediato è la creazione di archivi con payload embedded. Su Windows, MakeCab è già disponibile nativamente e permette di comprimere un eseguibile senza installare nulla:
makecab C:\test\payload.exe C:\test\payload.cab
Per archivi ZIP password-protetti — scenario frequente nelle campagne reali — si può usare 7-Zip (open source) da riga di comando:
7z a -pInfected123 -tzip C:\test\delivery.zip C:\test\payload.exe
La simulazione della concatenazione ZIP, tecnica documentata nella descrizione della tecnica, richiede un approccio binario. Su Linux è sufficiente concatenare due archivi validi:
cat legit.zip malicious.zip > concatenated.zip
Il file risultante appare come un singolo archivio, ma contiene due directory centrali. Alcuni parser leggeranno solo il primo archivio, ignorando il payload nascosto nel secondo. Questo è un test eccellente per validare il comportamento dello strumento di decompressione usato dal gateway email.
Per la compressione di shellcode in-memory, Donut (open source) genera moduli compressi e cifrati partendo da eseguibili .NET, DLL o shellcode grezzo:
donut -i payload.exe -o loader.bin -z 2
Il parametro -z 2 abilita la compressione tramite aPLib. Il risultato è un blob che viene decompresso e iniettato solo a runtime, eludendo la scansione statica del disco.
Su Linux, la catena classica per simulare delivery via gzip — come documentato per Leviathan — prevede:
gzip -c payload.elf > payload.gz
Per testare la detection degli archivi autoestraenti, 7-Zip consente di creare SFX con configurazione di esecuzione automatica. Il red teamer dovrebbe verificare se l'EDR intercetta il processo figlio generato dall'SFX subito dopo l'estrazione.
Infine, per simulare la compressione di stringhe in registry — tecnica usata da Pillowmint — si può comprimere shellcode con PowerShell e scriverlo in una chiave di registro:
$compressed = [IO.Compression.DeflateStream]::new([IO.MemoryStream]::new([IO.File]::ReadAllBytes("payload.bin")), [IO.Compression.CompressionMode]::Compress)
Questo esercizio verifica se il monitoraggio del registro (Sysmon EventCode 13) rileva scritture anomale in chiavi non standard.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo