Iscriviti al webinar gratuito del 26 Maggio per diventare SOC Specialist! Scopri di più
Persistenza via DLL Globale: AppInit DLLs (T1546.010)
La tecnica AppInit DLLs sfrutta un meccanismo legacy di Windows per iniettare una DLL malevola in ogni processo che carica user32.dll — e questo, in pratica, significa quasi ogni applicazione con interfaccia grafica del sistema operativo. Il trucco è elegante nella sua semplicità: l'attaccante scrive il percorso della propria DLL nella chiave di registro AppInit_DLLs sotto HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows (o nell'equivalente WoW6432Node per processi a 32 bit), e da quel momento in poi il sistema operativo si occupa del caricamento automatico.
Questa tecnica si colloca a cavallo di due tattiche fondamentali della kill chain. In ottica Persistence (TA0003), garantisce che la DLL venga ricaricata ad ogni avvio di processo — sopravvivendo a riavvii e logout senza richiedere ulteriori interazioni. In ottica Privilege Escalation (TA0004), la DLL viene eseguita nel contesto di sicurezza del processo ospite: se quel processo gira come SYSTEM o come amministratore locale, il codice malevolo eredita quei privilegi.
Un elemento cruciale: a partire da Windows 8, con Secure Boot abilitato, la funzionalità AppInit DLLs è disabilitata a livello kernel. Questo riduce drasticamente la superficie d'attacco sugli ambienti moderni, ma non la elimina del tutto — i sistemi legacy, le VM senza Secure Boot e le configurazioni UEFI alterate restano vulnerabili. I dati mostrano 1 gruppo APT, 3 famiglie malware e 2 mitigazioni associati a questa tecnica.
Per simulare questa tecnica in ambiente lab è sufficiente un sistema Windows 7 o un Windows 10 con Secure Boot disabilitato. L'obiettivo dell'esercizio è dimostrare come una singola modifica al registro possa trasformare ogni processo GUI in un vettore di esecuzione. Ti servono privilegi amministrativi locali — senza quelli, la chiave HKLM non è scrivibile.
Inizia preparando una DLL di test. Con msfvenom (open source, parte di Metasploit Framework) puoi generare un payload che si limiti a scrivere un marker su disco, senza comportamento distruttivo:
msfvenom -p windows/exec CMD="cmd.exe /c echo APPINIT_TEST > C:\Windows\Temp\appinit_proof.txt" -f dll -o C:\test\appinit_test.dll
In un contesto più controllato, puoi compilare una DLL minima in C che scrive un log in DLL_PROCESS_ATTACH. L'importante è che la DLL non faccia crashare i processi ospite — un errore frequente nei lab è generare payload che terminano il processo, causando instabilità a cascata.
Per impostare la persistenza, usa questi due comandi da un prompt amministrativo:
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\test\appinit_test.dll" /f
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
Il primo comando registra il percorso della DLL, il secondo attiva il meccanismo di caricamento. Da questo momento, apri un qualunque programma che importa user32.dll — Notepad, Calculator, Explorer — e la tua DLL verrà caricata nel suo spazio di indirizzamento.
Per verificare l'avvenuto caricamento, Process Explorer (gratuito, Sysinternals) è lo strumento ideale: apri il processo target, vai alla vista DLL e cerca la tua libreria nella lista. In alternativa, con PowerShell:
Get-Process | ForEach-Object { $.Modules } | Where-Object { $.FileName -like "appinit_test" }
Per l'equivalente WoW6432Node (processi a 32 bit su OS a 64 bit), ripeti la stessa operazione sulla chiave:
reg add "HKLM\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\test\appinit_test.dll" /f
Al termine del test, rimuovi le chiavi e riavvia. Il framework Atomic Red Team (open source) include un test atomico per T1546.010 che automatizza setup e cleanup — usalo se vuoi integrare la simulazione in una pipeline di validazione continua.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo