Envoi de trames LLMNR malicieuses (ou comment devenir rapidement administrateur du domaine AD)

Envoi de trames LLMNR malicieuses (ou comment devenir rapidement administrateur du domaine AD)

Lors d’un pentest chez un client disposant de beaucoup de machines Windows hétérogènes (XP, w2k3, Win7, …),
il est possible de tirer avantage du fonctionnement du protocole Netbios pour obtenir les identifiants de session AD
des utilisateurs de manière très rapide.

Principe :

Un client Windows va « par défaut » systématiquement réaliser la recherche d’une ressource (URL, Machine, DFS, …)
au moyen d’une requête de type LLMNR (Link-Local Multicast Name Resolution).

Pour simplifier : une sorte de « requête DNS » vue par tout le réseau (Broadcast).

Cette requête est toujours émise en premier puis si aucune réponse n’est reçue, le client va initier une requête DNS standard (en mode unicast à destination du/des serveur(s) DNS configuré sur le client).

Attaque :

Le but de l’attaque est de répondre aux différentes requêtes LLMNR des stations clientes en indiquant l’adresse IP
de l’attaquant comme propriétaire du nom recherché.

Exemple :

1)      La victime recherche la station CRM au moyen d’une requête LLMNR.

2)      L’attaquant répond avec une trame LLMNR falsifié indiquant je suis CRM mon IP est 1.2.3.4

3)      Le client n’effectue pas de recherche DNS supplémentaire et demande la ressource voulue à 1.2.3.4 (Ex : \\CRM\C$).

4)      L’attaquant répond au client que l’accès à cette ressource requiert un mot de passe (et accessoirement l’attaquant
peut indiquer ne gérer que le protocole NTLMv1).

5)      Si le client est connecté à un domaine AD il enverra automatiquement les identifiants de session de l’utilisateur
si le domaine est mixte (AD 2003) les identifiants seront envoyé au format NTLMv1,
autrement ils seront au format NTLMv2.

Voici un petit schéma pour mieux comprendre :

attaqueLLMNR

Outil :

Un outil open source (en python) très sympa nommé Responder est disponible sur le git de SpiderLabs : https://github.com/SpiderLabs/Responder

Ce dernier permet de réaliser rapidement et simplement l’attaque décrite ci-dessus et bien d’autres encore.

attaque_Responder

Ensuite pour casser les hashs NTLMv2 et NTLMv1 à vous de jouer avec John The Ripper.

Une petite astuce :

cat Responder-Session.log | grep "complete hash" | cut -d" " -f8 | sed 's/^://' > ntlm.lst
john ntlm.lst

Bon pentest en environnement Windows !

Contre – mesures :

1)      Je pense qu’il est possible de mettre en place un IDS de type Snort par exemple pour détecter les réponses LLMNR
forgés. Prendre exemple sur les règles suivantes : https://www.snort.org/search?query=18655

2)      Il est possible sur les OS récents comme Windows Vista/ Seven de désactiver la résolution DNS au travers du protocole Netbios.

remediation2

Remerciements :

Cet article s’est grandement inspiré des travaux menés en 2013 par Spider Labs : http://blog.spiderlabs.com/2013/09/top-five-ways-spiderlabs-got-domain-admin-on-your-internal-network.html

Je les remercie aussi pour avoir mis à disposition de la communauté l’outil Responder.