Process Doppelgänging: Manipolazione delle Transazioni NTFS per Evasione (T1055.013)

Process Doppelgänging rappresenta una sofisticata tecnica di code injection che sfrutta le Windows Transactional NTFS (TxF) per mascherare l'esecuzione di codice malevolo all'interno di processi legittimi. Questa metodologia appartiene alle tattiche TA0004 (Privilege Escalation) e TA0005 (Defense Evasion), posizionandosi nelle fasi di escalation dei privilegi ed evasione nella kill chain.

La tecnica evita l'utilizzo di API altamente monitorate come NtUnmapViewOfSection o VirtualProtectEx, rendendo la detection particolarmente complessa. Un solo gruppo APT documentato ha implementato questa tecnica, mentre 2 malware specifici la integrano nel loro arsenale operativo.

L'impatto reale deriva dalla capacità di bypassare soluzioni EDR che si basano sul monitoraggio di API tradizionali per process injection, sfruttando invece il meccanismo transazionale del filesystem per creare processi "puliti" da una prospettiva forense.

Il processo di implementazione richiede quattro fasi distinte che manipolano le API transazionali di Windows. Prima di tutto, è necessario creare una transazione TxF utilizzando CreateTransaction e aprire un file legittimo in modalità transazionale.

hTransaction = CreateTransaction(NULL, 0, 0, 0, 0, 0, NULL)
hTransactedFile = CreateFileTransacted("C:\Windows\System32\svchost.exe", ...)

La fase di caricamento prevede la sovrascrittura del file all'interno della transazione con il payload malevolo. Questa modifica rimane isolata nel contesto transazionale:

WriteFile(hTransactedFile, malicious_payload, payload_size, ...)
NtCreateSection(&hSection, SECTION_ALL_ACCESS, NULL, 0, PAGE_READONLY, SEC_IMAGE, hTransactedFile)

Il rollback della transazione elimina le tracce dal filesystem mentre mantiene la sezione di memoria già mappata. RollbackTransaction(hTransaction) rimuove completamente le modifiche al file originale.

L'animazione del processo avviene tramite NtCreateProcessEx passando la sezione di memoria contenente il payload. Successivamente si crea il thread principale con NtCreateThreadEx per avviare l'esecuzione.

Tool come DoublePulsar framework includono implementazioni proof-of-concept. Per testing in laboratorio, progetti GitHub come "processrefund" forniscono codice funzionante che dimostra la tecnica completa.

La chiave del successo risiede nel timing preciso tra rollback e creazione del processo. Un delay eccessivo può causare il fallimento dell'operazione poiché Windows invalida le sezioni di memoria non committate.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo