Pass The Hash : back to basics

Pour attaquer un réseau d’entreprise, il existe plusieurs techniques classiques : man in the middle, GPO abuse, kerberoasting, et celle qui nous intéresse ici : le Pass The Hash.
Cette attaque a pour but – dans l’idéal – de récupérer un accès à de nombreuses ressources, aussi bien sur les postes de travail que sur les serveurs et comptes d’administration.
Nous allons donc voir dans un premier temps le fonctionnement (d’une partie) du protocole NLTM, qui rend cette exploitation possible, puis le fonctionnement de l’attaque dans un second temps.

Protocole NTLM

Avant de commencer à rentrer réellement dans la technique, il est nécessaire de faire un point rapide sur l’intérêt et l’utilisation de ce protocole.

Un peu d’histoire

Lorsque deux machines veulent échanger des informations, elles ne font pas uniquement un échange de données : elles peuvent également – et fort heureusement – demander une authentification, afin de valider que l’origine de la demande soit légitime.
Il existe de nombreuses manières de valider la légitimité d’un poste : l’adresse IP source, l’utilisation d’identifiants web, un système de PKI, du 802.1X, etc.
Au fil des ans, Microsoft a compris qu’il lui était nécessaire de créer un protocole permettant d’unifier l’authentification dans un environnement Windows, et a donc développé New Technology Lan Manager : NTLM.

Le fonctionnement de ce protocole est simple, et suit le principe suivant :
– un client souhaite échanger des informations avec un serveur
– le serveur demande une authentification au client, afin de valider l’accès aux données
– le client envoie donc une preuve de sa légitimité, de manière sécurisée
– le serveur valide cette preuve et autorise le client.

Etant intégré à Windows, il permet à de nombreux outils et services tiers d’utiliser ce protocole, afin de simplifier le processus d’authentification (partage réseau, FTP, etc.).

Fonctionnement technique du Pass The Hash

Le lecteur attentif aura remarqué dans le paragraphe précédent l’utilisation du terme « de manière sécurisée ».
Lors de la définition du protocole, Microsoft a mis en place un mécanisme permettant de valider l’authentification sans que le mot de passe du client soit envoyé directement sur le réseau, pour deux raisons :
– premièrement, éviter toute interception du mot de passe sur le réseau, ce qui permettrait à un attaquant de voler un compte,
– deuxièmement, pour une raison plus pragmatique, le serveur ne connait pas le mot de passe du compte demandant l’authentification, mais uniquement son hash1, il est donc inutile d’envoyer le mot de passe en clair.

Ainsi, les ingénieurs Microsoft ont utilisé le principe de « Challenge/Response » pour authentifier le client. Celui ci est simple à comprendre et se définit comme suit :
– le client envoie une demande d’authentification au serveur
– le serveur va envoyer au client un « challenge » : une chaine de caractères générée aléatoirement
– le client, à la réception du challenge, va calculer une réponse du type hash(challenge+hashed_pass)2 et l’envoyer au serveur
– le serveur, à la réception de la réponse va effectuer la même opération et vérifier si la réponse du client est identique. Si oui, le serveur valide l’authentification. Sinon, il la rejette.
L’échange peut donc se résumer de la manière suivante :

 

Authentification NTLM pass the hash

Authentification NTLM

 

Ce fonctionnement permet ainsi de valider la légitimité du client sans pour autant utiliser le mot de passe en clair.
Un fois cet échange effectué, le client possède donc l’autorisation de se connecter au serveur.

Un attaquant qui serait en position de MITM (Man In The Middle) pourrait donc voir l’échange entre le client et le serveur. Cependant, le fait d’utiliser le principe de challenge/response lui bloque par défaut les attaques par rejeu, c’est à dire le fait de renvoyer le paquet tel quel pour revalider l’authentification, comme montré ci dessous.

 

Tentative de rejeu pass the hash

Tentative de rejeu

 

En effet, comme le challenge envoyé par le serveur est différent à chaque demande d’authentification, envoyer une réponse d’une authentification précédente ne peut pas fonctionner.
De ce fait, l’authentification étant unique et ne contenant pas de mot de passe, il est impossible pour un attaquant de voler l’accès d’un utilisateur.

L’attaque en mode Pass The Hash

Un attaquant en écoute sur le réseau ne pourra effectivement pas récupérer directement de mot de passe. En voyant un échange de ce type, il serait uniquement possible d’effectuer une attaque par force brute sur le hash envoyé par le client : l’attaquant est en possession du challenge, et du HASH (CHALLENGE+<HASH_PASS>). Grâce à des outils, il peut donc tenter de retrouver le mot de passe en clair. Cela dit, le temps de calcul étant directement proportionnel à la complexité du mot de passe, cette attaque n’est pas toujours couronnée de succès.

Cependant, dans certains cas, une attaque bien plus simple est possible : prenons le cas classique d’un employé.
Il possède un poste de travail , fourni par le HelpDesk, avec une version de Windows à jour, installée grâce à une image Master : une configuration plus que classique en entreprise.
Cet employé est malheureusement malveillant. Il pourra donc, grâce à diverses techniques « basiques » (boot sur un live CD, élévation de privilèges, etc.) lire le fichier SAM qui contient les données des utilisateurs locaux de cette machine : ID de connexion, nom d’utilisateur et… hash du mot de passe. Evidemment, on trouve plusieurs utilisateurs dans cette liste, dont l’administrateur local.
Pas de chance pour l’entreprise, elle a choisi d’utiliser un Master afin de faciliter la création de nouveaux postes, ce qui signifie donc que chaque poste possède le même mot de passe d’administrateur local. Et donc le même hash.

Si vous avez compris le fonctionnement de l’authentification NTLM, vous voyez donc où est le problème : peu importe la complexité du mot de passe d’administrateur local, puisque l’employé malveillant possède son hash, qui est le même pour tous les postes (ceux des collègues, de la DSI, de la direction, etc.). Il est donc de facto en mesure de demander une authentification à un serveur et d’effectuer le calcul nécessaire. Et donc de se connecter en tant qu’administrateur sur tout le parc informatique.

Employé malveillant

Employé malveillant

Les conséquences sont donc potentiellement dramatiques. On pourra citer quelques exemples :
– connexion aux postes de la direction pour vol de données,
– connexion aux postes de la DSI, qui possèdent les clés informatiques de l’entreprise,
– installation de malwares sur tout le parc,
– élévation de privilèges en volant d’autres comptes ayant des droits élevés.

Evidemment, l’exemple défini ici n’est pas le seul cas d’attaque imaginable. D’autres cas d’usage sont possibles et peuvent permettre à un attaquant d’obtenir un accès privilégié. Cependant, l’idée est ici de comprendre le principe d’une attaque Pass The Hash et non de lister exhaustivement le champ des possibles.

Conclusion

Si vous êtes dans cette situation, et c’est plus que probable, il est inutile de courir vers le serveur qui contient l’image Master pour le jeter par la fenêtre. Des solutions existent, permettant de bloquer cette attaque au mieux possible, qui seront expliquées dans un prochain article.

La question reste posée : pourquoi Microsoft a créé, a utilisé, et utilise toujours ce protocole qui est connu pour être non sécurisé ? La réponse est simple : compatibilité. De nombreux protocoles considérés comme dangereux depuis des dizaines d’années restent utilisés car essentiels au bon fonctionnement d’un réseau. Il en est de même pour NTLM, qui est énormément utilisé en entreprise. Couper NTLM, c’est couper une partie de son SI3.

 

1. Il pourrait être facile – et tentant – d’envoyer simplement le mot de passe en clair sur le réseau, et que le serveur calcule le hash à la réception, mais les risques d’écoute du réseau sont trop importants pour utiliser ce fonctionnement.

2. Le calcul exact étant plus compliqué, il n’est pas détaillé dans cet article. Il est cependant disponible ici.

3. Il est bien évidemment possible de se passer de NTLM, mais l’accumulation de plusieurs années d’équipements, de postes de travail, de serveurs, etc. dans un SI rend cette tâche compliquée.

Corto GueguenIngénieur Sécurité
Corto a d’abord fait plusieurs années dans l’intégration d’équipements réseau/sécu, puis a fait une « pause Tour du monde » d’un an avant d’arriver  chez Login en janvier 2020.
Il a plusieurs cordes à son arc : pentest, régie, missions pompier, etc.

Add a comment

*Please complete all fields correctly