Iniezione DLL: Dynamic-link Library Injection (T1055.001)
L'iniezione di DLL è una delle tecniche di manipolazione dei processi più longeve e diffuse nell'arsenale degli attaccanti. Consiste nello scrivere il percorso di una libreria dinamica nello spazio di indirizzamento di un processo bersaglio e invocarne il caricamento tramite una serie di chiamate API native di Windows: VirtualAllocEx alloca la memoria, WriteProcessMemory deposita il payload o il path della DLL, e CreateRemoteThread attiva l'esecuzione richiamando LoadLibrary.
La tecnica è mappata su due tattiche MITRE ATT&CK: TA0004 (Privilege Escalation), perché iniettare in un processo con privilegi superiori consente di ereditarne il contesto di sicurezza, e TA0005 (Defense Evasion), dato che il codice malevolo viene eseguito sotto l'identità di un binario firmato e legittimo. Nel ciclo dell'attacco si colloca tipicamente dopo l'accesso iniziale e prima della fase di command and control o di impatto.
Le varianti moderne includono la reflective DLL injection, dove la libreria si auto-mappa in memoria senza toccare il disco, il memory module e il module stomping (o DLL hollowing), che sovrascrive l'AddressOfEntryPoint di una DLL legittima già caricata per mascherare l'esecuzione dietro un modulo trusted. I numeri parlano chiaro: 9 gruppi APT tracciati, 56 famiglie malware documentate e campagne recenti come C0015 confermano una tecnica trasversale che attraversa ransomware, spionaggio e cybercrime finanziario.
In un esercizio red team, la simulazione dell'iniezione DLL parte tipicamente da una macchina Windows in laboratorio isolato. Il primo passo è ottenere un handle sul processo target con privilegi PROCESS_VM_OPERATION, PROCESS_VM_WRITE e PROCESS_CREATE_THREAD, quindi replicare la sequenza classica: allocazione, scrittura del path e creazione del thread remoto.
PowerSploit (open source) resta un riferimento didattico: il modulo Invoke-DllInjection del pacchetto CodeExecution consente di caricare una DLL arbitraria in un PID scelto con la sintassi Invoke-DllInjection -ProcessID
Cobalt Strike (a pagamento) offre nei suoi Beacon i comandi inject e dllinject per iniezione classica, oltre a primitive di process hollowing e fork&run. Metasploit Framework (open source, con edizione Pro a pagamento) implementa la reflective injection via migrate e i payload Meterpreter, come storicamente usato da Turla per l'escalation. Per esercitazioni più avanzate, Pupy (open source) e Koadic (open source) espongono capacità di migrazione in-memory analoghe a quelle di RAT reali.
Su Linux la tecnica equivalente sfrutta LD_PRELOAD o ptrace per iniettare shared object; strumenti come linux-inject (open source) permettono di sperimentare l'iniezione di .so in processi in esecuzione, mentre su macOS il task_for_pid combinato con Mach APIs richiede entitlement specifici e su versioni recenti è pesantemente ristretto dal System Integrity Protection.
Per una catena completa d'attacco simulata, l'operatore parte da un initial access via phishing, esegue un dropper che sfrutta VirtualAllocEx + WriteProcessMemory + CreateRemoteThread per iniettare un beacon dentro explorer.exe o svchost.exe — pattern osservato in BlackEnergy, ShadowPad e Qilin — e poi procede con discovery e movimento laterale.
Per studiare varianti stealth, il module stomping è ben documentato: si carica una DLL benigna, si localizza l'entry point tramite parsing del PE header in memoria, e si sovrascrive il codice mantenendo il modulo mappato come legittimo. Strumenti didattici come Dumpert e SharpBlock (open source) mostrano come combinare l'iniezione con evasione di ETW e AMSI. Ogni test va condotto con logging Sysmon attivo per validare l'efficacia dei rilevamenti.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo