Process Doppelgänging: Iniezione via Transactional NTFS (T1055.013)
Process Doppelgänging è una tecnica di iniezione di codice che sfrutta le Transactional NTFS (TxF), un'API introdotta con Windows Vista per garantire operazioni atomiche sul file system. L'abuso di questo meccanismo consente di eseguire codice arbitrario nello spazio di memoria di un processo apparentemente legittimo, senza mai lasciare l'artefatto malevolo scritto in modo persistente sul disco.
La tecnica è classificata sotto due tattiche MITRE: TA0004 (Privilege Escalation) e TA0005 (Defense Evasion). Sebbene l'escalation sia limitata — il processo iniettato eredita il contesto di sicurezza del chiamante — il vero valore per l'attaccante risiede nell'evasione. A differenza del più noto Process Hollowing, il doppelgänging evita chiamate ad API pesantemente monitorate come NtUnmapViewOfSection, VirtualProtectEx e SetThreadContext.
Il flusso operativo si articola in quattro fasi: Transact (creazione di una transazione TxF su un eseguibile legittimo che viene sovrascritto con payload malevolo, con modifiche visibili solo dentro la transazione), Load (creazione di una sezione di memoria condivisa dall'immagine tainted), Rollback (annullamento della transazione, che elimina ogni traccia dal file system) e Animate (avvio del processo dalla sezione di memoria contaminata).
L'impatto operativo è significativo: il gruppo Leafminer e i malware SynAck e Bazar hanno adottato questa tecnica per aggirare EDR e antivirus tradizionali, sfruttando il fatto che l'eseguibile su disco appare pulito e firmato.
La simulazione di Process Doppelgänging in laboratorio richiede un ambiente Windows isolato (idealmente Windows 10 1903 o precedenti, dove le mitigazioni Kernel Patch Protection non hanno ancora chiuso alcuni edge case) e conoscenza approfondita delle API TxF native, esposte principalmente da ntdll.dll e ktmw32.dll.
La proof-of-concept originale è quella presentata da Tal Liberman ed Eugene Kogan a Black Hat Europe 2017. Il codice sorgente di riferimento è disponibile nel repository hasherezade/process_doppelganging su GitHub (open source), che fornisce un'implementazione completa in C++ e resta il punto di partenza canonico per red team che vogliono studiare il flusso a basso livello. Un secondo riferimento utile è Osiris, banking trojan la cui implementazione è stata dettagliatamente analizzata in whitepaper pubblici.
La catena operativa che il red teamer replica in lab è la seguente. Si apre un handle transazionale con CreateTransaction, si crea il file target dentro la transazione con CreateFileTransactedW puntando a un binario legittimo (tipicamente svchost.exe o notepad.exe), si sovrascrive il contenuto con il payload tramite WriteFile, si crea una sezione con NtCreateSection passando l'handle transazionale, si esegue RollbackTransaction per ripristinare il file originale su disco, e infine si costruisce manualmente il processo con NtCreateProcessEx, NtCreateThreadEx e la popolazione del PEB tramite NtWriteVirtualMemory.
Per testare il carico in un contesto realistico, framework come Cobalt Strike (a pagamento) espongono il modulo spawnto con opzioni di process injection avanzate, mentre Sliver (open source) e Havoc (open source) permettono di caricare BOF (Beacon Object Files) custom che implementano varianti della tecnica. Per lo sviluppo di payload personalizzati Donut (open source) genera shellcode PIC a partire da assembly .NET o PE nativi, utili come contenuto della sezione tainted.
Sul fronte detection evasion in fase di ingaggio, il red teamer verifica preventivamente quali EDR sono in scope: CrowdStrike Falcon, SentinelOne e Microsoft Defender for Endpoint (tutti a pagamento) hanno introdotto rilevatori specifici per pattern TxF anomali. Un test etico prevede sempre l'esecuzione contro un endpoint di controllo con logging Sysmon attivo per validare che le regole di detection del blue team scattino, chiudendo il ciclo purple team. L'attività va condotta esclusivamente in ambienti autorizzati con regole d'ingaggio scritte.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo