Vous êtes sur le site public du Cert-IST

L’alerte CERT-IST/AL-2019.007 a été mise à jour suite à la publication et à l’intégration dans un module MetaSploit du code d’exploitation de la vulnérabilité RDP des systèmes Microsoft Windows (CVE-2019-0708 / #bluekeep).

Protéger les mots de passe Windows

Date :02 Août 2007

Publication: Article

Au cours d'une investigation sur incident réalisée récemment par le Cert-IST pour l'un de nos adhérents, il a été identifié que le mot de passe d'un administrateur Windows avait été volé, puis utilisé pour accéder illégalement aux ressources de l'entreprise. La question légitime qui découla alors de ce constat  fut : "Comment peut-on se faire voler son mot de passe Windows ?".

Comme ce sujet nous a paru intéressant à mutualiser, nous reprenons notre réponse sous forme de cet article du bulletin Cert-IST.


1) "LanManager" et "NTLM v1" : talons d'Achille de la sécurité Windows

 1.1) Les protocoles d'authentification de Windows

Historiquement Windows a utilisé plusieurs protocoles d'authentification :

  • LanManager (seul protocole d'authentification possible en standard sous Windows 95 et 98)
  • NTLM (introduit sous Windows NT4)
  • NTLM-V2 (introduit par le SP4 de NT4)
  • Kerberos (introduit par Windows 2000)

Nota : Ces protocoles sont utilisés lorsque l'authentification transite par le réseau (par exemple lorsqu'un utilisateur se connecte sur un compte de domaine). Dans le cas d'une authentification locale (un utilisateur se connecte à la console sur un compte local), ils n'interviennent pas.

Depuis Windows 2000, le protocole d'authentification par défaut à l'intérieur d'un domaine est "Kerberos". Pour les authentifications hors domaine NTLM-V2 devrait-être utilisé. Malheureusement pour des raisons de compatibilité, les versions les plus récentes de Windows acceptent toujours, par défaut, les  protocoles d'authentification antérieurs.

1.2) Les faiblesses de "LanManager" et "NTLM v1"

 Les protocoles "LanManager" et "NTLM v1" ne sont pas sûrs et sont aujourd'hui totalement obsolètes d'un point de vue sécurité. En particulier, en écoutant les échanges faits entre le serveur et le client lors d'une authentification, il est possible avec ces protocoles de capturer l'empreinte du mot de passe de l'utilisateur (voir la référence [3] donnée en fin d'article).  Cette empreinte capturée existe sous deux formats dans le monde Windows :

  • le format propre à "LanManager" : on parle alors d'empreinte "LM".
  • le format "NT" : on désigne souvent cette empreinte sous le nom d'empreinte "NTLM", mais (pour éviter la confusion entre les formats d'empreinte et le protocole d'authentification) nous utiliserons la dénomination d'empreinte "NT".

L'empreinte "LM" n'est pas cryptographiquement robuste : si cette empreinte est capturée, il est possible de découvrir le mot de passe de l'utilisateur, quelque soit la complexité de ce mot de passe. Ce "cassage" du mot de passe peut être réalisé :

  • par force brute (essai de tous les mots de passe possible). Le temps estimé (cf. [1]) pour "casser" un mot de passe de 8 caractères est de 6 jours sur un ordinateur ordinaire.
  • ou en utilisant  une "rainbow table" (cf. l'article Cert-IST écrit en 2003 sur ce sujet). Le temps de cassage est alors de moins d'une heure (cf [1]), avec une "rainbow table" d'une taille de l'ordre de 50 Go.

Nota : L'empreinte "NT" quant à elle est actuellement considérée comme sûre : si l'utilisateur choisit un bon mot de passe, la probabilité que son mot de passe soit découvert est aujourd'hui très faible (en disposant d'une puissance de calcul classique).

Cependant, cette empreinte n'utilisant pas de diversifiant (le "diversifiant" est un "sel" qui permet d'éviter que deux utilisateurs ayant choisi le même mot de passe aient tous les deux la même empreinte), elle pourrait théoriquement être aussi attaquée avec un technique de type "rainbow table". Les "rainbow tables" disponibles actuellement pour NTLM ne sont pas assez puissantes pour être opérationnelle (cf. [6]).

 
Ces faiblesses des protocoles "LanManager" et "NTML" font que, quelque soit la politique de sécurité de l'entreprise (sauf dans le cas où cette politique impose un mot de passe d'au moins 15 caractères, ce qui force alors Windows à ne plus utiliser "LanManager"), les mots de passes des comptes Windows ne seront pas sûrs et pourront être volés. Hors, pour des raisons de compatibilités, ces protocoles obsolètes sont toujours supportés par défaut sur Windows NT4, 2000, XP et 2003. Par exemple, un serveur Windows 2003 installé par défaut :

  • accepte d'utiliser les protocoles d'authentifications "LanManager" et "NTMLv1"
  • et stocke dans sa base de compte (Active Directory ou SAM) les empreintes "LM" des comptes (en plus des empreintes "NT").


1.3) Comment se protéger ?

Pour se protéger contre ces faiblesses, il est impératif de configurer les postes clients et les postes serveurs pour :

  • refuser d'utiliser une authentification plus ancienne que "NTLM-V2"
  • ne pas stocker les mots de passe chiffrés (dans la base SAM ou l'Active Directory) sous forme de hash "LM"

Nota : Ces règles de configuration sont impossibles à mettre en œuvre sur des configurations antérieures à Windows 2000 SP2 (et donc en particulier rendent impossible l'interopérabilité avec d'éventuels postes Windows 98). Ces règles de configuration sont incluses dans les  guides de sécurisation publiés par Microsoft depuis 1998 (cf. [2])

Pour obtenir les détails de mise en œuvre de ces recommandations, voici les URL appropriés dans la base de connaissance de Microsoft :

Nota : les règles de bonne configuration recommandent que le paramètre "LmCompatibilityLevel" soit positionné à "5" (la plus haute valeur disponible). Reportez vous au paragraphe "What breaks when I change the LMCompatibilityLevel?" de [1] pour connaitre les effets de bord connus de ce type de configuration.

  • Refuser de stocker les mots de passe chiffrés sous forme d'empreint "LM" :

 

 
2) Comment voler les mots de passe Windows ?

Nous avons vu au début de cet article que dans certains cas le mot de passe de l'utilisateur pouvait être capturé par une écoute réseau (écoute des échanges "LanManager" ou "NTML"). Cette méthode n'est cependant pas la plus simple et il nous parait donc utile de passer en revue les techniques d'attaques connues pour mieux mesurer les dangers potentiels auxquels les mots de passe Windows sont exposés.

2.1) Voler les mots de passe sur la machine :

Si l'attaquant dispose d'un accès physique à une station Windows, il peut voler les "empreintes" ("LM" et "NT") qui sont présentes sur cet ordinateur :

  • soit  en redémarrant celui-ci au moyen d'un outil spécial (par exemple un "live-CD" comme "BackTrack").
  • soit  en installant un outil spécialisé (typiquement l'outil "PWDUMP") sur la machine en fonctionnement, en tant qu'administrateur (ce droit est nécessaire).

Nota : La protection "SysKey" qui avait pour objet de protéger contre l'attaque "à froid" (cas ou l'on redémarre la machine), peut désormais être considérée comme obsolète, puisqu'elle est facilement contournée.

Les empreintes récupérées par ces deux méthodes correspondent aux comptes déclarés en local sur l'ordinateur attaqué (empreintes extraites de la SAM), ou éventuellement aux comptes de domaine, si la machine attaquée est celle qui héberge l'Active Directory. Si ces empreintes sont au format "LM", elles pourront être cassées facilement quelque soit la complexité des mots de passe. Par contre, une empreinte "NT" est aujourd'hui considéré comme sûre : il sera difficile de la casser si le mot de passe du compte est complexe.


Il existe aussi sur les postes de travail un "cache" des connexions récentes qui contient l'empreinte pour les dix dernières connexions sur un compte de domaine (ce qui permet par exemple de se connecter sur le poste même si l'ordinateur n'est pas connecté au réseau). Dans ce cas, l'empreinte stockée dans le cache est dérivée de l'empreinte "NT" (elle est construite en calculant le MD4 de l'empreinte "NT" concaténée au nom du compte). Elle est donc plus difficile à "casser" qu'une empreinte "NT" (puisque cette fois elle est "salée" avec le nom du compte). Cette empreinte extraite du cache est donc aujourd'hui considérée comme sûre : il sera difficile de la casser si le mot de passe du compte est complexe.


On le voit donc, l'empreinte "LM" est vraiment ici le maillon faible et donc une donnée très "appréciée" par les attaquants. Dans le cas où l'attaquant ne dispose que de l'empreinte "NT", il est probable qu'il fera simplement quelques essais pour casser l'empreinte (pour le cas où le mot de passe ne serait pas assez complexe). Si ces essais ne réussissent pas, il a en effet encore la possibilité d'utiliser l'empreinte sans la casser. Cette technique dépassant le cadre de notre article, nous ne l'approfondirons pas ici.


2.2) Voler les mots de passe circulant sur le réseau :

Cette attaque consiste à mettre un "sniffer" en écoute sur le réseau et à capturer les échanges faits lors d'une authentification. Comme nous l'avons vu, cette attaque est tout à fait réaliste dans les cas où des authentifications "LanManager" ou "NTLMv1" sont  utilisées. Elle est cependant plus complexe qu'un vol direct sur la machine (tel que vu au paragraphe précédent).

Quand "NTLMv2" et "Kerberos" sont utilisés, le vol de l'empreinte du mot de passe sur le réseau est à notre connaissance impossible.


2.3) Forcer un poste client à transmettre une empreinte "LM" :

Une dernière approche d'attaque consiste à attirer l'utilisateur vers un serveur qui est sous le contrôle de l'attaquant. Ce serveur peut-être un nouveau serveur qui offre des partages disques accessibles pour les visiteurs ou, dans certains cas, un serveur qui se fait passer pour un serveur officiel de l'entreprise (par exemple en répondant plus vite que le serveur, ou en réalisant des attaques ARP). Dans ce cas, le serveur pirate va demander au client qui tente de se connecter d'utiliser un protocole d'authentification faible (typiquement "LanManager") et pourra, une fois l'empreinte du mot de passe envoyé par le client, tenter de la casser. Dans le cas d'une empreinte "LM", le taux de réussite est de 100%. Ce qui rend ce type d'attaque très attractif pour l'attaquant.


2.4) Les autres manières :

Les attaques que nous avons présentées ici se limitent à attaquer les mots de passe gérés par le système Windows. Il faut être conscient qu'il existe d'autres moyens (souvent plus simple) de voler un mot de passe :

  • Voler des mots de passe moins bien protégés que ceux de Windows, en espérant que le mot de passe Windows soit le même. Par exemple, les mots de passe de messagerie ou de proxy web sont généralement mal protégés. L'outil "Abel et Cain" (qui est l'outil de cassage de mot de passe le plus évolué actuellement, cf. [5]) intègre un module "sniffer" capable d'espionner 25 protocoles différents (types, "telnet", "ftp", "pop3", "vnc", etc…)
  • Déposer un "keylogger" sur le poste.

 

3) Conclusion

Dans les environnements ayant respecté les règles de bonnes configurations décrites en première partie de cet article (suppression de l'empreinte "LM" et interdiction des protocoles antérieurs à "NTLMv2"), le vol des mots de passe Windows pour un compte de domaine est à priori impossible, si les recommandations suivantes sont appliquées :

  • Les mots de passe choisis par les utilisateurs sont complexes (pour résister à des attaques par dictionnaires).
  • Ces mots de passe ne sont pas également utilisés dans des environnements moins protégés. Par exemple il n'est pas souhaitable d'utiliser pour son compte de domaine le même mot de passe que pour un compte local (un compte local est plus facile à voler car la compromission d'un poste utilisateur est très souvent beaucoup plus facile que la compromission d'un contrôleur de domaine) ou que le mot de passe de messagerie (qui est souvent enregistré sur le poste de travail).


Pour plus d'information