Générer des mots de passe avec l'attaque de force brute d'Hydra

HydraHydraBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer la génération de mots de passe et les techniques de force brute à l'aide de Hydra. L'accent est mis sur l'utilisation de l'option -x d'Hydra pour créer des mots de passe en fonction de critères définis, tels que la longueur et les ensembles de caractères.

Le laboratoire vous guide à travers la génération de mots de passe avec l'option -x, en ciblant un serveur FTP factice sur le localhost. Vous apprendrez à spécifier les longueurs minimale et maximale des mots de passe, ainsi qu'à utiliser des ensembles de caractères comme les lettres minuscules. Le laboratoire couvre également la désactivation des symboles avec l'option -y et l'analyse de la sortie d'une attaque de force brute.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/ftp_attack("FTP Brute Force") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/service_options("Service-Specific Options") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/password_creation -.-> lab-550769{{"Générer des mots de passe avec l'attaque de force brute d'Hydra"}} hydra/single_username -.-> lab-550769{{"Générer des mots de passe avec l'attaque de force brute d'Hydra"}} hydra/ftp_attack -.-> lab-550769{{"Générer des mots de passe avec l'attaque de force brute d'Hydra"}} hydra/output_saving -.-> lab-550769{{"Générer des mots de passe avec l'attaque de force brute d'Hydra"}} hydra/verbose_mode -.-> lab-550769{{"Générer des mots de passe avec l'attaque de force brute d'Hydra"}} hydra/service_options -.-> lab-550769{{"Générer des mots de passe avec l'attaque de force brute d'Hydra"}} hydra/troubleshooting -.-> lab-550769{{"Générer des mots de passe avec l'attaque de force brute d'Hydra"}} end

Générer des mots de passe avec l'option -x

Dans cette étape, nous allons explorer comment utiliser l'option -x d'Hydra pour générer des mots de passe en fonction d'un format spécifié. Cela est particulièrement utile lorsque vous avez des informations sur la structure potentielle du mot de passe, comme un préfixe ou un suffixe commun.

L'option -x d'Hydra vous permet de définir une longueur minimale et maximale pour les mots de passe générés, ainsi qu'un ensemble de caractères à utiliser. La syntaxe est -x min:max:charset.

Commençons par un exemple simple. Supposons que nous voulions générer des mots de passe de 6 à 8 caractères de long, en utilisant uniquement des lettres minuscules.

Tout d'abord, accédez au répertoire ~/project :

cd ~/project

