Introduction
Hashcat est un outil de récupération de mots de passe de renommée mondiale, connu pour sa rapidité et sa polyvalence. Lors de la réalisation de cassages de mots de passe à grande échelle, il est courant d'utiliser plusieurs systèmes pour attaquer la même liste de hachages. Cette approche distribuée peut entraîner une inefficacité, car différents systèmes peuvent perdre du temps à essayer les mêmes candidats de mots de passe.
Pour résoudre ce problème, Hashcat a introduit la fonctionnalité "Brain". Le Hashcat Brain agit comme un serveur centralisé qui conserve un enregistrement de chaque candidat de mot de passe qui a été tenté. Avant qu'un client n'essaie un mot de passe, il interroge le Brain. Si le mot de passe a déjà été essayé, le client l'ignore, économisant ainsi un temps et des ressources précieux.
Dans ce laboratoire, vous apprendrez à :
- Démarrer un serveur Hashcat Brain.
- Connecter un client Hashcat au serveur.
- Lancer une attaque par mot de passe et observer comment le Brain empêche le travail redondant.
Comprendre le Concept du Hashcat Brain
Dans cette étape, nous allons couvrir brièvement le concept central du Hashcat Brain et le problème qu'il est conçu pour résoudre. Cette étape est purement conceptuelle, et aucune commande n'est requise.
Dans un scénario typique de cassage de mots de passe, vous avez une liste de hachages et une liste de mots de passe potentiels (une wordlist). Hashcat essaie chaque mot de passe de la wordlist contre les hachages. Maintenant, imaginez que vous avez deux ordinateurs distincts (ou clients) travaillant sur la même tâche.
Le Problème : Sans coordination, le Client A et le Client B pourraient tous deux essayer le même mot de passe exact, comme "123456", à des moments différents. C'est un gaspillage de puissance de calcul, car le travail est dupliqué.
La Solution (Hashcat Brain) : Le Hashcat Brain agit comme un serveur central intelligent. Le flux de travail est le suivant :
- Un client (par exemple, le Client A) souhaite essayer le mot de passe "123456".
- Il envoie d'abord une requête au serveur Brain : "Est-ce que '123456' a déjà été essayé ?"
- Le serveur Brain consulte sa base de données. Si c'est la première fois, il répond : "Non, il n'a pas été essayé."
- Le Client A procède au test du mot de passe. Une fois terminé, il informe le serveur Brain : "J'ai maintenant testé '123456'." Le serveur Brain enregistre cela.
- Plus tard, si le Client B souhaite essayer "123456", il interroge le serveur Brain. Le serveur répondra alors : "Oui, il a été essayé."
- Le Client B ignore immédiatement ce mot de passe et passe au suivant, économisant ainsi du temps et de l'électricité.
Ce mécanisme garantit que chaque candidat de mot de passe sur l'ensemble du réseau distribué n'est testé qu'une seule fois, améliorant considérablement l'efficacité des attaques à grande échelle.
Démarrer le Serveur Hashcat Brain
Dans cette étape, vous allez démarrer le serveur Hashcat Brain. Ce serveur écoutera les connexions des clients Hashcat et gérera la base de données des mots de passe essayés.
Pour ce laboratoire, nous allons exécuter le serveur et le client sur la même machine, mais ils communiqueront sur le réseau comme s'ils étaient sur des systèmes séparés.
La commande pour démarrer le serveur est hashcat avec l'option --brain-server. Nous spécifierons également un port sur lequel il écoutera. Pour la sécurité, Hashcat peut générer automatiquement un mot de passe pour le serveur.
Tout d'abord, créons un répertoire pour nos fichiers brain à l'intérieur de notre dossier de projet.
mkdir -p ~/project/brain
Maintenant, exécutez la commande suivante dans votre terminal pour démarrer le serveur. Il écoutera sur le port 7890 et stockera ses données dans le répertoire ~/project/brain/.
Note : Cette commande occupera votre terminal actuel. Pour les étapes suivantes, vous devrez ouvrir un nouvel onglet de terminal en cliquant sur l'icône
+dans le panneau du terminal.
hashcat --brain-server --brain-port 7890 --brain-session-path ~/project/brain/
Après avoir exécuté la commande, vous verrez une sortie indiquant que le serveur est en cours d'exécution. Portez une attention particulière à la ligne qui dit Password..:, car c'est le mot de passe généré automatiquement dont vous aurez besoin pour que le client se connecte.
Starting brain server on 0.0.0.0:7890...
Password..: 82b5d1a3e... (a long hex string)
Accepting clients...
Laissez ce terminal en cours d'exécution. Ne le fermez pas. Ouvrez un nouveau terminal pour les étapes suivantes.
Obtenir le Mot de Passe du Serveur Brain
Dans cette étape, vous apprendrez comment récupérer le mot de passe du serveur Brain à partir de son fichier de session. Bien que le mot de passe ait été affiché dans le terminal lorsque vous avez démarré le serveur, il est également stocké dans un fichier pour un accès facile, ce qui est utile dans les environnements automatisés.
Le fichier de session, par défaut, est nommé hashcat.brain. Comme nous avons spécifié un chemin personnalisé avec --brain-session-path, notre fichier est situé dans ~/project/brain/hashcat.brain.
Dans votre nouvel onglet de terminal, utilisez la commande cat pour afficher le contenu de ce fichier. Ce contenu est le mot de passe du serveur.
cat ~/project/brain/hashcat.brain
La sortie sera une longue chaîne de caractères hexadécimaux, qui est le mot de passe.
82b5d1a3e4c9a0f7d6b3c1a9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1f0e9
Ce mot de passe est requis par tout client souhaitant se connecter à votre serveur Brain. Dans les étapes suivantes, nous utiliserons une commande pour lire ce mot de passe directement depuis le fichier afin d'éviter les erreurs de copier-coller.
Configurer un Client Hashcat pour se Connecter au Brain
Dans cette étape, vous allez configurer un client Hashcat pour utiliser le serveur Brain. Cela se fait en ajoutant plusieurs options --brain-* à une commande hashcat standard.
Nous allons exécuter une commande en "dry-run" pour tester la connexion. L'option --show dans Hashcat est utilisée pour afficher les hashes précédemment crackés, mais lorsqu'elle est combinée avec les options du client Brain, elle sert de bon moyen de vérifier la connexion sans lancer une attaque complète.
Les options client requises sont :
--brain-client: Indique à Hashcat de fonctionner en mode client.--brain-host: L'adresse IP du serveur. Nous utiliserons127.0.0.1car il est sur la même machine.--brain-port: Le port sur lequel le serveur écoute, qui est7890.--brain-password: Le mot de passe du serveur. Nous pouvons utiliser la substitution de commande$(cat ...)pour le lire directement depuis le fichier.
Exécutez la commande suivante dans votre nouvel onglet de terminal :
hashcat --show -m 0 ~/project/hashes.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)
Cette commande ne produira pas beaucoup de sortie dans le terminal client. Cependant, si vous revenez à votre premier onglet de terminal (celui qui exécute le serveur), vous devriez voir une nouvelle ligne indiquant Client connected from 127.0.0.1. Cela confirme que le client s'est connecté avec succès au serveur.
## Dans le terminal du serveur
Accepting clients...
Client connected from 127.0.0.1
Cela confirme que votre configuration client est correcte.
Lancer une Attaque et Observer la Communication du Brain
Dans cette étape, vous allez effectuer une attaque par dictionnaire et observer le Hashcat Brain en action. Nous utiliserons les fichiers hashes.txt et wordlist.txt qui ont été préparés pour vous.
Tout d'abord, lancez l'attaque. La commande est une attaque par dictionnaire standard (-a 0) pour les hashes MD5 (-m 0), avec les options du client Brain ajoutées.
Exécutez ceci dans votre terminal client (le deuxième onglet) :
hashcat -m 0 -a 0 ~/project/hashes.txt ~/project/wordlist.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)
L'attaque va s'exécuter, et vous verrez qu'elle trouve rapidement le mot de passe.
...
5f4dcc3b5aa765d61d8327deb882cf99:password
...
Session..........: hashcat
Status...........: Cracked
...
Maintenant, voici la partie importante. Exécutez à nouveau la même commande exacte.
hashcat -m 0 -a 0 ~/project/hashes.txt ~/project/wordlist.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)
Observez la sortie cette fois-ci. L'attaque devrait se terminer presque instantanément. Remarquez la ligne Status.
...
Session..........: hashcat
Status...........: Exhausted
...
Le statut est Exhausted car le client Brain a demandé au serveur concernant chaque mot de passe dans wordlist.txt, et le serveur a répondu : "Oui, tous ceux-ci ont déjà été essayés." Le client a alors su qu'il n'y avait pas de travail à faire et s'est terminé immédiatement. Cela démontre la puissance et l'efficacité du Hashcat Brain.
Résumé
Dans ce laboratoire, vous avez exploré avec succès le Hashcat Brain, une fonctionnalité puissante pour optimiser les opérations de cassage de mots de passe distribuées.
Vous avez appris :
- Le concept fondamental derrière Hashcat Brain et comment il évite le travail redondant.
- Comment démarrer un serveur Hashcat Brain et le laisser générer un mot de passe sécurisé.
- Comment localiser le fichier de session du serveur pour récupérer le mot de passe.
- Comment configurer un client Hashcat avec les indicateurs nécessaires pour se connecter au Brain.
- Comment lancer une attaque et observer le Brain en action, en constatant comment il ignore intelligemment les mots de passe précédemment tentés.
En maîtrisant le Hashcat Brain, vous pouvez améliorer considérablement l'efficacité de toute campagne de récupération de mots de passe à grande échelle ou de longue durée, économisant ainsi du temps et des ressources informatiques.


