Elouan

NTLM et ses faiblesses

Le vieux protocole d'authentification de Windows, toujours présent partout : défi-réponse, hash NT, pass-the-hash, relais et empoisonnement LLMNR.

Elouan

Série Active Directory · article 3 sur 4
  1. Active Directory : les briques d'un domaine
  2. Kerberos de bout en bout
  3. NTLM et ses faiblesses
  4. Protéger et surveiller un domaine Active Directory

NTLM date des années 1990. Microsoft recommande depuis longtemps de ne plus l’utiliser, et a annoncé sa disparition progressive. Pourtant, il est encore présent dans presque tous les réseaux Windows, parce qu’une application, une imprimante ou un accès par adresse IP en a besoin. Et ses faiblesses sont parmi les plus exploitées en test d’intrusion comme en attaque réelle.

Le défi-réponse

NTLM fonctionne en trois messages :

Client                                   Serveur
  │ ── NEGOTIATE ──────────────────────► │   « Je voudrais m'authentifier »
  │ ◄───────────────────── CHALLENGE ─── │   un défi aléatoire de 8 octets
  │ ── AUTHENTICATE ───────────────────► │   réponse calculée avec le hash NT

Le client ne transmet jamais son mot de passe. Il prouve qu’il le connaît en faisant un calcul sur le défi avec l’empreinte NT de son mot de passe. Pour un compte du domaine, le serveur transmet la réponse au contrôleur de domaine, qui fait la vérification (événement 4776).

Le hash NT, un secret à part entière

L’empreinte stockée par Windows, le hash NT, est simplement le MD4 du mot de passe, encodé en UTF-16LE, sans sel.

Deux conséquences importantes :

  • deux comptes qui ont le même mot de passe ont exactement le même hash ;
  • en NTLM, le hash suffit pour répondre au défi. On n’a jamais besoin du mot de passe lui-même.

Un hash, pas un mot de passe… mais c’est pareil

Avoir le hash NT d’un compte, c’est pouvoir s’authentifier comme lui en NTLM : c’est le pass-the-hash (T1550.002). Et comme la clé Kerberos RC4 est elle aussi le hash NT, on peut également demander un TGT avec : c’est l’overpass-the-hash. Le hash d’un administrateur vaut donc son mot de passe.

NTLMv1, NTLMv2 et ce qu’on capture

VersionCe qu’il faut en retenir
LMTrès ancien, découpe le mot de passe en deux blocs de 7 caractères en majuscules. À désactiver absolument.
NTLMv1Le calcul de réponse est cassable rapidement, quel que soit le mot de passe. À désactiver.
NTLMv2Réponse plus robuste. Mais on peut toujours attaquer le mot de passe hors ligne s’il est faible, et surtout relayer l’authentification.

« Hash Net-NTLMv2 » n’est pas « hash NT »

Ce qu’un attaquant capture sur le réseau est une réponse à un défi (souvent appelée hash Net-NTLMv2). Elle ne permet pas le pass-the-hash. Elle permet de chercher le mot de passe hors ligne (avec Hashcat, par exemple), ce qui marche très bien sur les mots de passe faibles.

Le relais NTLM

C’est la faiblesse structurelle de NTLM : le client ne vérifie pas à qui il s’authentifie. Un attaquant placé au milieu peut donc prendre l’authentification d’une victime et la relayer en temps réel vers un autre serveur.

Victime ──► Attaquant ──► Serveur cible
  NEGOTIATE   ───────────►
              ◄─────────── CHALLENGE
  ◄─ CHALLENGE (transmis)
  AUTHENTICATE ──────────►  l'attaquant est authentifié… avec l'identité de la victime

Si la victime est administrateur sur le serveur cible, l’attaquant l’est aussi. Les relais vers LDAP (pour modifier l’annuaire) ou vers les services web de l’autorité de certification (ADCS) ont permis de compromettre des domaines entiers.

Les parades :

  • Signature SMB obligatoire : sans la clé de session, l’attaquant ne peut pas signer les messages suivants.
  • Signature LDAP et channel binding sur les contrôleurs de domaine.
  • EPA (Extended Protection for Authentication) sur les services web, notamment ADCS.
  • Et, à terme, désactiver NTLM après avoir identifié ce qui l’utilise encore (stratégies d’audit NTLM).

L’empoisonnement LLMNR et NBT-NS

Quand le DNS ne connaît pas un nom (une faute de frappe, un ancien serveur), Windows ne s’arrête pas : il demande à tout le réseau local avec deux protocoles hérités, LLMNR et NBT-NS. N’importe quelle machine peut répondre, sans aucune vérification.

Un outil comme Responder écoute ces demandes et répond « c’est moi » à toutes. Le poste de la victime lui envoie alors une authentification NTLM. L’attaquant n’a plus qu’à attaquer le mot de passe ou à relayer l’authentification (T1557.001).

