Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Arile! Scopri di più
Il Process Hollowing è una delle tecniche di code injection più eleganti e diffuse nel panorama offensivo moderno. Il principio è semplice nella sua concezione: un avversario crea un processo legittimo in stato sospeso, svuota la sua memoria originale e la sostituisce con codice malevolo, per poi riprenderne l'esecuzione. Il risultato è un processo che, agli occhi del sistema operativo e degli strumenti di monitoraggio, appare del tutto legittimo — ma esegue payload arbitrario.
La tecnica si colloca in due tattiche distinte della kill chain. Nella fase di Defense Evasion (TA0005), il suo scopo primario è mascherare l'esecuzione malevola sotto l'identità di un processo fidato come svchost.exe, explorer.exe o notepad.exe. In parallelo, è classificata anche sotto Privilege Escalation (TA0004), poiché il contesto di sicurezza del processo hollowed può essere sfruttato strategicamente, anche se il processo figlio eredita i privilegi del processo padre.
I numeri confermano la sua popolarità: 32 famiglie malware documentate la impiegano attivamente, 7 gruppi APT la includono nei propri arsenali operativi e una mitigazione specifica è stata formalizzata. La catena di API call che la caratterizza — CreateProcess con flag CREATE_SUSPENDED, poi NtUnmapViewOfSection, VirtualAllocEx, WriteProcessMemory, SetThreadContext e infine ResumeThread — rappresenta una firma comportamentale riconoscibile, ma sufficientemente comune in operazioni legittime da rendere il tuning della detection una sfida reale per ogni SOC.
Il process hollowing è un fondamentale del red teaming. Replicarlo in laboratorio richiede familiarità con le Windows API e con i framework di post-exploitation che lo implementano nativamente.
Il punto di partenza più immediato è Cobalt Strike (a pagamento). Il suo modulo spawnto permette di definire quale eseguibile verrà utilizzato come contenitore hollowed. Dal Beacon, la configurazione del Malleable C2 profile permette di personalizzare il binario target:
set spawnto_x64 "%windir%\sysnative\dllhost.exe"; set spawnto_x86 "%windir%\syswow64\dllhost.exe";
L'operatore può poi lanciare un payload con spawn o execute-assembly, e il framework si occupa internamente della sequenza CreateProcess → NtUnmapViewOfSection → WriteProcessMemory → ResumeThread.
Per chi preferisce un approccio open source, Metasploit Framework (open source) offre il modulo post/windows/manage/migrate, che supporta la migrazione in un processo sospeso. Il comando dalla sessione Meterpreter è diretto:
meterpreter > run post/windows/manage/migrate SPAWN=true NAME=svchost.exe
Un'alternativa didattica e granulare è scrivere il proprio loader in C/C++ utilizzando le API native. La sequenza operativa è:
CreateProcessW sull'eseguibile target (es. svchost.exe) con il flag CREATE_SUSPENDED (valore 0x4)PEB del processo sospeso tramite NtQueryInformationProcess per leggere l'image baseNtUnmapViewOfSectionVirtualAllocEx e scrivervi il payload con WriteProcessMemorySetThreadContextResumeThread per avviare l'esecuzionePer il testing, Process Hacker (open source) è indispensabile per verificare visivamente che il processo hollowed presenti discrepanze tra l'immagine su disco e quella in memoria. Una volta eseguito il hollowing, aprendo le proprietà del processo in Process Hacker noterete che il campo Image file name punta all'eseguibile legittimo, ma la memoria non corrisponde.
Anche pe-sieve (open source), tool di hasherezade, è fondamentale in fase di validazione: esegue uno scan in-memory dei processi e rileva le discrepanze tra il PE caricato e l'immagine originale su disco. Il comando di base:
pe-sieve.exe /pid <PID_TARGET>
Questo restituisce un report con le pagine di memoria modificate, ideale per confermare che il hollowing è andato a buon fine e per capire cosa vedrebbe un analista.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo