Casser le mot de passe d'une base de données KeePass KDBX

Kali LinuxBeginner
Pratiquer maintenant

Introduction

KeePass est un gestionnaire de mots de passe open-source populaire qui vous aide à gérer vos mots de passe de manière sécurisée. Il stocke les mots de passe dans un fichier de base de données chiffré, généralement avec une extension .kdbx. Bien que très sécurisée, la robustesse de la protection de la base de données repose fortement sur le mot de passe maître choisi par l'utilisateur.

Dans ce laboratoire, vous endosserez le rôle d'un analyste en sécurité pour tester la robustesse d'un mot de passe de base de données KeePass. Vous apprendrez le processus fondamental de cassage de mots de passe à des fins éthiques et éducatives. Nous utiliserons keepass2john, un outil de la suite John the Ripper, pour extraire le hachage du mot de passe d'un fichier .kdbx d'exemple, puis nous utiliserons hashcat, un puissant outil de récupération de mots de passe, pour le casser à l'aide d'une attaque par dictionnaire.

Cette expérience pratique démontrera comment les attaquants peuvent exploiter des mots de passe faibles et soulignera l'importance d'utiliser des mots de passe maîtres forts et complexes.

Créer une base de données KeePass d'exemple avec un mot de passe simple

Dans cette étape, nous allons créer une base de données KeePass cible. Pour effectuer un test de cassage de mot de passe, nous avons d'abord besoin d'un fichier .kdbx avec lequel travailler. Nous utiliserons l'application KeePass pour créer une nouvelle base de données et la protéger avec un mot de passe simple et facile à deviner à des fins de démonstration.

Tout d'abord, lancez l'application KeePass en tapant son nom dans le terminal.

keepass2

Cela ouvrira l'interface graphique de KeePass. Suivez maintenant ces étapes pour créer la base de données :

  1. Dans la fenêtre KeePass, allez dans le menu et cliquez sur Fichier -> Nouveau....
  2. Une fenêtre "Créer une nouvelle base de données de mots de passe" apparaîtra. Cliquez sur OK pour continuer.
  3. Il vous sera demandé d'enregistrer le nouveau fichier de base de données. Naviguez vers le répertoire /home/labex/project, nommez le fichier MySecrets.kdbx et cliquez sur Enregistrer.
  4. Ensuite, la fenêtre "Créer une clé maître" apparaîtra. C'est ici que vous définissez le mot de passe maître de la base de données. Pour ce laboratoire, entrez password123 dans le champ "Mot de passe maître" et répétez-le dans le champ "Répéter le mot de passe". Cliquez sur OK.
  5. La fenêtre "Nouvelle base de données de mots de passe - Étape 2" apparaîtra. Vous pouvez conserver les paramètres par défaut. Cliquez sur OK.
  6. Votre nouvelle base de données vide est maintenant créée et ouverte. Vous pouvez éventuellement ajouter une entrée d'exemple, mais ce n'est pas obligatoire pour ce laboratoire.
  7. Enfin, fermez l'application KeePass en cliquant sur Fichier -> Quitter.

Vous devriez maintenant avoir un fichier nommé MySecrets.kdbx dans votre répertoire ~/project. Vous pouvez vérifier son existence avec la commande ls.

ls -l ~/project

Vous devriez voir MySecrets.kdbx listé dans la sortie.

Utiliser keepass2john pour extraire le hachage

Dans cette étape, nous allons extraire le hachage du mot de passe du fichier MySecrets.kdbx. Les outils de cassage de mots de passe comme hashcat ne fonctionnent pas directement sur le fichier de base de données lui-même. Au lieu de cela, ils opèrent sur un "hachage", qui est une représentation cryptographique du mot de passe maître.

Nous utiliserons keepass2john, un utilitaire inclus dans la suite de cassage de mots de passe John the Ripper, pour convertir les informations de clé de la base de données KeePass dans un format que hashcat peut comprendre.

Ouvrez votre terminal et exécutez la commande suivante. Cette commande lit le fichier MySecrets.kdbx et génère le hachage correspondant, que nous redirigeons et enregistrons dans un nouveau fichier nommé keepass.hash.

keepass2john ~/project/MySecrets.kdbx > ~/project/keepass.hash

Cette commande ne produira aucune sortie visible dans le terminal car la sortie a été redirigée vers le fichier keepass.hash. Pour voir le contenu du fichier de hachage nouvellement créé, utilisez la commande cat :

cat ~/project/keepass.hash

La sortie sera une seule longue ligne de texte qui ressemblera à ceci :

MySecrets:$keepass$*2*6000*0*b1b5b8a8a5b8a8a5b8a8a5b8a8a5b8a8*...*...

Cette chaîne est le hachage. Elle contient toutes les informations nécessaires pour que hashcat tente de casser le mot de passe, y compris l'algorithme de chiffrement, le sel (salt) et la clé maître chiffrée.

Identifier le mode Hashcat correct pour KeePass

Dans cette étape, nous allons déterminer le mode correct que hashcat doit utiliser lors du cassage de notre hachage KeePass. hashcat est un outil extrêmement polyvalent qui prend en charge des centaines de types de hachages différents, des mots de passe de systèmes d'exploitation aux formats spécifiques aux applications.

