Introduction
Crunch est un outil en ligne de commande puissant et flexible utilisé pour générer des listes de mots personnalisées. Ces listes de mots sont essentielles dans le domaine de la cybersécurité, en particulier pour les testeurs d'intrusion et les professionnels de la sécurité qui effectuent des audits de robustesse de mots de passe et des attaques par force brute. Contrairement aux listes de mots statiques et préfabriquées, Crunch vous permet de créer des listes très spécifiques basées sur des modèles connus, des ensembles de caractères et des exigences de longueur, augmentant ainsi considérablement l'efficacité d'une attaque.
Dans ce laboratoire, vous apprendrez les bases de Crunch. Vous commencerez par comprendre sa syntaxe de base, puis vous passerez à la génération de listes de mots simples, à l'utilisation d'ensembles de caractères personnalisés, à la création de listes basées sur des modèles, et enfin, au transfert direct de sa sortie vers d'autres outils en ligne de commande.
Comprendre la syntaxe de l'outil Crunch
Dans cette étape, vous apprendrez la syntaxe de base de la commande crunch et comment accéder à son menu d'aide. Comprendre la structure fondamentale de la commande est la première étape pour maîtriser ses capacités.
La syntaxe de base de crunch est :
crunch <min-len> <max-len> [characterset] [options]
<min-len>: La longueur minimale des mots à générer.<max-len>: La longueur maximale des mots à générer.[characterset]: (Optionnel) L'ensemble des caractères à utiliser pour générer les mots. S'il n'est pas spécifié,crunchutilise par défaut les lettres minuscules.[options]: (Optionnel) Divers drapeaux pour contrôler la sortie, tels que l'enregistrement dans un fichier ou l'utilisation de modèles.
Pour voir toutes les options disponibles et obtenir un aperçu complet de l'outil, vous pouvez utiliser le drapeau --help. Visualisons le menu d'aide. Toutes les opérations de ce laboratoire seront effectuées dans le répertoire par défaut ~/project.
Exécutez la commande suivante dans votre terminal :
crunch --help
Vous verrez une sortie détaillée listant tous les drapeaux et leurs descriptions. Prenez un moment pour les examiner. C'est une excellente référence lorsque vous souhaitez explorer des fonctionnalités plus avancées.
crunch version 3.6
Crunch can create a wordlist based on criteria you specify. The output from
crunch can be sent to the screen, a file, or to another program.
Usage: crunch <min-len> <max-len> [options]
where min-len and max-len are numbers
... (output truncated) ...
Maintenant que vous êtes familiarisé avec la syntaxe de base et comment trouver de l'aide, vous êtes prêt à générer votre première liste de mots.
Générer une liste de mots simple de longueur fixe
Dans cette étape, vous allez générer votre première liste de mots de longueur fixe. C'est l'une des utilisations les plus courantes de crunch. Lorsque la longueur minimale et la longueur maximale sont identiques, crunch générera toutes les combinaisons possibles pour cette longueur spécifique.
Par défaut, crunch affiche la liste de mots sur la sortie standard (l'écran de votre terminal). Pour les listes volumineuses, cela peut être écrasant et peu utile. Une meilleure pratique consiste à enregistrer la sortie dans un fichier à l'aide de l'option -o.
Générons tous les mots possibles de 3 caractères en utilisant l'alphabet par défaut en minuscules et enregistrons-les dans un fichier nommé 3char.txt.
Exécutez la commande suivante :
crunch 3 3 -o 3char.txt
Cette commande indique à crunch de générer des mots avec une longueur minimale de 3 et une longueur maximale de 3, et de rediriger le résultat vers 3char.txt. Vous verrez quelques statistiques sur la liste générée dans votre terminal.
Crunch will now generate the following amount of data: 20280 bytes, 19 KB, 0 MB, 0 GB
Crunch will now generate the following number of lines: 17576
Pour vérifier que le fichier a été créé correctement, vous pouvez utiliser la commande head pour afficher les premières lignes du fichier.
head -n 5 3char.txt
Vous devriez voir le début de la liste alphabétique.
aaa
aab
aac
aad
aae
Vous avez généré et enregistré avec succès votre première liste de mots.
Générer une liste de mots avec un jeu de caractères spécifique
Dans cette étape, vous apprendrez comment spécifier un jeu de caractères personnalisé pour votre liste de mots. Ceci est extrêmement utile lorsque vous avez des informations sur les caractères possibles dans un mot de passe (par exemple, il ne contient que des chiffres, ou seulement des lettres spécifiques).
Pour spécifier un jeu de caractères, il suffit d'ajouter la chaîne de caractères que vous souhaitez utiliser à la fin de la commande, après les arguments de longueur.
Générons une liste de codes PIN à 4 chiffres, en utilisant uniquement les chiffres 0, 1, 2 et 3. Nous enregistrerons cette liste dans un fichier nommé 4digit.txt.
Exécutez cette commande :
crunch 4 4 0123 -o 4digit.txt
Ici, 4 4 définit la longueur à exactement quatre caractères, 0123 fournit le jeu de caractères personnalisé, et -o 4digit.txt enregistre la sortie.
Inspectons le début du fichier généré pour confirmer la sortie.
head -n 5 4digit.txt
La sortie affichera les cinq premières combinaisons utilisant uniquement les chiffres spécifiés.
0000
0001
0002
0003
0010
Comme vous pouvez le constater, crunch utilise maintenant uniquement les caractères que vous avez fournis, vous donnant beaucoup plus de contrôle sur la liste de mots générée.
Utiliser le drapeau -t pour générer des mots basés sur un modèle
Dans cette étape, vous utiliserez le drapeau -t pour générer des listes de mots basées sur un modèle spécifique. C'est l'une des fonctionnalités les plus puissantes de Crunch, vous permettant de créer des listes de mots très ciblées si vous connaissez une partie de la structure du mot de passe.
Le drapeau -t utilise des espaces réservés spéciaux pour représenter différents types de caractères :
@sera remplacé par des lettres minuscules.,sera remplacé par des lettres majuscules.%sera remplacé par des chiffres.^sera remplacé par des symboles.
Imaginons que vous sachiez qu'un mot de passe commence par le mot "user", suivi de deux chiffres, et se termine par une seule lettre majuscule. Le modèle serait user%%,. La longueur totale est de 7 caractères (4 pour "user", 2 pour %%, 1 pour ,).
Générons une liste de mots basée sur ce modèle et enregistrons-la dans pattern.txt.
crunch 7 7 -t user%%, -o pattern.txt
Cette commande indique à crunch de générer des mots de exactement 7 caractères, en suivant le modèle user%%,.
Maintenant, regardons les premières lignes du fichier de sortie.
head -n 5 pattern.txt
La sortie correspondra au modèle que vous avez défini.
user00A
user00B
user00C
user00D
user00E
Cette méthode réduit considérablement la taille de la liste de mots et le temps requis pour une attaque par force brute en se concentrant uniquement sur les candidats de mots de passe plausibles.
Transférer la sortie de Crunch directement vers Hashcat
Dans cette étape, vous apprendrez une technique puissante : le transfert (piping) de la sortie de crunch directement vers un autre outil. C'est très efficace car cela évite d'écrire une liste de mots potentiellement massive sur votre disque, économisant ainsi de l'espace et du temps. Les mots sont générés et "transférés" (envoyés) au programme suivant en temps réel.
Bien que crunch soit souvent utilisé avec des outils de cassage de mots de passe comme Hashcat ou John the Ripper, nous allons simuler ce processus en utilisant une simple commande grep. grep est un outil de recherche de texte, et il servira à démontrer le concept de transfert.
Imaginons que nous essayions de trouver le mot de passe labex23. Nous suspectons que le mot de passe commence par "labex" et est suivi de deux chiffres.
Nous pouvons générer des mots correspondant à ce modèle et les transférer directement vers grep pour voir si notre mot de passe cible se trouve dans la liste générée. Le symbole de transfert | est utilisé pour connecter la sortie d'une commande à l'entrée d'une autre.
Exécutez la commande suivante :
crunch 7 7 -t labex%% | grep "labex23"
Cette commande fait deux choses :
crunch 7 7 -t labex%%génère tous les mots de 7 caractères commençant par "labex" suivi de deux chiffres (par exemple,labex00,labex01, ...).- Le transfert
|envoie chaque mot généré à la commandegrep "labex23", qui vérifie si le mot correspond à "labex23".
Si une correspondance est trouvée, grep l'affichera sur le terminal.
labex23
Vous avez réussi à générer une liste de mots à la volée et à la traiter avec un autre outil, une compétence essentielle pour des tests de sécurité efficaces.
Résumé
Félicitations pour avoir terminé ce laboratoire ! Vous avez acquis des compétences fondamentales dans l'utilisation de crunch, un outil polyvalent pour générer des listes de mots personnalisées.
Dans ce laboratoire, vous avez appris à :
- Comprendre la syntaxe de base de la commande
crunch. - Générer des listes de mots simples d'une longueur fixe et les enregistrer dans un fichier.
- Spécifier un jeu de caractères personnalisé pour créer des listes de mots plus ciblées.
- Utiliser le drapeau
-tpour générer des mots basés sur un modèle connu. - Transférer la sortie de
crunchdirectement vers d'autres outils en ligne de commande commegreppour effectuer un traitement en temps réel sans enregistrer dans un fichier.
Ces compétences sont fondamentales pour de nombreuses tâches en cybersécurité, en particulier dans l'audit de mots de passe et les tests d'intrusion. En créant des listes de mots sur mesure, vous pouvez améliorer considérablement l'efficacité et le taux de réussite de vos évaluations de sécurité.


