Svuotamento di Processo: Process Hollowing (T1055.012)

Il Process Hollowing è una tecnica di iniezione di codice in cui un processo legittimo viene creato in stato sospeso, la sua memoria viene "svuotata" (unmapped) e sostituita con codice malevolo, per poi riprendere l'esecuzione sotto le sembianze del binario originale. MITRE la classifica come sotto-tecnica di Process Injection (T1055.012) e la associa a due tattiche: TA0004 Privilege Escalation e TA0005 Defense Evasion.

Il valore per l'attaccante risiede nella capacità di mascherare l'esecuzione dietro processi affidabili come svchost.exe, explorer.exe, iexplore.exe o notepad.exe, aggirando controlli basati su reputazione dell'immagine e regole di allow-listing. Sebbene non produca di per sé un'elevazione di privilegi (il processo eredita il contesto di sicurezza del padre), l'evasione ottenuta rende la persistenza operativa molto più stabile.

La telemetria MITRE conta 7 gruppi APT documentati (tra cui Threat Group-3390, menuPass, Patchwork, Kimsuky, Gorgon Group, TA2541 e BlackByte) e 32 famiglie di malware che la implementano, inclusi loader e RAT di grande diffusione come Cobalt Strike, Emotet, TrickBot, QakBot, IcedID, Bazar, Agent Tesla e Lumma Stealer. La combinazione di ampia adozione criminale e uso APT la rende una delle tecniche di iniezione più rilevanti da coprire in ambito detection.

La catena classica di Process Hollowing su Windows si articola in sette chiamate API della Win32/NT API: CreateProcess con flag CREATE_SUSPENDED, NtUnmapViewOfSection (o ZwUnmapViewOfSection) per liberare la memoria dell'immagine originale, VirtualAllocEx per riservare lo spazio, WriteProcessMemory per copiare il PE malevolo, SetThreadContext per riallineare il registro EIP/RIP all'entry point iniettato e infine ResumeThread per avviare l'esecuzione.

In un contesto red team autorizzato, la simulazione più pulita passa da framework di post-exploitation. Cobalt Strike (a pagamento) espone il modulo spawn e la direttiva spawnto nel Malleable C2 profile per definire il processo target (ad esempio spawnto_x64 "%windir%\\sysnative\\svchost.exe"). Metasploit Framework (open source) supporta il payload windows/x64/meterpreter/reverse_tcp con l'opzione PrependMigrate che effettua hollowing verso un processo pulito subito dopo il caricamento.

Per test più didattici e trasparenti, il PoC di riferimento è hasherezade/process_hollowing su GitHub (open source), che implementa la sequenza completa in C con logging delle API chiamate: utile per validare regole EDR in laboratorio isolato. Alternative moderne includono D/Invoke e SharpHollow (open source) per esecuzione da .NET evitando P/Invoke tracciabile, e Donut (open source) per generare shellcode position-independent da PE arbitrari, da abbinare a un loader di hollowing.

Un tipico esercizio operativo prevede:

  • generare uno shellcode con msfvenom o donut.exe;
  • compilare un loader C/C++ che crei notepad.exe o RegAsm.exe in stato sospeso;
  • iniettare il payload con la sequenza VirtualAllocEx → WriteProcessMemory → SetThreadContext → ResumeThread;
  • verificare con Process Hacker (open source) o Process Explorer (gratuito, Sysinternals) che il PE mappato in memoria differisca dall'immagine su disco.

Su Linux la tecnica equivalente sfrutta ptrace con PTRACE_POKETEXT o la mappatura di segmenti via memfd_create, ma non rientra formalmente in T1055.012 che è specifica per Windows. Su ESXi non ha corrispondenza diretta, poiché il modello di processo VMkernel non espone le stesse primitive di sospensione e unmapping. Per validare la copertura difensiva, strumenti come Atomic Red Team (open source) includono test dedicati sotto la voce T1055.012 con script PowerShell e binari precompilati che riproducono la sequenza in modo controllato.

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

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.