Introduction
Dans ce premier tutoriel dédié à Kali, je vous propose de découvrir le pentesting avec l’outil responder qui va nous permettre de récupérer des hash NTLM pour ensuite les « cracker » avec john et hashcat et avoir les mots de passe en clair.
Comme vous le verrez dans ce tutoriel, c’est assez simple de récupérer des hash NTML et ensuite de les cracker pour avoir des accès sur un système d’information.
Tout ce que nous allons faire peut être fait de façon passive sans aucune détection par un antivirus ou un EDR.
Avertissement
Si vous souhaitez faire du pentest sur un système d’information, vous devez vous assurer d’avoir les autorisations.
Le Hacking (piratage) est puni par le code pénal français.
Présentation
Avant de parler « technique », je vais vous présenter les outils que l’on va utiliser.
Kali
Si vous vous intéressez au « hacking », vous avez forcement entendu parler de Kali.
Kali est une distribution Linux basée sur Debian qui intègre directement des outils de pentest.
Responder
Responder est un utilitaire qui permet d’écouter un réseau et de répondre au requêtes LLMNR, NBT-NS et MDNS en indiquant un service erroné pour récupérer les identifiants.
Pour capturer les informations Responder permet de simuler les services suivants :
- SMB
- SQL Server
- LDAP
- WPAD
- Serveur Web (HTTP / HTTPS)
- …
https://www.kali.org/tools/responder/
John et Hashcat
John the Ripper et Hachcat sont des outils qui vont nous permettre de « cracker » les hash que l’on va récupérer pour trouver les mots de passe.
Doc kali :
Environnement du tutoriel pour le pentest
Voici les différents ordinateurs utilisés dans ce tutoriel pour ce lab :
- Un ordinateur avec Kali
- Un contrôleur de domaine sur Windows Serveur 2019 sans modification
- Un ordinateur client Windows 11 joint au domaine.
- Un ordinateur client Windows 10 joint au domaine.
Le but du lab est de récupérer les hash NTML des utilisateurs target 1
et target 2
.
Les mots de passe des comptes utilisateurs sont volontaire faibles.
Pentest étape par étape
On va maintenant procéder au pentest et je vais montrer étape par étape comme faire.
Même si Kali dispose d’une interface graphique, les outils que nous allons utilisé se fait par le terminal.
Commencer par lancer un terminal sur Kali.
Etape 1 : récupérer des hash NTML avec Responder
Nous allons commencer par lancer Responder pour « empoissonné » des requêtes DNS de broadcast et attendre qu’un ordinateur tombe dans le piège.
Cette étape, c’est un peu comme aller à la pêche et attendre qu’un poisson morte à l’hameçon
Pour commencer, nous allons récupérer le nom de l’interface réseau que nous souhaitons écouté.
ip a
Sur cette machine, j’ai une seule carte réseau
eth0
.
C’est partie, on va lancer Responder :
sudo responder -I eth0
Responder est lancé et en attente …
Maintenant il n’y a plus qu’à attendre que Responder fasse le boulot…
Pour le tutoriel, depuis le client Windows 10, j’ai volontaire essayé d’accéder à un équipement réseau (\\nas01) qui n’existe pas.
Dans le même temps sur la machine Kali, on peut voir que Responder a répondu à la demande et que l’ordinateur Windows 10 a essayé de d’identifier en passant l’utilisateur et le Hash NTML du mot de passe.
C’est parfait, nous avons récupérer un hash NTML.
Nous avions ce que nous souhaitons, on va pouvoir arrêter Responder. Utiliser le raccourci clavier Ctrl+C.
Avant de passer au « crackage » du mot de passe, je vais vous indiquer où se trouver les captures faites par Responder.
Aller dans le dossier suivant :
cd /usr/share/responder/logs
Afficher le contenu :
ls
Les Hash capturés sont stockés dans des fichiers séparés par machine sous la forme : SMB-NTLMv2-SSP-IP.txt
Sur la capture on peut voir que cela a été fait l’adresse IPv6 de la machine Windows 10.
Voici le contenu du fichier :
cat SMB-NTLMv2-SSP-IP.txt
On va maintenant chercher à décoder le mot de passe de target2
.
Etape 2 : décoder le hash NTML pour récupérer le mot de passe
Dans cette partie, on va utiliser 2 outils pour décoder le mot de passe et voir quelques variantes.
John the Ripper
Le première outil que l’on utilisé est John the Ripper, c’est des plus connu et facile à utiliser.
L’utilisation est très simple, entrer la commande ci-dessous :
sudo john file-name.txt
Au bout de quelques seconde le mot de passe est trouvé …
Le mot de passe est bien
iloveyou
.
Quelques explications sur le fait que cela est pris une seconde pour un mot de passe de 8 caractères.
Par défaut sur Kali, john utilise une liste de mot de passe qui se trouve ici : /usr/share/wordlists/john.lst
.
Si on lance une recherche du mot de passe dans le fichier, on voit que celui-ci est présent :
grep -i "iloveyou" john.lst
Si le mot de passe n’avait pas été présent, John aurait ensuite tenter de casser le mot de passe brute force en mode itération en essayant toutes les combinaisons possible, ce qui peut prendre dans ce cas, beaucoup de temps, de quelques heures à plusieurs semaines voir années en fonction du mot de passe et de l’ordinateur utilisé.
Hashcat
Deux outils que je vais vous montrer pour trouver un mot de passe est hashcat. On va l’utiliser de deux manières :
- Avec la base de passe rockyou
- Brute force
Hashcat avec rockyou
Rockyou est un base ou plutôt un fichier qui contient les mots de passe de 32 millions d’utilisateurs qui a été obtenu suite au piratage de la société Rockyou.
Ce fichier est présent dans Kali mais compresser par défaut.
Aller dans le dossier wordlists :
cd /usr/share/wordlists
Décompresser le fichier :
sudo gzip -d rockyou.txt.gz
Le fichier rockyou.txt est décompressé.
Retourner dans le dossier de log de Responder.
cd /usr/share/responder/log
L’utilisation de Hashcat demande plus de paramètres, on va lui indiquer le type de hash (-m 5600) puis le type d’attaque à faire (-a 3) et ensuite le fichier contenant le hash et le dictionnaire de mot de passe.
Vous trouverez les paramètres disponible sur la documentation de hashcat.
Ce qui donne :
sudo hashcat -m 5600 -a 3 file-with-hash.txt /path/of/wordlist.txt
La aussi le mot de passe a été trouvé en 1 seconde.
Hashcat brute force
Maintenant comment faire si le mot de passe n’est pas dans une liste ? On va attaquer le hash en brute force en essayant toutes les combinaisons possible.
Avertissement
Pour un meilleur rendement, il est recommandé d’utiliser un ordinateur en une puissance graphique importante (GPU).
Il suffit de lancer hashcat sans dictionnaire de mot de passe :
sudo hashcat -m 5600 -a 3 file-with-hash.txt
Patienter pendant l’initialisation du hashcat.
Au début hashcat affiche automatiquement sa progression
Ensuite pour suivre la progression, appuyer sur s
pour status.
Vous n’aurez pas le résultat de l’attaque par brute force, car cela prenant trop de temps sur la machine ou j’ai fait le test.
Après 4 heures, hashcat a fini les combinaisons avec 6 caractères et pour passer les listes des mots de passe disponible avec 7 caractères il aurait fallu encore 15 jours. On peut donc estimer que le mot de passe aurait été trouvé en 3 semaines.
Conclusion et recommandations
Ce tutoriel s’arrête ici, comme vous l’aurez vu, ce type d’attaque est assez facile à mettre en place, il suffit d’un ordinateur avec Kali et on peut assez facilement récupérer des Hash NTML que l’on peut ensuite essayer de « cracker ».
Maintenant comme se prémunir de ce type d’attaque. Pour réduire au maximum le risque, il faut agir à plusieurs niveau.
Au niveau de Windows :
- Désactiver les protocoles de résolution de nom en broadcast, j’avais traiter ce sujet dans Active Directory : durcir la sécurité de votre environnement.
- Désactiver la configuration automatique d’Internet dans les Options internet de Windows, Responder est aussi capable de répondre aux requêtes WPAD et de récupérer les mots de passe de cette manière.
- Mettre les comptes Admins du domaine dans le groupe protected users, ce groupe empêche l’utilisation de NTLM et donc de passer les Hash sur le réseau.
Au niveau physique :
- Afin d’éviter que n’importe qui se connecte sur le réseau, désactiver les prises réseaux non utilisées.
Au niveau utilisateur :
- Utiliser des mot de passe long avec plus de 15 caractères et complexe, le meilleur allier dans cette situation, c’est le temps.
- Indiquer aux utilisateurs de ne pas saisir leur identifiant si une fenêtre d’authentification Windows s’ouvre de façon « bizarre » ou de façon inhabituelle.