TP2 NTLM - NergYR/SAE-PentestAD GitHub Wiki
Bienvenue dans ce deuxième TP. L'objectif est d'explorer les faiblesses liées au protocole NTLM et de mettre en pratique différentes techniques d'attaque simple sur le domaine iut-velizy.uvsq.fr
.
- Comprendre et exploiter les relais NTLM.
- Utiliser les informations et accès obtenus pour progresser vers l'administration du domaine.
- Découvrir des informations cachées dans l'annuaire.
- Avoir terminé le TP1.
- Disposer d'un environnement Exegol fonctionnel.
- Accès au domaine
iut-velizy.uvsq.fr
(environnement contrôlé). -
Contexte fourni :
- Un utilisateur se connecte régulièrement (toutes les 2 minutes) à un partage SMB inexistant sur le réseau.
NTLM (NT LAN Manager) est un ancien protocole d’authentification utilisé dans les environnements Windows lorsque Kerberos n’est pas disponible. Il fonctionne selon un mécanisme de défi-réponse sans transmettre directement le mot de passe, ce qui permet d’éviter les attaques de type "replay" simples. Voici son principe :
- Le client envoie son nom d’utilisateur au serveur.
- Le serveur répond par un défi (challenge), qui est une chaîne de caractères aléatoire.
- Le client chiffre ce défi avec son hash NTLM (généré à partir du mot de passe de l’utilisateur) et l’envoie en retour.
- Le serveur valide cette réponse en comparant avec ce qu’il calcule à partir du hash stocké.
NTLM existe en plusieurs versions, la plus sécurisée étant NTLMv2, mais même celle-ci reste vulnérable à certaines attaques comme :
- Pass-the-hash : l’attaquant utilise directement le hash sans connaître le mot de passe.
- Relais NTLM : l’attaquant intercepte et réutilise une authentification sur un autre service.
- Empoisonnement LLMNR/NetBIOS avec des outils comme Responder.
Pour améliorer la sécurité, Microsoft recommande de désactiver NTLM au profit de Kerberos, plus sécurisé et adapté aux environnements Active Directory modernes.
- Objectif : Récupérer les informations d'identification (hash) d'un compte machine du domaine et le casser.
- Scénario : Mettre en place une attaque LMMNR poisoning pour cibler le service LDAP (LDAPS) du contrôleur de domaine. L'objectif est d'utiliser responder pour tenter de dumper le hash d'un compte de l'AD.
-
Outils :
responder
(Inclus dans exegol) -
Étapes :
- Identifiez les interfaces du container
- Lancez
responder
pour se placer comme étant un server SMB :responder -I <interface>
- Attendez qu'un utilisateur se connecte (environs 2 minutes) et observez le résultat. Si l'attaque réussit, vous devriez obtenir le hash du compte qui c'est connecté.
- Utilisez la commande
echo
pour enregistrer le hash dans un fichier puis utlisez hashcat avec cette commandehashcat -m 5500 --force -a 0 <chemin-hash> <chemin-dictionnaire-mdp>
pour le casser et ainsi avoir accès au compte.
-
Questions :
- Pourquoi utilise-t-on l'option
--remove-mic
? - Quel est l'intérêt de cibler LDAPS ?
- Que pouvez-vous faire avec le hash du compte machine du DC ?
- Pourquoi utilise-t-on l'option
-
Objectif : Obtenir les accès a un compte ayant les droits administrateur du domaine
iut-velizy.uvsq.fr
. - Scénario : Un utilisateur possédant des droits RSAT (Remote Server Administration Tools) se connecte régulièrement à un partage SMB. Vous allez intercepter son authentification NTLM et la relayer pour exécuter des actions en son nom, puis utiliser les outils RSAT pour progresser dans le domaine.
- Outils : BloodHound, Ladpsearch.
-
Étapes :
-
Extraction des informations de l'AD :
- Configurez Bloodhound de façon a pouvoir accéder à l'inteface web depuis votre poste.
- utilisez les accès optenus en partie 1 pour executer cette commande avec Bloodhound
bloodhound-python -c All -d iut-velizy.uvsq.fr -u "<nom-utilisateur>" -p"<mot-de-passe>" -ns 172.20.20.2 -dc iut-velizy-ad01.iut-velizy.uvsq.fr --zip
-
Extraction du fichier généré :
- Une fois le fichier zip généré pour pouvoir l'importer dans l'interface web de BloodHound il faut l'extraire du container exegol dans lequel il a été généré. Pour cela on utilise la commande
pwd
pour connaitre le chemin vers le fichier, on compie le nom du fichier, puis on sort du container et utilise la commandedocker cp <nom-container>:<chemin-vers-fichier> <destination-fichier>
pour avoir le fichier sur l'hôte. - Une fois le fichier sur l'hôte utiliser la commande
scp -r <utilisateur-exegol>@<ip-vm-exegol>:<chemin-fichier-vm> <destination>
pour récupérer le fichier sur votre machine.
- Une fois le fichier zip généré pour pouvoir l'importer dans l'interface web de BloodHound il faut l'extraire du container exegol dans lequel il a été généré. Pour cela on utilise la commande
-
Chemin vers l'admin via BloodHound :
- Utilisez le fichier optenu pour alimenter BloodHound.
- Identifiez les compte administrateurs indiqué par BloodHound et notez leur DC et CN.
-
Exploitation du chemin :
- Utilisez des requêtes LDAP avec la commande
ldapsearch -x -H ldap://<url-dc> -D "<nom-compte>" -w '<mot-de-passe>' -b "DC=<DC-cible>" "(CN=<CN-compte-cible>)"
pour avoir plus d'informations sur les comptes. - Trouvez les informations permettant de se connecter avec un des compte administrateur
- Utilisez des requêtes LDAP avec la commande
-
Connexion en tant qu'administrateur :
- Une fois administrateur du domaine vérifiez que vous pouvez faire des requêtes sur l'AD parent.
-
Extraction des informations de l'AD :
-
Questions :
- Comment pouvez-vous forcer un utilisateur à s'authentifier auprès de votre machine pour le relais ?
- Quelles informations spécifiques cherchez-vous avec les requêtes LDAP manuelles pour suivre le chemin BloodHound ?
- Décrivez la procédure que vous avez trouvée sur le serveur de fichiers.
Remarque : Toutes les manipulations doivent être effectuées dans le respect du cadre légal et uniquement sur l'infrastructure de test fournie.