Maintenant, utilisons Hydra pour générer des mots de passe et tenter de cracker un serveur FTP. À des fins de démonstration, nous utiliserons un serveur FTP factice qui accepte toujours n'importe quel nom d'utilisateur et mot de passe. Nous utiliserons localhost comme cible, en supposant qu'un serveur FTP est en cours d'exécution localement (bien qu'il n'ait pas besoin de l'être pour cette étape de génération de mots de passe).

Exécutez la commande suivante :

hydra -l user -P /dev/null -vV -x 6:8:lc localhost ftp

Décortiquons cette commande :

  • hydra : L'outil en ligne de commande Hydra.
  • -l user : Spécifie le nom d'utilisateur à utiliser. Nous utilisons "user" ici, mais cela pourrait être n'importe quel nom d'utilisateur.
  • -P /dev/null : Indique à Hydra de ne pas utiliser un fichier de liste de mots de passe. Nous utilisons -x pour générer des mots de passe à la place. /dev/null est un fichier spécial qui jette toute donnée écrite dedans.
  • -vV : Active la sortie détaillée, affichant chaque tentative de connexion.
  • -x 6:8:lc : C'est la partie clé. Elle indique à Hydra de générer des mots de passe avec :
    • 6 : Longueur minimale de 6 caractères.
    • 8 : Longueur maximale de 8 caractères.
    • lc : Utiliser uniquement des lettres minuscules (a-z). D'autres options incluent uc (majuscules), 12 (chiffres), sc (symboles). Vous pouvez les combiner, par exemple, lcuc12 pour les minuscules, les majuscules et les chiffres.
  • localhost : L'hôte cible (dans ce cas, notre serveur FTP factice).
  • ftp : Le service à attaquer (FTP).

Vous verrez Hydra tenter des connexions avec des mots de passe générés comme "aaaaaa", "aaaaaaa", "aaaaaaaa", "aaaaab", etc. Étant donné que nous utilisons /dev/null comme fichier de mots de passe, Hydra n'utilisera que les mots de passe générés par l'option -x.

Note importante : Cet exemple utilise un serveur FTP factice à des fins de démonstration. N'essayez pas de cracker des serveurs FTP sans autorisation explicite.

Maintenant, essayons un exemple plus complexe. Supposons que nous sachions que les mots de passe pourraient commencer par "prefix" et se terminer par un chiffre, avec 4 à 6 caractères alphanumériques entre eux.

Nous ne pouvons pas directement spécifier un préfixe et un suffixe avec -x. Cependant, nous pouvons générer la partie centrale et ensuite ajouter les parties connues au début et à la fin en utilisant d'autres outils (comme sed ou awk) pour créer un fichier de liste de mots de passe, que nous utiliserions ensuite avec Hydra. Pour simplifier, nous nous limiterons à l'utilisation de base de -x dans cette étape. Nous explorerons des manipulations plus avancées de listes de mots de passe dans les étapes suivantes.

Pour l'instant, générons des mots de passe de 8 à 10 caractères de long, en utilisant des lettres minuscules et des chiffres :

hydra -l user -P /dev/null -vV -x 8:10:lc12 localhost ftp

Cela générera des mots de passe comme "aaaaaaaa", "aaaaaaa1", "aaaaaa11", etc.

Cette étape a démontré comment utiliser l'option -x pour générer des mots de passe avec des contraintes de longueur et d'ensemble de caractères spécifiques. C'est une technique puissante lorsque vous avez des informations préalables sur la structure potentielle du mot de passe.

Attaquer un serveur FTP avec des mots de passe générés

Dans cette étape, nous allons nous appuyer sur l'étape précédente et utiliser les capacités de génération de mots de passe d'Hydra pour attaquer un serveur FTP (factice). Nous nous concentrerons sur l'utilisation d'une liste de mots de passe générée "à la volée" avec l'option -x.

En guise de rappel, il est crucial de souligner que l'attaque de systèmes sans autorisation explicite est illégale et contraire à l'éthique. Ce laboratoire a uniquement un but éducatif, et vous ne devriez utiliser ces techniques que sur des systèmes que vous possédez ou pour lesquels vous avez l'autorisation de tester.

Pour cette étape, nous supposerons que vous avez un serveur FTP de base en cours d'exécution (même s'il s'agit d'un serveur factice qui accepte n'importe quelles informations d'identification). Si vous n'en avez pas, vous pouvez rapidement en installer un simple en utilisant Python :

sudo apt update
sudo apt install python3-pyftpdlib

Ensuite, créez un répertoire pour que le serveur FTP puisse le servir :

mkdir ~/project/ftp_root

Et démarrez le serveur FTP :

python3 -m pyftpdlib -p 2121 -w ~/project/ftp_root

Cela démarre un serveur FTP sur le port 2121, servant les fichiers depuis le répertoire ~/project/ftp_root. L'option -w autorise l'accès en écriture. Vous pouvez arrêter le serveur en appuyant sur Ctrl+C. Notez que ceci est un serveur très basique à des fins de test et n'est pas adapté à une utilisation en production.

Maintenant, utilisons Hydra pour attaquer ce serveur FTP. Nous utiliserons l'option -x pour générer des mots de passe et tenter de nous connecter en tant qu'utilisateur "testuser".

hydra -l testuser -P /dev/null -vV -x 4:6:lc 127.0.0.1 ftp

Décortiquons à nouveau cette commande :

  • hydra : L'outil en ligne de commande Hydra.
  • -l testuser : Spécifie le nom d'utilisateur à utiliser : "testuser".
  • -P /dev/null : Indique à Hydra de ne pas utiliser un fichier de liste de mots de passe. Nous utilisons -x pour générer des mots de passe à la place.
  • -vV : Active la sortie détaillée, affichant chaque tentative de connexion.
  • -x 4:6:lc : Cela indique à Hydra de générer des mots de passe avec :
    • 4 : Longueur minimale de 4 caractères.
    • 6 : Longueur maximale de 6 caractères.
    • lc : Utiliser uniquement des lettres minuscules (a-z).
  • 127.0.0.1 : L'hôte cible (localhost). Nous utilisons 127.0.0.1 au lieu de localhost pour éviter les problèmes potentiels de résolution DNS dans le conteneur Docker.
  • ftp : Le service à attaquer (FTP).

Vous devriez voir Hydra tenter des connexions avec des mots de passe générés. Étant donné que notre serveur FTP factice accepte n'importe quelles informations d'identification, Hydra trouvera probablement rapidement un mot de passe valide.

Maintenant, essayons un exemple un peu plus complexe, en combinant des lettres minuscules et des chiffres :

hydra -l testuser -P /dev/null -vV -x 5:7:lc12 127.0.0.1 ftp

Cela générera des mots de passe comme "aaaaa", "aaaaa1", "aaaa11", etc.

Considérations importantes :

  • Limitation de débit (Rate Limiting) : Les serveurs FTP du monde réel ont souvent une limitation de débit pour empêcher les attaques de force brute. Hydra dispose d'options pour contrôler le nombre de connexions simultanées et le délai entre les tentatives.
  • Complexité des mots de passe : L'efficacité d'une attaque de force brute dépend fortement de la complexité des mots de passe. Des mots de passe plus longs et plus complexes (utilisant un mélange de majuscules, de minuscules, de chiffres et de symboles) sont beaucoup plus difficiles à cracker.
  • Implications légales et éthiques : Obtenez toujours une autorisation explicite avant d'essayer de tester la sécurité de tout système.

Cette étape a démontré comment utiliser Hydra avec l'option -x pour générer des mots de passe et attaquer un serveur FTP. N'oubliez pas d'utiliser ces techniques de manière responsable et éthique.

Désactiver les symboles avec l'option -y

Dans cette étape, nous allons apprendre à utiliser l'option -y d'Hydra pour désactiver l'utilisation de symboles lors de la lecture de mots de passe à partir d'un fichier. Cela est utile lorsque vous soupçonnez que le système cible peut avoir des problèmes pour gérer les caractères spéciaux dans les mots de passe, ou lorsque vous souhaitez spécifiquement exclure les symboles de vos tentatives de force brute.

L'option -y indique à Hydra d'ignorer tout symbole présent dans le fichier de liste de mots de passe. Elle n'affecte pas la génération de mots de passe avec l'option -x ; elle ne s'applique qu'au moment de la lecture des mots de passe à partir d'un fichier.

Tout d'abord, créons un fichier de liste de mots de passe contenant quelques mots de passe avec des symboles. Accédez au répertoire ~/project :

cd ~/project

Maintenant, créez un fichier nommé passwords.txt en utilisant nano :

nano passwords.txt

Ajoutez les mots de passe suivants au fichier :

password123
P@sswOrd
secret!
12345
qwerty

Enregistrez le fichier et quittez nano (Ctrl+X, puis Y, puis Entrée).

