AppInit DLLs: Persistenza via Registry AppInit_DLLs (T1546.010)

La tecnica T1546.010 sfrutta un meccanismo storico di Windows: le DLL elencate nel valore AppInit_DLLs delle chiavi di Registry HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows (e la variante Wow6432Node per processi a 32 bit) vengono caricate automaticamente da user32.dll in praticamente ogni processo user-mode che la importa. Poiché user32.dll è tra le librerie più diffuse dell'ecosistema Windows, un attaccante che riesca a scrivere in queste chiavi ottiene sia persistenza continua sia privilege escalation implicita, dato che il codice malevolo viene eseguito nel contesto di processi arbitrari, compresi quelli lanciati da utenti con privilegi elevati.

La tecnica copre due tattiche del framework ATT&CK: TA0003 (Persistence), perché ogni nuovo processo che carica user32.dll rilancia la DLL malevola, e TA0004 (Privilege Escalation), perché il codice eredita il token del processo ospite. Sul piano della kill chain si colloca dopo l'Initial Access e l'ottenimento di privilegi amministrativi locali, necessari per scrivere in HKLM.

Dal punto di vista dell'impatto: il meccanismo è disabilitato di default su Windows 8 e successivi quando Secure Boot è attivo, ma resta rilevante su sistemi legacy, workstation industriali e ambienti in cui Secure Boot non è forzato. I dati MITRE documentano 1 gruppo APT, 3 famiglie malware e 2 mitigazioni ufficiali associate alla tecnica.

In un contesto red team autorizzato, la simulazione di T1546.010 richiede un laboratorio isolato con Windows 7 o Windows Server 2008 R2 (dove il meccanismo è pienamente attivo) oppure una VM Windows 10 con Secure Boot esplicitamente disabilitato per riprodurre il comportamento storico.

La catena d'attacco tipica prevede tre fasi. Prima si compila una DLL proof-of-concept che esporta DllMain e registra il proprio caricamento in un file di log locale, così da tracciare in quanti processi finisce iniettata. Un semplice progetto Visual Studio con template Dynamic-Link Library (DLL) (a pagamento, con Community Edition gratuita) o MinGW-w64 (open source) sono sufficienti; l'importante è compilare per l'architettura corretta, perché la chiave Wow6432Node governa i processi a 32 bit e quella nativa i 64 bit.

La seconda fase è la scrittura delle chiavi di Registry. Da un prompt amministrativo:

reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\lab\payload.dll" /f

reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f

Questa è esattamente la coppia di operazioni documentata per T9000 e Cherry Picker. Su sistemi con Secure Boot va verificata anche la chiave RequireSignedAppInit_DLLs: se impostata a 1, solo DLL firmate digitalmente verranno caricate, quindi in laboratorio si può firmare la DLL con un certificato self-signed usando signtool.exe (incluso in Windows SDK, gratuito) e installandolo nello store Trusted Root.

La terza fase è la validazione: lanciare Process Explorer (open source, suite Sysinternals) e cercare il nome della DLL nella colonna DLLs dei processi user-mode. In alternativa, uno script PowerShell che enumera i moduli caricati:

Get-Process | ForEach-Object { $.Modules | Where-Object { $.ModuleName -like "payload" } }*

Per emulazioni più realistiche, framework come Atomic Red Team (open source, di Red Canary) includono test atomici per T1546.010 che automatizzano scrittura del registry e verifica del caricamento. Caldera (open source, MITRE) permette di orchestrare la tecnica dentro scenari end-to-end.

Un accorgimento importante: la DLL deve gestire correttamente DLL_PROCESS_ATTACH senza bloccare o crashare, perché un errore causerebbe il mancato avvio di servizi critici e renderebbe evidente la compromissione. Nel report finale al cliente vanno documentati gli hash della DLL, i timestamp delle modifiche di registry e la lista dei processi impattati.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.