Ce que ça donne dans une vraie intrusion

Un attaquant branché sur le réseau d’un open space lance Responder et attend. En quelques minutes, des postes qui cherchent une imprimante disparue ou un partage mal tapé lui envoient des authentifications. L’une d’elles appartient à un administrateur dont le mot de passe est Printemps2024!. Il est retrouvé en quelques minutes hors ligne.

La parade : désactiver LLMNR (par GPO) et NBT-NS (dans les paramètres réseau ou par DHCP), et surveiller ces protocoles sur le réseau.

Repérer NTLM dans les journaux

  • 4776 sur les contrôleurs de domaine : validation d’identifiants NTLM.
  • 4624 sur la machine cible : le champ Authentication Package indique NTLM ou Kerberos, et Package Name indique NTLM V1 ou NTLM V2.
  • Un 4624 de type 3 en NTLM depuis un poste vers beaucoup de serveurs, avec un compte d’administration, est typique d’un pass-the-hash ou d’un mouvement latéral avec un outil comme PsExec.

Le prochain article explique comment protéger et surveiller un domaine face à ces faiblesses.

L'essentiel

  • NTLM est un protocole défi-réponse : le serveur envoie un défi, le client répond avec un calcul basé sur l'empreinte NT de son mot de passe. Le mot de passe ne circule pas, mais l'empreinte suffit.
  • Le hash NT est le MD4 du mot de passe en UTF-16LE, sans sel. Deux comptes avec le même mot de passe ont le même hash NT.
  • Pass-the-hash : avec le hash NT d'un compte, on peut s'authentifier en NTLM sans connaître le mot de passe.
  • Relais NTLM : un attaquant placé au milieu transmet l'authentification d'une victime vers un autre serveur. Parades : signature SMB obligatoire, signature et channel binding LDAP, EPA, désactivation de NTLM.
  • LLMNR et NBT-NS : quand le DNS échoue, Windows demande à tout le réseau local. Un outil comme Responder répond à la place et récupère des authentifications NTLM. Parade : désactiver LLMNR et NBT-NS.
  • NTLMv1 est cassable rapidement et doit être désactivé. NTLMv2 est plus robuste, mais reste vulnérable au relais et à l'attaque du mot de passe hors ligne si celui-ci est faible.
  • Validation NTLM d'un compte du domaine = événement 4776 sur le contrôleur de domaine. Le 4624 indique le package d'authentification (NTLM ou Kerberos).

Idées reçues

Si on capture une réponse NTLMv2 sur le réseau, peut-on directement s'en servir pour faire du pass-the-hash ?

L'erreur courante. Répondre oui, puisque c'est un hash.

En réalité. Non. Ce qu'on capture (souvent appelé « hash Net-NTLMv2 ») est une réponse à un défi, pas le hash NT. On ne peut pas la rejouer telle quelle. On peut soit essayer de retrouver le mot de passe hors ligne (efficace s'il est faible), soit relayer l'authentification en temps réel vers un autre serveur.

Pourquoi le hash NT est-il aussi dangereux qu'un mot de passe ?

L'erreur courante. Dire qu'un hash n'est qu'une empreinte inoffensive.

En réalité. Parce qu'en NTLM, le hash NT sert directement de secret pour répondre au défi. Avec lui, on s'authentifie comme le compte (pass-the-hash) sans jamais connaître le mot de passe. C'est aussi la clé RC4 utilisée par Kerberos, ce qui permet de demander un TGT (overpass-the-hash).

La signature SMB protège-t-elle contre le relais NTLM ?

L'erreur courante. Répondre que non, puisqu'elle ne chiffre pas.

En réalité. Oui, quand elle est obligatoire sur le serveur cible. L'attaquant qui relaie l'authentification ne connaît pas la clé de session et ne peut donc pas signer les messages suivants. C'est pour ça qu'on la rend obligatoire partout (elle l'est par défaut sur les contrôleurs de domaine, et sur les versions récentes de Windows).

Un poste tape \\fichiers-compta\ au lieu de \\fichier-compta\. Que peut-il se passer sur le réseau local ?

L'erreur courante. Penser qu'il aura juste une erreur.

En réalité. Le DNS ne trouve pas le nom. Windows interroge alors tout le réseau local avec LLMNR ou NBT-NS. Un attaquant qui écoute (avec Responder, par exemple) répond « c'est moi », et le poste lui envoie une authentification NTLM. L'attaquant peut alors attaquer le mot de passe ou relayer l'authentification (technique T1557.001).

Tester ses connaissances

Références

  • Pentesting Active Directory and Windows-based InfrastructureDenis Isakov · Packt
  • Windows Security Monitoring : Scenarios and PatternsAndrei Miroshnichenko · Wiley

Textes de référence en ligne