(Active Directory) Authentification NTLM

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


Dans un précédent article nous avons parlé du protocole Kerberos. Par la suite je vous avais montré comment exploiter ce protocole en phase de pentest. Aujourd’hui, on va s’attaquer à son « petit frère » NTLM !

Alors pourquoi « petit frère » ? Eh bien parce que Kerberos a été implémenté après NTLM afin de mieux sécuriser la phase d’authentification. Cependant NTLM et Kerberos coexiste toujours sur un environnement Active Directory. Les deux sont utilisables.

Même si par défaut c’est Kerberos qui est utilisé pour l’authentification, NTLM est toujours utilisable dans le cas ou le client souhaite se connecter à un serveur en utilisant une adresse IP ou encore quand Kerberos n’est pas utilisable (firewall qui bloque le port 88 par exemple).

Il est donc intéressant de comprendre comment ce protocole fonctionne et ce qu’il est possible de faire avec !

NTLM (New Technology Lan Manager) est un protocole qui fonctionne sur le principe du challenge/response. La première étape de l’authentification consiste en un envoi d’un nom de domaine, d’un nom d’utilisateur et d’un mot de passe. Ces informations sont récupérées lors de la phase de login sur une session Windows.

Le client va de suite créer un hash à partir du mot de passe spécifié qu’il va stocker en mémoire. Le mot de passe en clair sera détruit dans la foulé. Puis le client va envoyer le nom d’utilisateur au serveur :

1

Par la suite, le serveur va envoyer un nonce (un nombre aléatoire) de 16 bits au client :

2.png

Le client, quant il va recevoir le nonce va le chiffrer à l’aide du hash qu’il a généré au préalable à partir du mot de passe de l’utilisateur. Puis l’envoyer au serveur :

3.png

La partie un peu tricky ici est que le serveur connaît le mot de passe de l’utilisateur (puisqu’il est stocké dans l’Active Directory). Donc il peut créer le même hash que celui qui a été créé par le client à l’étape une. Quand il réceptionnera le nonce chiffré, il pourra donc le déchiffrer et vérifier que le nonce qu’il a correspond bien à celui qu’il a envoyé !

4.png

Si les deux nonce sont identiques alors l’authentification a réussi et on donne accès au réseau au client :

5.png

Vous êtes connectés ! Alors attention, ici j’ai simulé une connexion au DC. En réalité, si vous tentez de vous connecter à un service alors le client va envoyer son nonce chiffré au serveur qui va le transférer au DC. Et ensuite il y aura la comparaison.

Comme nous l’avons vu, aucun mot de passe n’est transmis en clair sur le réseau et aucun mot de passe n’est stocké en clair sur la machine. Tout semble être parfait right ?!

Are you sure ? 😎😎 La suite plus tard 😀 !

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s