Il y a quelques jours, en faisant défiler Twitter sans fin pour une sixième heure d’affilée, un gazouillis a retenu mon attention:
Moins de 150 $ et moins de 24 heures pour obtenir un accès administrateur à N’IMPORTE QUEL ordinateur où NetNTLMv1 est activé. À ce moment-là, votre EDR n’a plus d’importance. Si vous n’avez pas encore audité NTLM dans votre environnement, le meilleur moment, c’est maintenant.
(Je citerai mes sources si on me le demande, mais le compte est privé.)
— Tim McGuffin (@NotMedic) 18 avril 2024
Cela a piqué ma curiosité, mais restait juste assez vague pour que je ne sache pas trop par où commencer. Heureusement, en continuant à défiler, je suis tombé sur cet autre gazouillis:
J’ai fumé le crack
ça a fonctionné
je vide le dit en ce moment
netntlmv1 –> nt grâce à @Evil_Mog et à l’informatique moderne
Environ 20 heures avec 12 RTX 4090. Coût: 130 $
— IAMERICA (@EricaZelic) 18 avril 2024
J’avais enfin de quoi travailler! J’ai parcouru le fil d’EricaZelic (excellent compte, d’ailleurs, allez vous y abonner) et j’y ai trouvé les détails croustillants que je cherchais.
De quoi s’agit-il au fond?
En bref: grâce au service d’infonuagique de vast.ai, vous pouvez louer une configuration de cassage de mots de passe complètement démesurée, de 1 à 14 RTX 4090, et utiliser cette puissance de calcul pour casser n’importe quelle empreinte NTLMv1. Les coûts et les délais exacts varient selon le nombre de processeurs graphiques choisis, et selon la chance que vous aurez pendant le cassage, mais les tarifs se situent entre 35 cents et 8 dollars l’heure. Avec 14 RTX 4090, vous pouvez parcourir tout l’espace de clés en environ 24 heures.

Échantillon aléatoire des configurations offertes
Si vous évoluez depuis un certain temps dans le monde des tests d’intrusion internes et du red teaming, vous savez qu’il y a quelques années, crack.sh servait à cela. On lançait Responder avec le défi bien connu de crack.sh (1122334455667788), on récupérait l’empreinte, on la formatait, on l’envoyait à crack.sh et on recevait en retour l’empreinte NT correspondante.

Exemple de sortie de crack.sh
Malheureusement, crack.sh ne fonctionne plus: le service est en « maintenance » depuis au moins deux ans, sans signe de retour. Même à l’époque où il existait, l’un des inconvénients du défi 1122334455667788 était que, précisément parce qu’il est si connu, il déclenche beaucoup d’EDR et de NDR, ce qui peut poser problème, surtout pendant un exercice de red teaming.
Il existe bien sûr d’autres chemins d’attaque fondés sur le relais d’empreintes NTLMv1, et vous n’avez donc pas nécessairement besoin de casser cette empreinte pour réussir. Mais les autres mauvaises configurations nécessaires à ces chemins ne sont pas toujours présentes dans l’environnement où vous vous trouvez. Et si une empreinte NTLMv1 suffit à une victoire rapide, tant mieux!
Qu’est-ce que cela signifie?
Pour revenir au gazouillis initial: tout environnement qui utilise encore NTLMv1, et oui, cela reste très courant, peut être compromis en moins de 24 heures pour un coût très abordable. Ce ne devrait probablement pas être votre PREMIÈRE tentative: si vous pouvez éviter la dépense, évitez-la. Mais cela rend la chose bien facile. Une fois les chemins d’attaque habituels épuisés et après avoir tenté de casser quelques empreintes d’utilisateurs sur une machine moins puissante sans y arriver, il est temps de forcer le contrôleur de domaine en NTLMv1 à s’authentifier auprès de votre Responder, de récupérer l’empreinte du compte de machine et de l’envoyer au cassage. Ah oui, ai-je mentionné que vous n’avez même pas besoin de l’empreinte d’un utilisateur privilégié, comme un administrateur de domaine? Les empreintes de comptes de machine sont habituellement ignorées lors du cassage pendant un mandat, parce que ces mots de passe sont incroyablement longs et complexes. Mais quand on peut parcourir tout l’espace de clés en moins de 24 heures, cette limite disparaît.
D’accord, mais comment?
Je passe l’étape de l’obtention de l’empreinte, qui dépasse la portée de ce billet, mais en résumé: lancez Responder (rappelez-vous, vous n’avez même pas besoin du défi courant 1122334455667788), puis forcez le contrôleur de domaine à vous envoyer l’empreinte de son compte de machine. Il faut ensuite manipuler un peu cette empreinte, mais un excellent outil existe déjà pour cela, réalisé par le grand EvilMog: https://github.com/evilmog/ntlmv1-multi.
Le guide du dépôt GitHub est assez exhaustif et clair, je n’entrerai donc pas dans le détail du formatage, mais voici les grandes étapes:
1. Obtenir l’empreinte NTLMv1 du compte de machine

2. Utiliser l’outil NTLMv1 Multi pour obtenir l’empreinte dans un format hashcat 14000 utilisable

3. Conserver cette sortie, vous en aurez besoin.
vast.ai a été mentionné plus haut parce que c’est le service qu’a utilisé EricaZelic et qui a inspiré cet article, mais rien ne vous y oblige: n’importe quel service d’infonuagique avec processeurs graphiques fera l’affaire. Le but de cet article n’est pas de faire de la publicité, je n’entrerai donc pas dans la configuration d’un service en particulier. Ils se ressemblent tous: vous louez une instance, vous vous y connectez en SSH, vous installez vos outils (ici, hashcat) et vous faites votre travail.
4. Créez le fichier 14000.hash sur votre machine louée surpuissante à partir de la sortie de l’étape 2, copiez la commande hashcat fournie par l’outil Multi à l’étape 2, puis… attendez.
5. Vous obtiendrez éventuellement le résultat magique pour lequel vous avez fait tout cela:

6. Vous y êtes presque: convertissez les clés DES obtenues en NTLM, puis assemblez-les

7. Testez votre toute nouvelle empreinte de compte de machine et videz le ntds.dit (à titre d’exemple ici; libre à vous de procéder d’une manière plus discrète, ou de faire tout autre usage de l’empreinte):

Félicitations! Vous êtes maintenant administrateur de domaine.
