Fondamentaux du Hachage avec Hashcat

LinuxBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le monde du hachage (hashing) et du cassage de mots de passe (password cracking) ! Le hachage est un concept fondamental en cybersécurité, utilisé pour vérifier l'intégrité des données et stocker les mots de passe de manière sécurisée. Une fonction de hachage prend une entrée (comme un mot de passe) et retourne une chaîne d'octets de taille fixe, le hachage. Ce processus est conçu pour être unidirectionnel, ce qui signifie qu'il n'est pas facile de l'inverser pour retrouver l'entrée originale.

Hashcat est un outil de récupération de mots de passe puissant et mondialement reconnu. Avant de pouvoir l'utiliser efficacement, vous devez comprendre les bases de ce que sont les hachages et comment les manipuler.

Dans ce laboratoire, vous apprendrez les concepts fondamentaux du hachage. Vous explorerez les types de hachage courants, générerez votre propre hachage, le préparerez pour une utilisation avec Hashcat, et comprendrez la différence cruciale entre un mot de passe et son hachage. Cette connaissance est la première étape essentielle de votre parcours vers la maîtrise de Hashcat.

Comprendre les types de hachage courants - MD5, SHA1 et NTLM

Dans cette étape, vous allez découvrir trois types de hachage courants que vous rencontrerez fréquemment dans le domaine de la cybersécurité : MD5, SHA1 et NTLM. Il n'y a pas de commandes à exécuter à cette étape ; l'objectif est de comprendre ces concepts fondamentaux.

  • Qu'est-ce qu'un Hachage (Hash) ?
    Un hachage est une chaîne de caractères unique de taille fixe générée à partir d'un bloc de données. Les algorithmes de hachage sont conçus pour être des fonctions unidirectionnelles, ce qui signifie qu'il est pratiquement impossible d'inverser le processus et de retrouver les données d'entrée originales à partir du seul hachage.

  • MD5 (Message Digest 5)
    MD5 est l'un des algorithmes de hachage les plus anciens et les plus connus. Il produit une valeur de hachage de 128 bits (32 caractères hexadécimaux). Bien qu'il ait été populaire pour le stockage des mots de passe, il est désormais considéré comme non sécurisé à cette fin en raison de vulnérabilités qui le rendent susceptible aux "collisions" (lorsque deux entrées différentes produisent le même hachage). Aujourd'hui, il est principalement utilisé pour vérifier l'intégrité des fichiers afin de s'assurer qu'un fichier n'a pas été altéré pendant le transfert.

  • SHA-1 (Secure Hash Algorithm 1)
    SHA-1 a été développé comme successeur de MD5. Il produit un hachage de 160 bits (40 caractères hexadécimaux). Comme MD5, SHA-1 n'est plus considéré comme sûr à des fins cryptographiques en raison des faiblesses découvertes. Cependant, vous le trouverez toujours dans les systèmes plus anciens et les applications héritées (legacy).

  • NTLM (NT LAN Manager)
    NTLM est un algorithme de hachage utilisé par Microsoft Windows pour stocker les mots de passe des utilisateurs. Lorsque vous définissez un mot de passe sur un système Windows, il est converti en un hachage NTLM et stocké. Ces hachages sont une cible courante lors des exercices de tests d'intrusion impliquant des environnements Windows.

Comprendre ces types est la première étape pour identifier un hachage et choisir la méthode appropriée pour le casser.

Créer un hachage MD5 à partir d'une chaîne en utilisant 'echo' et 'md5sum'

Dans cette étape, vous allez générer un hachage MD5 à partir d'une simple chaîne de texte. C'est une tâche courante pour hacher rapidement un bloc de données depuis la ligne de commande. Nous utiliserons deux utilitaires Linux standards : echo et md5sum.

Tout d'abord, comprenons les outils :

  • echo : Cette commande est utilisée pour afficher une ligne de texte.
  • md5sum : Cette commande calcule et vérifie les sommes de contrôle MD5 (message digests).
  • | (Pipe) : Cet opérateur envoie la sortie de la commande à sa gauche comme entrée à la commande à sa droite.

Nous allons hacher la chaîne password123. Il est important d'utiliser l'option -n avec echo. Cela indique à echo de ne pas afficher le caractère de nouvelle ligne final, qui serait autrement inclus dans le calcul du hachage et produirait un résultat différent.

Exécutez la commande suivante dans votre terminal :

echo -n "password123" | md5sum

Vous verrez la sortie suivante. La longue chaîne de caractères est le hachage MD5 de "password123", et le - indique que md5sum a lu son entrée depuis l'entrée standard (le pipe) au lieu d'un fichier.

482c811da5d5b4bc6d497ffa98491e38  -

Vous avez maintenant réussi à créer votre premier hachage !

Préparer un fichier texte contenant un seul hachage cible

Dans cette étape, vous allez créer un fichier pour stocker le hachage que vous avez généré. Hashcat et d'autres outils de cassage de mots de passe fonctionnent généralement avec des fichiers contenant un ou plusieurs hachages, et non avec une entrée de chaîne directe. Cela vous permet de cibler plusieurs hachages à la fois.

