Credenziali GPP: Group Policy Preferences (T1552.006)
La tecnica T1552.006 sfrutta una debolezza storica di Active Directory: le Group Policy Preferences (GPP), introdotte con Windows Server 2008 per permettere agli amministratori di distribuire configurazioni e account locali attraverso policy di dominio. Il problema nasce dal fatto che le credenziali incluse in questi file XML vengono cifrate con una chiave AES-256 la cui chiave privata è stata pubblicata da Microsoft nella documentazione MSDN, rendendo di fatto banale la decifratura.
I file di policy risiedono nella condivisione SYSVOL del domain controller, accessibile in lettura a qualsiasi utente autenticato del dominio. Un attaccante che ottiene anche credenziali di basso privilegio può quindi enumerare i file Groups.xml, Services.xml, ScheduledTasks.xml, DataSources.xml, Printers.xml e Drives.xml per estrarre il campo cpassword e decifrarlo istantaneamente.
La tecnica appartiene alla tattica TA0006 (Credential Access) e rappresenta uno dei percorsi più veloci per ottenere credenziali privilegiate durante la fase post-exploitation, spesso conducendo a movimento laterale e privilege escalation di dominio. Sebbene Microsoft abbia rilasciato la patch KB2962486 nel 2014 per impedire la creazione di nuove GPP con credenziali, i file preesistenti restano nei SYSVOL di molte organizzazioni con eredità storica, mantenendo la tecnica rilevante. I dati MITRE censiscono 2 gruppi APT e 2 tool che sfruttano attivamente questa debolezza, con 3 mitigazioni ufficiali.
L'attacco a T1552.006 richiede un solo prerequisito: credenziali valide di dominio, anche non privilegiate. Una volta ottenuto un accesso interattivo o remoto a una macchina joinata, l'enumerazione della share SYSVOL è il punto di partenza.
Da una shell su host Windows joinato, il comando base è:
dir /s /b \\dominio.local\SYSVOL\dominio.local\Policies\.xml*
Oppure con PowerShell in forma più filtrabile:
Get-ChildItem -Path \\dominio.local\SYSVOL -Recurse -Include Groups.xml,Services.xml,ScheduledTasks.xml,DataSources.xml,Printers.xml,Drives.xml
Lo strumento di elezione in un red team engagement è PowerSploit (open source), che include il modulo Get-GPPPassword nel namespace Exfiltration. Dopo aver importato il modulo con Import-Module PowerSploit si invoca semplicemente Get-GPPPassword, che localizza automaticamente i file XML in SYSVOL, estrae il campo cpassword e restituisce la password in chiaro insieme al contesto (nome utente, path del file, changed date).
Da piattaforma Linux, il flusso equivalente parte da un'autenticazione SMB con smbclient (open source, incluso in Samba) o impacket-smbclient (open source). Il modulo di Metasploit Framework (open source) post/windows/gather/credentials/gpp automatizza l'intera catena su una sessione Meterpreter esistente. Per l'operatore che preferisce controllo granulare, CrackMapExec e il suo successore NetExec (open source) offrono il modulo --gpp-password che esegue enumerazione e decifratura da remoto:
nxc smb dc.dominio.local -u utente -p password -M gpp_password
Lo script Python gpprefdecrypt.py (open source) accetta la stringa cpassword estratta manualmente e restituisce il plaintext, utile quando si ha accesso al solo XML senza connettività al DC.
In scenari post-exploitation più stealth, il framework SILENTTRINITY (open source) espone un modulo dedicato all'estrazione delle GPP cached in memoria e su disco, evitando l'accesso diretto a SYSVOL che genera eventi di file access. BloodHound (open source) può quindi consumare le credenziali recuperate per identificare percorsi di escalation verso Domain Admin.
In laboratorio, la validazione richiede un DC Server 2008/2012 con almeno una GPO che imposta la password di un account locale via GPP — configurazione oggi bloccata su sistemi patchati ma riproducibile per training in ambienti isolati.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo