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

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.