Persistenza via Active Setup: Boot or Logon Autostart Execution - Active Setup (T1547.014)
Active Setup è un meccanismo legacy di Windows nato per consentire l'esecuzione di componenti one-time al primo logon di ogni utente, tipicamente sfruttato da Internet Explorer e da altri componenti di sistema per completare l'inizializzazione del profilo utente. Il funzionamento è semplice: il sistema confronta le chiavi presenti in *HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components* con quelle in *HKCU\Software\Microsoft\Active Setup\Installed Components* e, se la versione HKLM è superiore o mancante lato utente, esegue il comando specificato nel valore StubPath.
Gli attaccanti abusano di questo comportamento aggiungendo una chiave sotto il ramo HKLM con uno StubPath malevolo che punta a un payload arbitrario. Al successivo logon di qualsiasi utente, il codice viene eseguito nel contesto dell'utente stesso, ereditando i suoi privilegi. Questo colloca la tecnica a cavallo tra Persistence (TA0003) e Privilege Escalation (TA0004): se un amministratore effettua il logon dopo che la chiave è stata piantata, il payload gira con quei privilegi.
La scrittura sotto HKLM richiede diritti amministrativi, ma il vantaggio operativo per l'attaccante è considerevole: la persistenza è machine-wide, sopravvive ai riavvii, non compare nei classici Run/RunOnce controllati da Autoruns con configurazione base, e può essere mascherata (Masquerading) con nomi GUID che imitano componenti Microsoft legittimi. Nell'inventario MITRE è documentato l'uso da parte del RAT PoisonIvy (S0012), che crea proprio una chiave Active Setup puntando al proprio eseguibile.
In un esercizio red team, l'abuso di Active Setup si presta a scenari di persistenza post-exploitation dove si dispone già di privilegi amministrativi locali (via bypass UAC, credential theft o token impersonation). L'operazione richiede una singola scrittura di registro e un file eseguibile sul disco (o un LOLBin che carichi payload in memoria).
La struttura minima è una sottochiave con GUID sotto il percorso Active Setup di HKLM. Da PowerShell elevato:
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components{5A7B0E4F-1D2C-4E3F-9A8B-000000000001}" -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components{5A7B0E4F-1D2C-4E3F-9A8B-000000000001}" -Name "StubPath" -Value "C:\ProgramData\upd\agent.exe" -PropertyType String
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Active Setup\Installed Components{5A7B0E4F-1D2C-4E3F-9A8B-000000000001}" -Name "Version" -Value "1,0,0,0" -PropertyType String
È buona prassi impostare anche un valore (Default) che imiti un nome di componente Microsoft, per far apparire la chiave come parte di un update legittimo. Per aumentare la stealth si usa GUID mai visto in baseline aziendale e si punta StubPath a un binario firmato che carica una DLL side-loaded, invece che a un PE grezzo scritto dall'operatore.
Alternativa living-off-the-land, sostituendo il valore StubPath con:
rundll32.exe C:\ProgramData\upd\helper.dll,EntryPoint
oppure con un powershell.exe -w hidden -enc
Sul fronte tooling, Metasploit Framework (open source) fornisce moduli di persistence generici che possono essere adattati, mentre Empire/Starkiller (open source) include moduli di persistence via registry. Per operazioni più mirate, SharPersist di FireEye/Mandiant (open source) implementa esplicitamente il modulo Active Setup con il flag -t activesetup, gestendo GUID, StubPath e Version in un unico comando. Impacket (open source) permette di eseguire la scrittura remota via reg.py o tramite WMI su host già compromessi.
Per validare la persistenza senza aspettare un logon reale, in laboratorio è sufficiente disconnettere la sessione utente (logoff) e ricollegarsi: se il Version HKLM è superiore a quello HKCU (o quest'ultimo assente), userinit.exe eseguirà lo StubPath. Ricordarsi che l'esecuzione avviene una sola volta per utente finché la Version non viene incrementata: per re-trigger basta bumpare il valore.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo