Automatiser le cracking avec un script Bash

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans le cadre des tests d'intrusion et de l'audit de sécurité, il est courant d'essayer plusieurs techniques de cassage de mots de passe sur un ensemble de hachages. L'exécution manuelle de chaque commande peut être longue et inefficace. Le scripting Bash offre un moyen puissant d'automatiser ce processus, en créant une chaîne d'attaques qui s'exécutent séquentiellement jusqu'à ce que le mot de passe soit trouvé.

Dans ce laboratoire, vous allez créer un script Bash pour automatiser une série d'attaques à l'aide de hashcat, un outil de récupération de mots de passe populaire et puissant. Vous apprendrez à structurer un script pour tenter d'abord une attaque par dictionnaire, suivie d'une attaque basée sur des règles, et enfin une attaque par masque. Cette expérience pratique vous introduira aux bases de l'automatisation dans un contexte de cybersécurité.

À la fin de ce laboratoire, vous serez capable de :

  • Créer et rendre un script Bash exécutable.
  • Ajouter une séquence de commandes hashcat à un script.
  • Comprendre et implémenter différents modes d'attaque hashcat.
  • Exécuter un script pour automatiser un flux de travail.

Créer un nouveau fichier de script Bash

Dans cette étape, vous allez créer un fichier de script Bash vide, ajouter la ligne shebang nécessaire et le rendre exécutable. Un script Bash est un fichier texte brut contenant une série de commandes. Le shebang (#!/bin/bash) au début du script indique au système quel interpréteur utiliser pour exécuter les commandes contenues dans le fichier.

Tout d'abord, créez un nouveau fichier nommé attack.sh dans le répertoire ~/project en utilisant la commande touch.

touch attack.sh

Ensuite, ouvrez le fichier avec l'éditeur de texte nano pour ajouter la ligne shebang.

nano attack.sh

À l'intérieur de l'éditeur nano, ajoutez la ligne suivante en haut du fichier. Cela déclare le fichier comme un script Bash.

#!/bin/bash

Appuyez sur Ctrl+X, puis Y, et Entrée pour enregistrer le fichier et quitter nano.

Enfin, vous devez accorder au script les permissions d'exécution afin de pouvoir l'exécuter comme un programme. Utilisez la commande chmod avec l'indicateur +x pour ce faire.

chmod +x attack.sh

Vous pouvez vérifier les permissions en utilisant ls -l. Vous devriez voir un 'x' dans le bloc des permissions pour attack.sh.

ls -l attack.sh

Sortie attendue :

-rwxr-xr-x 1 labex labex 12 May 20 10:00 attack.sh

Ajouter une commande Hashcat pour une attaque par dictionnaire

Dans cette étape, vous allez ajouter la première commande à votre script : une attaque par dictionnaire. C'est l'une des méthodes de cassage de mots de passe les plus courantes et les plus efficaces. Elle consiste à essayer chaque mot d'une liste donnée (le dictionnaire) comme mot de passe potentiel.

Nous utiliserons hashcat pour effectuer cette attaque. L'environnement de laboratoire a été préconfiguré avec un fichier de hachage hashes.txt et une liste de mots wordlist.txt.

Ouvrez à nouveau votre script attack.sh avec nano.

nano attack.sh

Ajoutez la commande hashcat suivante sous la ligne #!/bin/bash.

hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist.txt

Analysons cette commande :

  • hashcat : Le programme que nous exécutons.
  • -m 0 : Spécifie le type de hachage. 0 correspond à MD5.
  • -a 0 : Spécifie le mode d'attaque. 0 correspond à une attaque par dictionnaire directe.
  • /home/labex/project/hashes.txt : Le fichier contenant le(s) hachage(s) à casser.
  • /home/labex/project/wordlist.txt : Le fichier dictionnaire à utiliser pour l'attaque.

Votre fichier attack.sh devrait maintenant ressembler à ceci :

#!/bin/bash
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist.txt

Appuyez sur Ctrl+X, puis Y, et Entrée pour enregistrer et quitter. Pour l'instant, nous construisons simplement le script et ne l'exécuterons pas avant la dernière étape.

Ajouter une deuxième commande pour une attaque basée sur des règles

Dans cette étape, vous allez ajouter une deuxième attaque au script. Si l'attaque par dictionnaire échoue, une attaque basée sur des règles est souvent la prochaine étape logique. Cette attaque prend une liste de mots et applique un ensemble de règles à chaque mot pour générer de nouveaux candidats de mots de passe. Par exemple, une règle pourrait ajouter "123" à chaque mot ou mettre en majuscule la première lettre.

Nous avons préparé une liste de mots distincte wordlist_for_rule.txt et un fichier de règles simple rules.txt pour cette démonstration.

Ouvrez à nouveau attack.sh avec nano.

nano attack.sh

Ajoutez la commande suivante sur une nouvelle ligne, après la commande d'attaque par dictionnaire.

hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist_for_rule.txt -r /home/labex/project/rules.txt

La nouvelle partie de cette commande est :

  • -r /home/labex/project/rules.txt : Cet indicateur indique à hashcat d'appliquer les règles définies dans le fichier spécifié.

Votre script attack.sh devrait maintenant contenir deux commandes hashcat :

#!/bin/bash
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist.txt
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist_for_rule.txt -r /home/labex/project/rules.txt

Appuyez sur Ctrl+X, Y, et Entrée pour enregistrer les modifications. Le script exécutera maintenant ces commandes séquentiellement lorsqu'il sera lancé.

Ajouter une troisième commande pour une attaque par masque

Dans cette étape, vous allez ajouter la dernière méthode d'attaque à votre script : une attaque par masque. Cette méthode est également connue sous le nom d'attaque par force brute et est utile lorsque vous connaissez la structure du mot de passe, comme sa longueur ou les types de caractères qu'il contient.

Le masque définit la structure. Par exemple, ?l représente une lettre minuscule, ?u une lettre majuscule, ?d un chiffre et ?s un caractère spécial.

Ouvrez attack.sh une dernière fois avec nano.

nano attack.sh

Ajoutez la commande d'attaque par masque suivante sur une nouvelle ligne à la fin du script. Ce masque ?l?l?l?l?l?l?l?l testera toutes les combinaisons de mots de passe de 8 caractères en minuscules.

hashcat -m 0 -a 3 /home/labex/project/hashes.txt ?l?l?l?l?l?l?l?l

Les parties clés de cette commande sont :

  • -a 3 : Ceci définit le mode d'attaque sur 3, qui est l'attaque par masque.
  • ?l?l?l?l?l?l?l?l : C'est le masque lui-même, définissant la structure du mot de passe à tester.

Votre script attack.sh complet devrait maintenant ressembler à ceci :

#!/bin/bash
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist.txt
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist_for_rule.txt -r /home/labex/project/rules.txt
hashcat -m 0 -a 3 /home/labex/project/hashes.txt ?l?l?l?l?l?l?l?l

Enregistrez le fichier et quittez nano en appuyant sur Ctrl+X, Y, et Entrée. Votre script d'attaque automatisé est maintenant terminé.

Exécuter le script pour lancer la chaîne d'attaques automatiquement

Dans cette dernière étape, vous allez exécuter le script que vous avez créé. Lorsque vous lancez ./attack.sh, le shell exécutera les commandes qu'il contient une par une. hashcat est intelligent ; une fois qu'il a trouvé un hash, il stocke le résultat dans un "potfile" (~/.local/share/hashcat/hashcat.potfile) et n'essaiera pas de le cracker à nouveau.

Maintenant, exécutez le script depuis votre terminal.

./attack.sh

Le script lancera la première commande hashcat. Comme notre wordlist.txt contient le mot de passe correct ("password"), la première attaque réussira. Vous verrez la sortie de hashcat lors de son initialisation et de son exécution.

Une exécution réussie affichera un statut Cracked (Trouvé). Parce que le mot de passe est trouvé lors de la première étape, hashcat l'ajoutera au potfile. Les commandes suivantes dans le script s'exécuteront, mais hashcat verra que le hash est déjà trouvé et l'ignorera.

Pour voir le mot de passe trouvé, vous pouvez utiliser l'option --show de hashcat.

hashcat -m 0 --show /home/labex/project/hashes.txt

Cette commande vérifie le potfile pour tous les hashes trouvés correspondant au fichier d'entrée et les affiche.

Sortie attendue :

5f4dcc3b5aa765d61d8327deb882cf99:password

Félicitations ! Vous avez créé et exécuté avec succès un script Bash pour automatiser une chaîne d'attaques de cracking de mots de passe.

Résumé

Dans ce laboratoire, vous avez appris les bases de l'automatisation des tâches de sécurité à l'aide de scripts Bash. Vous avez créé avec succès un script qui enchaîne plusieurs techniques de cracking de mots de passe avec hashcat.

Vous avez commencé par créer un nouveau fichier de script Bash et l'avez rendu exécutable. Ensuite, vous avez progressivement ajouté des commandes pour une attaque par dictionnaire, une attaque basée sur des règles et une attaque par masque. Enfin, vous avez exécuté le script pour le voir en action, en observant comment hashcat trouve efficacement le mot de passe lors de la première étape et enregistre le résultat.

Les compétences clés que vous avez pratiquées comprennent :

  • Création de scripts Bash de base (touch, chmod, shebang).
  • Utilisation de hashcat pour différents modes d'attaque (-a 0, -a 3).
  • Implémentation d'attaques par dictionnaire, basées sur des règles et par masque.
  • Automatisation d'une séquence de commandes pour créer un flux de travail efficace.

Cette approche de scripting et d'automatisation est une compétence fondamentale en cybersécurité, en administration système et dans de nombreux autres domaines de l'informatique, vous permettant d'effectuer des tâches complexes et répétitives avec une seule commande.