Iniezione di Codice: Process Injection (T1055)

Process Injection è la tecnica con cui un attaccante inserisce codice arbitrario nello spazio di indirizzamento di un processo legittimo già in esecuzione. L'esito è duplice: da un lato l'evasione dei controlli basati su reputazione del processo, dall'altro l'accesso a memoria, token e risorse di rete del processo ospite, con possibile escalation di privilegi.

MITRE ATT&CK colloca la tecnica nelle tattiche TA0004 (Privilege Escalation) e TA0005 (Defense Evasion), coprendo così le fasi centrali della kill chain in cui l'avversario consolida il controllo e si mimetizza. La rilevanza operativa è confermata dai numeri: 15 gruppi APT, 60 famiglie malware o tool, 7 campagne documentate e appena 2 mitigazioni ufficialmente mappate, segno di una superficie difensiva strutturalmente stretta.

Le implementazioni sono numerose e platform-specific: dall'iniezione classica via CreateRemoteThread su Windows, al ptrace su Linux, fino a task_for_pid e DYLD_INSERT_LIBRARIES su macOS. Campioni sofisticati concatenano più iniezioni per segmentare i moduli e comunicano tra loro via named pipe o altri meccanismi IPC, rendendo la ricostruzione della catena particolarmente onerosa per chi deve rispondere all'incidente. La tecnica è trasversale a ransomware, RAT, loader e framework di post-exploitation, il che la rende un pilastro dell'offensive tooling contemporaneo.

Durante un red team engagement, Process Injection va simulata rispettando una regola di ingaggio precisa: i payload devono essere inerti o di test, e le macchine target devono appartenere al perimetro autorizzato. Su Windows la catena canonica sfrutta tre chiamate Win32: OpenProcess con diritto PROCESS_VM_WRITE | PROCESS_CREATE_THREAD, poi VirtualAllocEx per riservare memoria eseguibile nel target, WriteProcessMemory per copiare lo shellcode e infine CreateRemoteThread per l'esecuzione. Le API Nt* native (NtCreateThreadEx, NtWriteVirtualMemory) sono equivalenti ma spesso non tracciate dagli hook user-mode dei prodotti EDR meno maturi, ed è proprio la scelta di TrickBot (S0266) verso wermgr.exe.

Per la simulazione in laboratorio l'ecosistema è ampio. Cobalt Strike (a pagamento) espone il comando inject e primitive spawnto configurabili per scegliere il processo ospite; Sliver (open source) offre migrate con più metodi selezionabili. Sul versante PowerShell, PowerSploit (open source) fornisce Invoke-ReflectivePEInjection, lo stesso script osservato in mano a Turla; Empire e PoshC2 (entrambi open source) includono Invoke-PSInject. Per esercitarsi sullo shellcode injection puro, Donut (open source) genera shellcode position-independent da PE .NET e nativi, mentre SILENTTRINITY (open source) inietta direttamente in Excel.exe.

Su Linux la via più diretta passa da ptrace(PTRACE_ATTACH, pid, ...) seguito da PTRACE_POKETEXT per scrivere nel segmento di codice del target; in alternativa process_vm_writev evita l'attach esplicito. Il tool didattico di riferimento è linux-inject (open source), che dimostra l'iniezione di una shared object in un processo arbitrario. Un approccio più moderno usa memfd_create per materializzare l'ELF in memoria e execveat per eseguirlo senza toccare il disco.

Su macOS il ricorso a task_for_pid richiede taskgated permissivo o SIP disabilitato in ambiente di test; la primitiva successiva è mach_vm_write seguita da thread_create_running. La via legittima ma abusabile resta la variabile d'ambiente DYLD_INSERT_LIBRARIES per il side-loading di una dylib in processi non hardened.

Una catena realistica in scenario Windows prevede initial access con macro Office, drop di un loader compilato in C che esegue NtMapViewOfSection-based injection in explorer.exe, e successiva migrazione verso lsass.exe per l'estrazione di credenziali. Documentare timestamp, PID sorgente e destinazione, e access mask usate è indispensabile per abilitare il purple team a validare le regole di detection.

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.