Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Internal-Monologue — Attaque par monologue interne : Récupération de hachages NTLM sans toucher à LSASS | Kitploit
Outils/GitHubGitHub/eladshamir/internal-monologue
Attaques de Mots de PasseMouvement LatéralPost-ExploitationTests d'IntrusionRed Teaming
GitHubeladshamir/internal-monologue

Internal-Monologue

Attaque par monologue interne : Récupération de hachages NTLM sans toucher à LSASS

Voir le dépôt
1.7k238il y a 7 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Attaque Monologue Interne : Récupération des hachages NTLM sans toucher à LSASS

Introduction

Mimikatz, développé par Benjamin Delpy (@gentilkiwi), est un outil de post-exploitation bien connu qui permet aux attaquants d'extraire les mots de passe en texte clair, les hachages NTLM et les tickets Kerberos de la mémoire, ainsi que d'effectuer des attaques telles que pass-the-hash, pass-the-ticket ou la construction d'un golden ticket. Sans conteste, l'utilisation principale de Mimikatz est la récupération des identifiants utilisateur depuis la mémoire du processus LSASS pour une utilisation dans les mouvements latéraux post-exploitation.

Récemment, Microsoft a introduit Credential Guard dans Windows 10 Entreprise et Windows Server 2016, qui utilise la sécurité basée sur la virtualisation pour isoler les secrets, et il est très efficace pour empêcher Mimikatz de récupérer les hachages directement depuis la mémoire. De plus, Mimikatz est devenu une cible privilégiée de la plupart des solutions de protection des terminaux, et elles sont très agressives dans leurs efforts pour le détecter et l'empêcher. Bien que ces efforts soient voués à l'échec, ils deviennent de plus en plus gênants.

NetNTLM

NetNTLM est le protocole de défi-réponse de Windows qui est principalement utilisé là où Kerberos n'est pas pris en charge. Dans NetNTLM, le serveur envoie au client un nonce aléatoire de 8 octets comme défi, et le client calcule une réponse qui traite le défi avec le hachage NTLM comme clé, qui est le hachage MD4 du mot de passe de l'utilisateur. Il existe deux versions du protocole d'authentification NetNTLM, et les deux sont vulnérables à certaines attaques. Naturellement, la version 1 est significativement plus faible que la version 2, et donc depuis Windows Vista/2008, la version 1 de NetNTLM est désactivée par défaut.

Pass the Hash

Parce que le hachage NTLM est la clé pour calculer la réponse, un attaquant n'a pas nécessairement besoin d'obtenir le mot de passe en texte clair de la victime pour s'authentifier, donc récupérer le hachage de la mémoire LSASS en utilisant Mimikatz équivaut presque à voler un mot de passe en texte clair. Chris Hummel a publié un article décrivant cette technique en 2009 et l'a nommée « Pass the Hash » [https://www.sans.org/reading-room/whitepapers/testing/crack-pass-hash-33219].

Diviser pour régner

À Defcon 2012, Moxie Marlinspike et David Hulton ont présenté une attaque « Diviser pour régner » contre NetNTLMv1 [https://www.youtube.com/watch?v=sIidzPntdCM]. Dans NetNTLMv1, le client reçoit le défi de 8 octets et calcule la réponse en le chiffrant trois fois en utilisant DES avec différentes parties du hachage NTLM comme clé. La longueur de clé pour DES est effectivement de 56 bits, soit 7 octets, tandis que le hachage NTLM fait 16 octets. NetNTLMv1 chiffre d'abord le défi en utilisant les 7 premiers octets du hachage NTLM comme clé, puis chiffre le défi en utilisant les 7 octets suivants du hachage NTLM comme clé, et enfin chiffre le défi en utilisant les 2 derniers octets du hachage NTLM complétés par des octets nuls comme clé. Effectivement, cela signifie que pour récupérer le hachage NTLM à partir d'un défi et d'une réponse NetNTLMv1, un attaquant doit casser deux clés DES de 56 bits, ce qui est exponentiellement plus facile que de casser une seule clé de 128 bits. Moxie et Hulton ont développé du matériel personnalisé pour cette tâche et ont pu forcer brutalement l'ensemble de l'espace de clés DES en moins de 24 heures, ce qui garantit la récupération réussie du hachage NTLM dans un délai raisonnable. Notez que contrairement aux attaques par dictionnaire ou par force brute contre le mot de passe, qui peuvent ne pas être fructueuses, cette attaque garantit la récupération réussie du hachage NTLM.

Tables arc-en-ciel

Comme démontré par ToorCon à https://crack.sh, il est possible de créer une table arc-en-ciel complète pour toutes les réponses NetNTLMv1 possibles à un défi choisi, tel que 0x1122334455667788, ce qui permet de casser le hachage NTLM pour une réponse donnée en quelques minutes. L'implication est que la capture d'une réponse NetNTLMv1 pour le défi choisi peut être traduite presque instantanément en hachage NTLM correspondant, ce qui équivaut presque à obtenir le mot de passe en raison du Pass the Hash.

Attaque de déclassement NetNTLM

Mimikatz est généralement exécuté après que l'attaquant a obtenu un accès élevé à la machine cible. À ce stade, l'attaquant peut également modifier les clés de registre, telles que LMCompatibilityLevel, qui spécifie si la machine doit négocier NetNTLMv1 ou NetNTLMv2. L'attaquant peut modifier la valeur à 0, 1 ou 2, ce qui active NetNTLMv1 en tant que client, puis essayer de s'authentifier à un serveur SMB malveillant qui capturera la réponse du client, comme décrit dans l'article du blog d'Optiv [https://www.optiv.com/blog/post-exploitation-using-netntlm-downgrade-attacks].

Attaque de déclassement NetNTLM étendue

Deux autres paramètres peuvent empêcher la victime de négocier une réponse NetNTLMv1 :

  1. NTLMMinClientSec - s'il est configuré sur « Exiger la sécurité de session NTLMv2 », la connexion échouera si le protocole NTLMv2 n'est pas négocié.
  2. RestrictSendingNTLMTraffic - s'il est configuré sur « Refuser tout », le client ne peut pas s'authentifier à un serveur distant avec NetNTLM, quelle que soit sa version. Similairement à l'attaque de déclassement NetNTLM, ces paramètres peuvent être modifiés si nécessaire. Notez que contrairement à LMCompatibilityLevel, ces paramètres ne sont pas configurés par défaut pour bloquer l'authentification NetNTLMv1.

Attaque Monologue Interne

Dans les environnements sécurisés, où Mimikatz ne doit pas être exécuté, un attaquant peut effectuer une attaque Monologue Interne, dans laquelle il invoque un appel de procédure locale au package d'authentification NTLM (MSV1_0) depuis une application en mode utilisateur via SSPI pour calculer une réponse NetNTLM dans le contexte de l'utilisateur connecté, après avoir effectué un déclassement NetNTLM étendu.

Le flux de l'attaque Monologue Interne est décrit ci-dessous :

  1. Désactiver les contrôles préventifs de NetNTLMv1 en modifiant LMCompatibilityLevel, NTLMMinClientSec et RestrictSendingNTLMTraffic avec des valeurs appropriées, comme décrit ci-dessus.
  2. Récupérer tous les jetons de connexion non réseau des processus en cours d'exécution et usurper l'identité des utilisateurs associés.
  3. Pour chaque utilisateur usurpé, interagir avec NTLM SSP localement pour obtenir une réponse NetNTLMv1 au défi choisi dans le contexte de sécurité de l'utilisateur usurpé.
  4. Restaurer les valeurs originales de LMCompatibilityLevel, NTLMMinClientSec et RestrictSendingNTLMTraffic.
  5. Casser le hachage NTLM des réponses capturées à l'aide de tables arc-en-ciel.
  6. Pass the Hash.

Mise à jour : Compatibilité Credential Guard

J'ai récemment retesté Monologue Interne dans des environnements avec Credential Guard activé et obtenu des résultats négatifs. Je ne suis pas sûr que Credential Guard fonctionnait correctement dans mon environnement de test lors des premiers tests, ou peut-être que quelque chose a changé depuis. J'ai mis à jour l'implémentation pour acquérir dynamiquement un jeton serveur depuis AcceptSecurityContext et le modifier pour éviter le piège d'authentification locale, de sorte que si NetNTLMv1 sans session de sécurité étendue échoue, au moins une réponse de défi-réponse NetNTLMv2 peut être capturée.

Piste d'audit

L'attaque Monologue Interne est sans doute plus furtive que l'exécution de Mimikatz car il n'est pas nécessaire d'injecter du code ou de vider la mémoire vers/depuis un processus protégé. Étant donné que la réponse NetNTLMv1 est obtenue en interagissant avec NTLM SSP localement, aucun trafic réseau n'est généré et le défi choisi n'est pas facilement visible. Aucun événement d'authentification NTLM réussi n'est enregistré dans les journaux. Les modifications du registre pour le déclassement NetNTLM et le vol de jetons/l'usurpation d'autres utilisateurs peuvent déclencher des indicateurs.

Preuve de concept

Cet outil est une preuve de concept qui implémente l'attaque Monologue Interne en C#. Le portage du code en PowerShell peut substituer certains journaux d'événements de la piste d'audit par d'autres. Le code de la preuve de concept est loin d'être parfait. Les contributions et améliorations positives sont les bienvenues.

Auteur

Elad Shamir de The Missing Link Security

Remerciements

  • Matthew Bush (3xocyte) de The Missing Link Security et Shaun Williamson (AusJock) de Beyond Binary pour avoir aidé à échanger des idées et à mettre cela en place
  • Moxie Marlinspike et David Hulton pour leur présentation « Defeating PPTP VPNs and WPA2 Enterprise with MS-CHAPv2 » à Defcon 20
  • Optiv pour l'attaque de déclassement NetNTLM
  • Bialek Joseph (clymb3r) pour Invoke-TokenManupilation
  • MWR Labs pour Incognito
  • Anton Sapozhnikov (snowytoxa) pour Selfhash
  • Tim Malcom Vetter (malcomvetter) pour plusieurs améliorations
  • Marcello Salvati (byt3bl33d3r) pour l'ajout de la bibliothèque DLL
Télécharger l’outil