Pour fonctionner correctement, nous devons explicitement indiquer à hashcat quel type de hachage nous fournissons. Cela se fait en spécifiant un mode numérique à l'aide de l'indicateur -m. Pour trouver le numéro de mode pour KeePass, nous pouvons consulter la documentation d'aide de hashcat.

Exécutez la commande suivante dans votre terminal. Elle redirige la sortie complète de l'aide de hashcat vers grep, qui filtre ensuite les lignes contenant le mot "keepass".

hashcat --help | grep -i keepass

L'indicateur -i dans grep rend la recherche insensible à la casse. La sortie vous montrera les modes pertinents :

13400 | KeePass 1 (AES/Twofish) / KeePass 2 (AES)             | Password Managers

D'après cette sortie, nous pouvons voir que le mode pour les bases de données KeePass 1 et 2 est 13400. C'est le numéro dont nous aurons besoin dans la dernière étape pour lancer notre attaque.

Préparer une liste de mots pour l'attaque

Dans cette étape, nous allons préparer une liste de mots pour notre attaque par dictionnaire. Une attaque par dictionnaire (ou attaque par liste de mots) est une méthode où l'outil de cassage essaie chaque mot d'une liste pré-compilée comme mot de passe potentiel. Le succès de cette attaque dépend entièrement de la présence du mot de passe correct dans la liste.

Dans des scénarios réels, les attaquants utilisent des listes de mots massives contenant des millions, voire des milliards de mots de passe courants. Pour ce laboratoire, nous allons créer une liste de mots personnalisée très petite pour garantir que le processus de cassage soit rapide et réussi. Plus important encore, nous inclurons le mot de passe correct, password123, dans notre liste.

Utilisez l'éditeur de texte nano pour créer un nouveau fichier nommé wordlist.txt.

nano ~/project/wordlist.txt

Une fois nano ouvert, tapez les mots de passe suivants dans l'éditeur, chacun sur une nouvelle ligne :

password
123456
password123
qwerty
labex

Après avoir tapé les mots, enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, puis Y pour confirmer, et enfin Entrée.

Nous avons maintenant notre liste de mots prête à être utilisée par hashcat.

Lancer l'attaque et récupérer le mot de passe maître

Dans cette dernière étape, nous allons tout rassembler et lancer l'attaque de cassage de mot de passe avec hashcat. Nous avons le fichier de hachage (keepass.hash), le mode de hachage correct (13400), et notre liste de mots personnalisée (wordlist.txt).

Maintenant, exécutez la commande suivante dans votre terminal pour lancer l'attaque :

hashcat -m 13400 -a 0 ~/project/keepass.hash ~/project/wordlist.txt

Décortiquons cette commande :

  • hashcat: Le programme que nous exécutons.
  • -m 13400: Spécifie le mode de hachage pour KeePass 2, que nous avons identifié lors d'une étape précédente.
  • -a 0: Spécifie le mode d'attaque. Le mode 0 est une attaque "Straight" ou par dictionnaire.
  • ~/project/keepass.hash: Le chemin vers notre fichier contenant le hachage cible.
  • ~/project/wordlist.txt: Le chemin vers notre liste de mots.

hashcat s'initialisera et commencera à tester les mots de passe de votre liste. Comme notre liste est très courte et contient le mot de passe correct, le processus sera très rapide. Vous verrez des mises à jour de statut, et bientôt le processus se terminera.

Une fois l'attaque terminée, hashcat stocke les mots de passe trouvés dans un fichier appelé "potfile". Pour afficher le mot de passe cassé, vous pouvez exécuter la même commande à nouveau avec l'indicateur --show.

hashcat -m 13400 -a 0 ~/project/keepass.hash ~/project/wordlist.txt --show

Cette commande affichera instantanément le hachage cassé et son mot de passe correspondant :

MySecrets:$keepass$*2*6000*0*...:password123

La sortie montre clairement le hachage original suivi d'un deux-points et du mot de passe récupéré : password123. Félicitations, vous avez réussi à casser le mot de passe de la base de données KeePass !

Résumé

Dans ce laboratoire, vous avez réussi à effectuer une attaque par dictionnaire pour récupérer le mot de passe maître d'une base de données KeePass KDBX.

Vous avez appris un flux de travail complet et pratique pour l'audit de mots de passe, qui comprenait :

  1. La création d'une base de données KeePass d'exemple avec un mot de passe faible.
  2. L'utilisation de keepass2john pour extraire le hachage du mot de passe dans un format adapté au cassage.
  3. L'identification du mode de hachage correct (13400) dans hashcat pour les bases de données KeePass.
  4. La préparation d'une liste de mots personnalisée contenant des mots de passe potentiels.
  5. Le lancement de l'attaque avec hashcat et la récupération réussie du mot de passe.

Cet exercice met en évidence un principe de sécurité essentiel : la sécurité d'une base de données de mots de passe entière n'est aussi forte que son mot de passe maître. L'utilisation de mots de passe simples, courants ou devinables les rend vulnérables aux attaques par dictionnaire, même lorsqu'ils sont protégés par un chiffrement fort. Utilisez toujours des mots de passe maîtres longs, complexes et uniques pour vos gestionnaires de mots de passe.