Nous utiliserons le hachage MD5 pour password123 que vous avez généré à l'étape précédente : 482c811da5d5b4bc6d497ffa98491e38.

Nous pouvons réutiliser la commande echo, mais cette fois nous utiliserons l'opérateur de redirection de sortie > pour écrire la chaîne dans un nouveau fichier nommé target_hash.txt. Cette commande créera le fichier dans votre répertoire courant (~/project).

Exécutez la commande suivante pour créer le fichier :

echo "482c811da5d5b4bc6d497ffa98491e38" > target_hash.txt

Maintenant, vérifions que le fichier a été créé correctement et contient le hachage. Utilisez la commande cat pour afficher le contenu du fichier :

cat target_hash.txt

La sortie devrait être le hachage lui-même :

482c811da5d5b4bc6d497ffa98491e38

Vous disposez maintenant d'un fichier cible correctement formaté, prêt pour un outil de cassage tel que Hashcat.

Identifier le mode de hachage correct pour MD5 à partir de l'aide de Hashcat

Dans cette étape, vous apprendrez à trouver le mode correct pour un type de hachage spécifique dans Hashcat. Hashcat prend en charge des centaines d'algorithmes de hachage différents, et vous devez lui indiquer exactement le type de hachage que vous essayez de casser. Ceci est fait en utilisant un "mode de hachage" numérique.

Pour trouver le mode correct, vous pouvez utiliser le menu d'aide intégré de Hashcat. L'exécution de hashcat --help affichera une très longue liste de tous les types de hachage pris en charge et de leurs modes correspondants. Pour trouver rapidement ce dont nous avons besoin, nous pouvons rediriger cette sortie vers la commande grep pour rechercher "md5".

Exécutez la commande suivante pour rechercher le mode de hachage MD5 :

hashcat --help | grep -i "md5"

L'option -i dans grep rend la recherche insensible à la casse. Vous verrez beaucoup de sortie, car il existe de nombreuses variantes de MD5. Recherchez la plus basique.

...
      0 | MD5                                            | Raw Hash
...
   2410 | Cisco-ASA MD5                                  | Operating System
...

Comme vous pouvez le voir dans la sortie, le mode de hachage pour un hachage MD5 standard et brut est 0. C'est le nombre que vous fourniriez à Hashcat avec l'option -m (par exemple, -m 0) pour lui indiquer que vous cassez un hachage MD5.

Différencier un hachage d'un mot de passe

Dans cette dernière étape, nous allons renforcer la différence cruciale entre un mot de passe et son hachage. C'est un concept fondamental dans le cassage de mots de passe.

  • Le Mot de passe est la chaîne secrète, lisible par l'homme. Dans notre exemple, c'est password123.
  • Le Hachage est la chaîne brouillée de longueur fixe générée à partir du mot de passe. Dans notre exemple, c'est 482c811da5d5b4bc6d497ffa98491e38.

Le cassage de mots de passe ne revient pas sur le hachage. Au lieu de cela, il fonctionne en prenant une liste de mots de passe potentiels (une wordlist), en hachant chacun d'eux, et en comparant le résultat au hachage cible. S'ils correspondent, le mot de passe a été trouvé.

Pour illustrer cela, créons un fichier wordlist simple. Dans un scénario réel, ce fichier contiendrait des millions de tentatives de mots de passe. Pour ce laboratoire, il ne contiendra que le mot de passe correct.

Créez un fichier nommé potential_passwords.txt contenant le mot de passe original :

echo "password123" > potential_passwords.txt

Maintenant, examinons les deux fichiers que vous avez préparés. Utilisez la commande ls pour les voir dans votre répertoire.

ls
potential_passwords.txt  target_hash.txt

Vous avez target_hash.txt, qui contient le hachage à casser, et potential_passwords.txt, qui contient le mot de passe à tester. Cette séparation est essentielle au fonctionnement des outils de cassage de mots de passe.

Résumé

Félicitations pour avoir terminé ce laboratoire ! Vous avez réussi à apprendre les concepts fondamentaux du hachage qui sont requis avant d'utiliser un outil comme Hashcat.

Dans ce laboratoire, vous avez :

  • Appris les concepts derrière les types de hachage courants tels que MD5, SHA-1 et NTLM.
  • Généré un hachage MD5 à partir d'une chaîne en utilisant les commandes echo et md5sum.
  • Préparé un fichier de hachage cible, qui est le format standard pour les outils de cassage.
  • Utilisé la commande hashcat --help pour identifier le mode de hachage correct pour MD5.
  • Solidifié votre compréhension de la différence cruciale entre un mot de passe et son hachage correspondant.

Avec cette base, vous êtes maintenant mieux préparé pour passer à des laboratoires plus avancés où vous utiliserez ces fichiers et concepts pour effectuer une attaque réelle de cassage de mot de passe avec Hashcat.