Windows Privesc 101 : GPP et cPassword

Date de publication: 17/03/2019

Bonjour à toutes et à tous !

Depuis quelques semaines, plusieurs de mes lecteurs m’ont incité à produire plus d’articles “juteux” autour du pentesting. Étant sûrement mon domaine favori, je ne pu refuser !

Je vais donc aujourd’hui vous faire une courte introduction au Privesc (Privilege Escalation) sous Windows (plus précisément sous un environnement de domaine Windows). Cette idée m’a été fournie par un de mes professeurs de formation en Pentest (et sûrement mon préféré de l’année à voir nos TP haha). Après avoir abordé les notions essentielles du Pentest, mon professeur nous a mis donc mis en place un lab de test, visant à reproduire un schéma de domaine Windows minimal, comportant les points clés d’une telle infrastructure.

Durant ce TP, j’ai donc appris une manière très efficace d’élever mes privilèges en tant qu’utilisateur lambda d’un domaine (moi qui n’ai pas trop l’habitude de ce genre d’environnement, j’ai beaucoup appris!). Cette méthode est apparemment très efficace car la vulnérabilité utilisée est très commune dans les configurations de domaines actuelles.

Le point d’entrée

Pour les personnes ayant l’habitude de traiter avec des domaines Windows, vous avez déjà dû entendre parler d’Administrateur Local. Si ce n’est pas le cas, voici un petit rafraîchissement.

Un administrateur système a la possibilité de créer et de déployer un utilisateur nommé “Administrateur Local” sur les machines de son entreprise. Comme son nom l’indique, cet utilisateur a les droits administrateurs sur la machine, ce qui est très intéressant pour n’importe quel petit malin ayant accès à un compte du domaine. (mouhahaha)

Afin de ne pas à avoir à configurer ce compte spécial sur tous les PC composants le réseau d’entreprise, un administrateur système peut appliquer une GPO (Règle d’administration Windows) permettant de déployer automatiquement ce compte sur les ordinateurs du domaine. Heureusement pour nous (et malheureusement pour notre cher admin système) cette GPO est accessible depuis le réseau. Ce fichier inclue le mot de passe de l’Administrateur Local sous forme chiffrée.

Si le mot de passe est chiffré, il est impossible d’y accéder en clair, non ?

En temps normal la réponse aurait été oui… Mais grâce à la magie d’internet, nous savons que Microsoft chiffre tous ces mots de passe avec la clé statique connue ci-dessous

4e 99 06 e8  fc b6 6c c9  fa f4 93 10  62 0f fe e8
f4 96 e8 06  cc 05 79 90  20 9b 09 a4  33 b6 6c 1b

Vous voyez où je veux en venir ? :)

L’exploitation

Le fichier contenant le mot de passe Administrateur Local est la plupart du temps stocké dans un fichier nommé “Groups.xml”. Ce fichier est stocké dans un répertoire partagé du contrôleur de domaine et tout utilisateur authentifié du domaine dispose d’un accès en lecture à ces fichiers, car il est nécessaire pour obtenir des mises à jour de la stratégie de groupe.

Pour ce faire, une petite visite sur le contrôleur de domaine suffit ! N’hésitez pas à fouiller, vous finirez par trouver ! Une fois trouvé et ouvert, le fichier ressemble à ceci: Source : pentestlab

Le champ intéressant ici est le “cpassword”. Copiez-le sur votre machine, et finissons le travail ! :D

Le bouquet final

Afin d’accéder au mot de passe en clair, je vous propose 2 solutions :

Source : pentestlab

Conclusion

Afin d’éviter que de petits malins s’attaquent à votre réseau de cette manière, vous aurez compris que l’utilisation de GPP est une mauvaise idée (Microsoft a d’ailleurs classé cette pratique comme deprecated depuis pas mal de temps…).

Si vous souhaitez aller plus loin et tenter de gagner accès au compte d’Administrateur du contrôleur de domaine, je vous conseil d’utiliser Mimikatz pour extraire les mots de passe en mémoire sur la machine contrôleur de domaine grâce au compte Administrateur Local… Mais chut ! Je ne vous ai rien dit ! :P

Voilà c’est déjà fini ! Si cet article vous a plu, n’hésitez pas à me le dire sur Twitter ou même par Mail si vous avez une question !