Pass the Hash

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


Si vous avez lu l’article sur l’authentification NTLM alors vous savez que lors de cette authentification, aucun mot de passe n’est stocké ou envoyé sur le réseau en clair. Cependant, et ce pour éviter à l’utilisateur de s’authentifier à chaque fois qu’il veut accéder à une ressource, un dérivé de ce mot de passe est stocké dans la mémoire du processus LSASS (Local Security Authority Subsystem). Ce dérivé, c’est le hash NTLM.

D’ailleurs pour la petite information, un hash NTLM est créé grâce à l’algorithme MD4 :

import hashlib,binascii
hash = hashlib.new('md4', "mon_mot_de_passe".encode('utf-16le')).digest()
print binascii.hexlify(hash)

Ou est ce que je veux en venir ? Eh bien c’est simple. Dans un domaine Active Directory, que vous disposiez du mot de passe en clair d’un utilisateur ou du hash NTLM de ce même mot de passe revient strictement au même.

Par conséquent si un attaquant réussit à dumper le contenu de la mémoire du processus LSASS, il pourra en extraire les hash des utilisateurs et ainsi usurper leurs identités grâce à l’attaque dites du « Pass the Has ».

I/ Pass the Hash

Imaginez un scénario simple. Un attaquant réussit à prendre le contrôle d’une machine Windows et à élever ses privilèges au point d’être Administrateur de la machine. Il peut donc dumper la mémoire du processus LSASS dans laquelle se trouve les hash NTLM.

Pour cela il pourra se servir du célèbre outil Mimikatz créé par Benjaming Delpy. Son utilisation est assez simple (du moins pour ce que nous voulons en faire) et ce fait dans une console interactive que l’on pourra démarrer en exécutant :

mimikatz.exe

5.png

Dans un premier temps nous allons modifier les privilèges du processus Mimikatz afin que celui-ci puisse accéder à la mémoire du processus LSASS. Pour rappel, il n’est normalement pas possible pour un processus d’accéder à la mémoire d’un autre processus.

Si vous êtes administrateur de la machine: il faudra élever les privilèges du processus Mimikatz afin que celui-ci ait le droit d’accéder à la mémoire du processus LSASS. Pour cela on utilisera la commande suivante :

privilege::debug

3.png

Si tout s’est bien passé, vous devriez obtenir la réponse suivante :

Privilege '20' OK

Si vous êtes NT autorite\system: vous n’aurez pas à élever les privilèges du processus puisque de base les processus lancés par NT autorite\system ont le droit d’accéder à absolument tout ce qu’ils veulent.

A noter quand même que depuis un compte administrateur local, on pourra monter en privilège en utilisant l’utilitaire psexec :

psexec -s -i cmd.exe

Une fois que nous disposons des privilèges nécessaires nous allons pouvoir dumper la mémoire du processus LASSS et ainsi récupérer les hash NTLM via cette commande :

sekurlsa::logonpasswords

Voici une partie du résultat :

5.png

Là, nous venons de toucher le jackpot ! En effet, un administrateur du domaine s’est connecté sur cette machine et nous venons donc de dumper son hash NTLM ce qui veut dire que nous alors pourvoir exécuter des commandes en tant qu’administrateur du doamine !

Pour cela plusieurs outils existent dont CrackMapExec publié par Byt3bl33d3r. Une fois l’outil installé il nous suffira d’entrer cette commande :

crackmapexec smb 192.168.0.34 -u Administrateur -H 6046097b49807f7c9bb9280ebad155d5 -x "net user"

Pour exécuter des commandes sur le DC en tant qu’administrateur du domaine :

5.png

Ici j’ai simplement affiché les utilisateurs existant mais on aurait très bien pu se créer un compte d’administrateur du domaine pour se connecter sur le DC et drop NTDS.dit par exemple 😈 !


Conclusion, en pownant une seule machine, nous venons de compromettre un Active Directory entier !

Un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s