Maintenant, utilisons Hydra pour attaquer notre serveur FTP factice (en supposant qu'il soit toujours en cours d'exécution depuis l'étape précédente) en utilisant cette liste de mots de passe, sans l'option -y :

hydra -l testuser -P passwords.txt -vV 127.0.0.1 ftp

Hydra tentera de se connecter en utilisant chaque mot de passe du fichier passwords.txt, y compris ceux avec des symboles.

Maintenant, utilisons l'option -y pour désactiver les symboles :

hydra -l testuser -P passwords.txt -y -vV 127.0.0.1 ftp

Avec l'option -y, Hydra traitera effectivement des mots de passe comme "P@sswOrd" en "PsswOrd" et "secret!" en "secret". Il supprime les symboles avant d'effectuer la tentative de connexion.

Note importante : L'option -y modifie les mots de passe avant qu'ils ne soient envoyés au service cible. Cela signifie que si le mot de passe réel nécessite un symbole, l'utilisation de -y vous empêchera de le trouver.

Pour illustrer cela plus en détail, créons un scénario où le mot de passe correct est "secret!". Si nous utilisons -y, Hydra essaiera "secret" et échouera.

Quand utiliser -y :

  • Lorsque vous soupçonnez que le système cible a des problèmes avec les symboles dans les mots de passe.
  • Lorsque vous souhaitez spécifiquement exclure les symboles de vos tentatives de force brute (par exemple, si vous savez que la politique de mot de passe ne les autorise pas).
  • Lorsque vous diagnostiquez des problèmes de connexion et que vous soupçonnez que les symboles pourraient être la cause.

Cette étape a démontré comment utiliser l'option -y d'Hydra pour désactiver les symboles lors de la lecture de mots de passe à partir d'un fichier. N'oubliez pas de prendre en compte l'impact potentiel sur vos tentatives de force brute, car cela peut vous empêcher de trouver des mots de passe contenant des symboles.

Analyser la sortie d'une attaque de force brute

Dans cette étape, nous allons nous concentrer sur l'analyse de la sortie générée par Hydra lors d'une attaque de force brute. Comprendre la sortie est crucial pour identifier les connexions réussies, résoudre les problèmes et optimiser votre stratégie d'attaque.

Hydra offre différents niveaux de verbosité, contrôlés par l'option -v. Nous avons utilisé -vV dans les étapes précédentes, ce qui offre un bon équilibre d'informations. Examinons les différents messages de sortie et leur signification.

Tout d'abord, exécutons une simple commande Hydra contre notre serveur FTP factice (assurez-vous qu'il est toujours en cours d'exécution) :

hydra -l testuser -P passwords.txt -vV 127.0.0.1 ftp

En supposant que vous avez le fichier passwords.txt de l'étape précédente, Hydra tentera de se connecter en utilisant chaque mot de passe du fichier.

Voici une analyse des messages de sortie courants que vous pourriez voir :

  • [DATA] 127.0.0.1:21 - banner: 220 pyftpdlib 1.5.6 : Cela montre la bannière reçue du serveur FTP. La bannière fournit des informations sur le logiciel et la version du serveur.
  • [STATUS] 127.0.0.1:21 - 1/5 [5/5 pp] : Cela indique la progression de l'attaque.
    • 1/5 : Signifie que Hydra a essayé 1 mot de passe sur un total de 5.
    • [5/5 pp] : Montre le nombre de mots de passe par processus.
  • [DEBUG] ... : Les messages de débogage fournissent des informations plus détaillées sur le processus de connexion et d'authentification. Ils sont utiles pour résoudre les problèmes.
  • [21][ftp] host: 127.0.0.1 login: testuser password: password123 : Cela montre les informations d'identification qui sont testées.
  • [21][ftp] host: 127.0.0.1 login: testuser password: P@sswOrd : Cela montre les informations d'identification suivantes qui sont testées.
  • [ATTEMPT][ftp] 127.0.0.1:21 - login: 'testuser' password: 'password123' : Cette ligne indique que Hydra tente de se connecter avec le nom d'utilisateur et le mot de passe spécifiés.
  • [21][ftp] 127.0.0.1: Login incorrect : Cela indique une tentative de connexion échouée. Le message exact dépend de la configuration du serveur FTP.
  • [21][ftp] 127.0.0.1: Invalid username or password : Cela indique également une tentative de connexion échouée.
  • [21][ftp] 127.0.0.1: ftp:Login OK : Ceci est le message le plus important ! Il indique une connexion réussie. Hydra a trouvé une combinaison valide de nom d'utilisateur et de mot de passe.

Si Hydra trouve une connexion valide, il affichera le message "Login OK" puis arrêtera l'attaque (par défaut).

Enregistrer la sortie dans un fichier :

Vous pouvez enregistrer la sortie d'Hydra dans un fichier pour une analyse ultérieure en utilisant l'option -o :

hydra -l testuser -P passwords.txt -vV -o output.txt 127.0.0.1 ftp

Cela enregistrera tous les messages de sortie dans un fichier nommé output.txt dans le répertoire ~/project. Vous pouvez ensuite utiliser des outils comme grep pour rechercher des messages spécifiques, tels que "Login OK".

Par exemple, pour trouver les connexions réussies dans le fichier output.txt :

grep "Login OK" output.txt

Interpréter la sortie :

  • Aucun message "Login OK" : Cela signifie que Hydra n'a pas pu trouver une combinaison valide de nom d'utilisateur et de mot de passe. Cela peut être dû à plusieurs raisons :
    • Le mot de passe correct n'est pas dans votre liste de mots de passe.
    • Le nom d'utilisateur est incorrect.
    • Le service cible n'est pas vulnérable aux attaques de force brute (par exemple, en raison de politiques de blocage de compte).
    • Il y a des problèmes de connectivité réseau.
  • De nombreux messages "Login Incorrect" : Cela indique que Hydra teste de nombreuses combinaisons invalides de nom d'utilisateur et de mot de passe. C'est normal lors d'une attaque de force brute.
  • Erreurs "Connection refused" ou "Timeout" : Ces erreurs indiquent des problèmes de connectivité réseau. Assurez-vous que le service cible est en cours d'exécution et accessible depuis votre machine.

En analysant attentivement la sortie d'Hydra, vous pouvez obtenir des informations précieuses sur la sécurité du système cible et affiner votre stratégie d'attaque.

Résumé

Dans ce laboratoire (lab), nous avons exploré l'utilisation d'Hydra pour générer des mots de passe pour des attaques de force brute, en nous concentrant particulièrement sur l'option -x. Cette option permet de créer des mots de passe en fonction de paramètres définis tels que la longueur minimale et maximale, et les ensembles de caractères (minuscules, majuscules, chiffres, symboles).

Le laboratoire a démontré comment utiliser -x avec des contraintes de longueur spécifiques et l'ensemble de caractères lc (minuscules) pour générer des mots de passe et tenter de craquer un serveur FTP factice exécuté sur le localhost. La commande hydra -l user -P /dev/null -vV -x 6:8:lc localhost ftp a été utilisée pour illustrer ce processus, soulignant l'importance de comprendre la syntaxe et les options d'ensemble de caractères disponibles pour une génération de mots de passe efficace.