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
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