Ce billet n'avait été publié qu'en anglais. Nous l'avons traduit en 2026 pour que les archives se lisent dans les deux langues. Lire l'original →
Après avoir vu passer un tweet sur l'extraction des hashes de mots de passe d'un contrôleur de domaine Windows 2008 en fonction, j'étais intrigué. En lisant un billet de Tim Tomes (LaNMaSteR53), je me suis dit que j'allais essayer et, si ça marchait, montrer mes résultats (avec des images). C'est une méthode ingénieuse pour récupérer les valeurs des hashes. Cette attaque tombe dans la catégorie « post-exploitation », d'autant plus qu'il faut des privilèges d'administrateur ou système.
D'abord, on va avoir besoin de quelques affaires pour partir le tout. VSSOwn est un excellent script créé par Tomes et Mark Baggett. En gros, il va nous aider à créer une copie shadow (volume shadow copy) du disque du contrôleur de domaine Windows, d'où on va extraire les fichiers NTDS et SYSTEM. Oui, vous avez bien lu, on va aller chercher ce dont on a besoin dans VSS. Sur Windows 2008 et 7, cette fonctionnalité est toujours activée par défaut. Elle prend périodiquement des sauvegardes du disque système, ce qui inclut aussi NTDS, SYSTEM et les fichiers SAM. VSSOwn a d'autres fonctionnalités intéressantes; je vous recommande fortement d'aller voir la présentation de Tomes et Baggett à Hack3rcon 2.
Deuxième item sur notre liste : un autre outil pour récupérer les hashes une fois qu'on aura nos fichiers système. Csaba Barta, un chercheur hongrois, a développé un outil open source pour parser les fichiers NTDS.dit. Pour l'instant, son outil semble seulement fonctionner avec les fichiers NTDS de contrôleurs de domaine 32 bits. C'est pour ça que notre cible est un Win2008 R1. Espérons qu'il ajoute le 64 bits bientôt. L'outil roule sur Linux et s'installe très bien sur BackTrack 5. Notre épicerie étant faite, on peut maintenant passer à la récupération de nos hashes de mots de passe.
On va sauter l'exploitation du contrôleur de domaine et simplement imaginer que tout le monde dans notre organisation a oublié son mot de passe en même temps à cause d'un punch de Noël vraiment fort (hé! Ça peut arriver). Jetons un coup d'œil à notre machine cible.
On voit un Windows 2008 Standard Edition avec le Service Pack 2 installé. On remarque aussi quelques comptes de domaine. Après avoir téléversé VSSOwn sur notre serveur, on lance vssown.vbs avec la commande « cscript ». Comme c'est un outil en ligne de commande, ce ne serait pas une bonne idée d'utiliser « wscript ». On commence par créer une copie shadow du système.
Une fois l'invite de commande revenue, vous pouvez vérifier les copies shadow avec l'option « /list ». On aurait pu utiliser la commande « VSSADMIN », mais c'est juste plus simple comme ça. Il est maintenant temps de copier les fichiers système à partir de cette copie shadow.
Avec l'option « /list », on prend en note le chemin de la copie. Dans ce cas-ci, c'est « \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3 ». À partir de là, c'est aussi simple que de copier un fichier à l'invite de commande. On ajoute « windows\ntds\ntds.dit » et « \windows\system32\config\SYSTEM » au chemin de l'objet de périphérique et on copie.
On transfère ensuite ces 2 fichiers (si vous copiez le fichier SAM, vous pouvez obtenir les comptes locaux) sur notre machine Backtrack. On télécharge et installe l'outil de Barta avec configure et make. Puis on se rend dans le dossier esedbtools pour lancer le processus.
On lance le script en lui donnant comme paramètre l'emplacement du fichier NTDS.dit et, en appuyant sur Entrée, on devrait être récompensé par quelque chose de semblable.
Ça va avoir créé un dossier « ntds.dit.export » contenant un fichier appelé « datatable ». On va avoir besoin de ce fichier pour extraire les hashes. On descend dans le dossier creddump et on lance le script python dsdump comme ceci.
Et voilà. Il ne reste plus qu'à sortir un craqueur de mots de passe et un peu de patience.
Faisons un fichier avec cette sortie pour que « Hashcat » puisse mieux le digérer.
Pourquoi Hashcat n'a-t-il pas trouvé tous les mots de passe? Honnêtement, je ne le sais pas, mais si vous comparez les valeurs des hashes avec l'image plus haut, Admisnistrator et kioptrix ont été trouvés.
Voilà. Il est maintenant possible de récupérer les mots de passe des utilisateurs après une brosse mémorable. Encore une fois, ça fonctionne seulement en 32 bits et esedbdumphash va cracher une erreur si vous essayez de le rouler sur autre chose. J'ai envoyé à Csaba Barta un fichier .dit provenant d'un serveur de test 64 bits. Espérons qu'il en tire quelque chose.
Je vous suggère fortement d'aller voir aussi les sites cités en référence ci-dessous. VSSOwn a quelques autres fonctionnalités bien cool.
J'espère que vous avez aimé la lecture.
loneferret
Références :
Présentation de Tomes et Baggett : http://www.irongeek.com/i.php?page=videos/hack3rcon2/tim-tomes-and-mark-baggett-lurking-in-the-shadows
Code de VSSown : http://lanmaster53.com/wp-content/uploads/tools/vssown.vbs
Ntds_hash_dump : http://csababarta.com/downloads/ntds_dump_hash.zip
Billet de Pauldotcom : http://pauldotcom.com/2011/11/safely-dumping-hashes-from-liv.html