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ù
Ogni partizione formattata in NTFS mantiene una struttura chiamata Master File Table (MFT), un vero e proprio registro che cataloga ogni file e directory presenti sul volume. All'interno di ciascun record MFT esistono attributi di file — in particolare gli Extended Attributes (EA) e gli attributi $DATA — che possono ospitare dati arbitrari. Quando a un file viene associato più di un attributo $DATA, i flussi aggiuntivi prendono il nome di Alternate Data Streams (ADS).
Gli avversari sfruttano questi spazi "nascosti" per depositare payload, configurazioni o interi eseguibili senza che il contenuto appaia nella dimensione visibile del file ospitante. L'effetto è duplice: i tool di scansione statica spesso ignorano il contenuto degli ADS, e l'utente che naviga il file system non nota nulla di anomalo. La tecnica si colloca nella tattica Defense Evasion (TA0005), ovvero l'insieme di metodi che un attaccante impiega per sfuggire ai controlli difensivi durante tutta la durata della compromissione.
Con 15 software documentati che la utilizzano — dal celebre framework di spionaggio Regin al ransomware WastedLocker, passando per loader moderni come Latrodectus — e almeno 1 gruppo APT attribuito, la tecnica rimane trasversale a operazioni di intelligence e campagne criminal. La mitigazione ufficiale è incentrata sulla restrizione dei permessi su file e directory, ma la vera sfida si gioca sul piano della detection comportamentale e dell'analisi forense del volume NTFS.
La simulazione di questa tecnica in laboratorio è sorprendentemente semplice: il sistema operativo Windows offre nativamente tutto il necessario per creare e leggere Alternate Data Streams.
Il modo più diretto per nascondere un payload in un ADS è il comando type, disponibile in qualsiasi prompt cmd. L'operazione consiste nel redirigere un file binario verso un flusso alternativo agganciato a un file legittimo:
type C:\temp\payload.exe > C:\temp\legit.txt:hidden.exe
Il file legit.txt continuerà a mostrare la sua dimensione originale in Esplora Risorse, ma il binario è ora annidato nel flusso :hidden.exe. Per eseguire il payload nascosto si può ricorrere a wmic:
wmic process call create "C:\temp\legit.txt:hidden.exe"
Anche PowerShell offre un'interfaccia nativa per la gestione degli ADS. Per scrivere un contenuto nel flusso alternativo:
Set-Content -Path C:\temp\legit.txt -Stream secret -Value "payload-data"
Per leggerlo:
Get-Content -Path C:\temp\legit.txt -Stream secret
Per enumerare tutti gli stream associati a un file:
Get-Item -Path C:\temp\legit.txt -Stream *
Un approccio più offensivo prevede l'uso di esentutl (S0404), utility Microsoft legittima per la gestione dei database ESE, che può copiare contenuti dentro un ADS sfruttando la copia binaria raw:
esentutl.exe /y C:\temp\payload.exe /d C:\temp\legit.txt:hidden.exe /o
Analogamente, Expand (S0361) — normalmente usato per decomprimere file da archivi cabinet — può estrarre un payload direttamente in un flusso alternativo:
expand C:\temp\payload.cab C:\temp\legit.txt:hidden.exe
Per simulare l'uso degli Extended Attributes, l'approccio richiede codice custom. In un esercizio red team si può scrivere un piccolo programma C che invochi l'API ZwSetEaFile / NtSetEaFile per depositare un buffer cifrato nell'EA di un file innocuo, replicando la tecnica documentata per Regin e Zeroaccess.
Sul fronte dei tool open source, SharPersist (open source) permette di automatizzare meccanismi di persistenza che includono ADS, mentre framework come Atomic Red Team (open source) contengono test specifici per T1564.004 pronti all'uso per validare le detection del Blue Team.
Un consiglio pratico: dopo ogni simulazione, usa lo strumento Sysinternals Streams (gratuito) per verificare quali ADS hai creato e ripulire l'ambiente:
*streams.exe -s -d C:\temp*
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo