Itérer à travers les mots de passe dans les attaques 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 (lab), nous allons explorer comment Hydra itère à travers les noms d'utilisateur et les mots de passe lors d'une attaque SSH. Nous allons créer des listes de noms d'utilisateur et de mots de passe, puis exécuter une attaque SSH par défaut pour observer le comportement par défaut d'Hydra.

Le laboratoire consiste à préparer les fichiers usernames.txt et passwords.txt contenant respectivement des listes de noms d'utilisateur et de mots de passe. Nous allons ensuite exécuter une attaque SSH de base avec Hydra en utilisant ces listes pour démontrer comment Hydra teste différentes combinaisons. Enfin, nous allons explorer l'impact de l'option -u sur l'ordre dans lequel Hydra teste les combinaisons de noms d'utilisateur et de mots de passe.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") subgraph Lab Skills hydra/password_creation -.-> lab-550771{{"Itérer à travers les mots de passe dans les attaques Hydra"}} hydra/username_creation -.-> lab-550771{{"Itérer à travers les mots de passe dans les attaques Hydra"}} hydra/single_username -.-> lab-550771{{"Itérer à travers les mots de passe dans les attaques Hydra"}} hydra/single_password -.-> lab-550771{{"Itérer à travers les mots de passe dans les attaques Hydra"}} hydra/target_ip -.-> lab-550771{{"Itérer à travers les mots de passe dans les attaques Hydra"}} hydra/target_service -.-> lab-550771{{"Itérer à travers les mots de passe dans les attaques Hydra"}} hydra/ssh_attack -.-> lab-550771{{"Itérer à travers les mots de passe dans les attaques Hydra"}} end

Préparer les listes de noms d'utilisateur et de mots de passe

Dans cette étape, nous allons créer deux fichiers essentiels : une liste de noms d'utilisateur et une liste de mots de passe. Ces listes seront utilisées par Hydra pour tenter des connexions SSH. La création de ces listes nous permet de tester systématiquement diverses combinaisons de noms d'utilisateur et de mots de passe sur notre cible.

Tout d'abord, créons la liste de noms d'utilisateur. Nous allons utiliser l'éditeur de texte nano pour créer un fichier nommé usernames.txt dans le répertoire ~/project.

nano ~/project/usernames.txt

Maintenant, ajoutez les noms d'utilisateur suivants au fichier. Ce ne sont que des exemples ; vous pouvez les personnaliser selon vos besoins.

root
admin
test
user
ubuntu

Appuyez sur Ctrl+O pour enregistrer le fichier, puis appuyez sur Entrée pour confirmer le nom du fichier, et enfin appuyez sur Ctrl+X pour quitter nano.

Ensuite, nous allons créer la liste de mots de passe. Encore une fois, nous allons utiliser nano pour créer un fichier nommé passwords.txt dans le répertoire ~/project.

nano ~/project/passwords.txt

Ajoutez les mots de passe suivants au fichier. N'oubliez pas que ce ne sont que des exemples.

password
123456
qwerty
secret
ubuntu

Appuyez sur Ctrl+O pour enregistrer le fichier, puis appuyez sur Entrée pour confirmer le nom du fichier, et enfin appuyez sur Ctrl+X pour quitter nano.

Pour vérifier que les fichiers ont été créés correctement, vous pouvez utiliser la commande cat pour afficher leur contenu.

cat ~/project/usernames.txt

Vous devriez voir la liste des noms d'utilisateur que vous avez saisis.

root
admin
test
user
ubuntu

De même, vérifiez la liste de mots de passe :

cat ~/project/passwords.txt

Vous devriez voir la liste des mots de passe que vous avez saisis.

password
123456
qwerty
secret
ubuntu

Ces fichiers, usernames.txt et passwords.txt, sont maintenant prêts à être utilisés avec Hydra dans les étapes suivantes.

Exécuter une attaque SSH par défaut

Dans cette étape, nous allons exécuter une attaque SSH de base en utilisant Hydra avec les listes de noms d'utilisateur et de mots de passe que nous avons créées à l'étape précédente. Cela démontrera le comportement par défaut d'Hydra lorsqu'il itère à travers les noms d'utilisateur et les mots de passe.

Avant d'exécuter l'attaque, il est important de comprendre la syntaxe de base de la commande Hydra :

hydra [options] <cible> <service> [options supplémentaires]
  • hydra : La commande pour invoquer l'outil Hydra.
  • [options] : Diverses options pour personnaliser l'attaque, comme la spécification des listes de noms d'utilisateur et de mots de passe.
  • <cible> : L'adresse IP ou le nom d'hôte du serveur SSH cible. Pour ce laboratoire (lab), nous allons utiliser 127.0.0.1 (localhost) comme cible. Remarque : Dans un scénario réel, vous remplaceriez cela par l'adresse IP réelle du serveur que vous testez. Attaquer des systèmes sans autorisation est illégal.
  • <service> : Le service à attaquer (par exemple, ssh, ftp, http). Dans notre cas, il s'agit de ssh.
  • [options supplémentaires] : Options spécifiques au service.

Maintenant, exécutons l'attaque SSH par défaut. Nous allons utiliser l'option -L pour spécifier la liste de noms d'utilisateur et l'option -P pour spécifier la liste de mots de passe.

hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

Cette commande indique à Hydra de :

  • -L ~/project/usernames.txt : Utiliser le fichier usernames.txt dans le répertoire ~/project comme liste de noms d'utilisateur.
  • -P ~/project/passwords.txt : Utiliser le fichier passwords.txt dans le répertoire ~/project comme liste de mots de passe.
  • 127.0.0.1 : Cibler le service SSH en cours d'exécution sur le localhost.
  • ssh : Spécifier que nous attaquons le service SSH.

Exécutez la commande. Hydra tentera maintenant de se connecter au service SSH sur 127.0.0.1 en utilisant chaque nom d'utilisateur dans usernames.txt et chaque mot de passe dans passwords.txt. Par défaut, Hydra itère d'abord à travers les noms d'utilisateur, en essayant chaque mot de passe pour un seul nom d'utilisateur avant de passer au nom d'utilisateur suivant.

La sortie affichera les tentatives en cours. Il y aura probablement de nombreux messages "login failed". Si une connexion réussit, il affichera la combinaison de nom d'utilisateur et de mot de passe. Étant donné que nous utilisons des mots de passe faibles et que nous ciblons le localhost, il est possible qu'une connexion réussisse.

Important : Cette commande peut prendre un certain temps à s'exécuter, en fonction de la taille de vos listes de noms d'utilisateur et de mots de passe. De plus, notez que de nombreuses tentatives de connexion échouées peuvent déclencher des mesures de sécurité sur le système cible, telles que le blocage de compte ou le blocage de l'adresse IP.

Exécuter avec l'option -u pour tester d'abord les mots de passe

Dans cette étape, nous allons utiliser l'option -u avec Hydra pour changer l'ordre dans lequel il tente les connexions. Par défaut, Hydra itère d'abord à travers les noms d'utilisateur, en essayant tous les mots de passe pour chaque nom d'utilisateur avant de passer au suivant. L'option -u inverse ce comportement, faisant en sorte que Hydra itère d'abord à travers les mots de passe, en essayant chaque mot de passe pour tous les noms d'utilisateur avant de passer au mot de passe suivant.

Cela peut être utile dans les situations où vous soupçonnez qu'un mot de passe commun est utilisé sur plusieurs comptes.

Pour utiliser l'option -u, nous l'ajoutons simplement à notre commande Hydra.

hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

Cette commande indique à Hydra de :

  • -u : Tester d'abord les mots de passe.
  • -L ~/project/usernames.txt : Utiliser le fichier usernames.txt dans le répertoire ~/project comme liste de noms d'utilisateur.
  • -P ~/project/passwords.txt : Utiliser le fichier passwords.txt dans le répertoire ~/project comme liste de mots de passe.
  • 127.0.0.1 : Cibler le service SSH en cours d'exécution sur le localhost.
  • ssh : Spécifier que nous attaquons le service SSH.

Exécutez la commande. Hydra tentera maintenant de se connecter au service SSH sur 127.0.0.1. Cette fois, il essaiera le premier mot de passe dans passwords.txt avec tous les noms d'utilisateur dans usernames.txt avant de passer au mot de passe suivant.

Observez la sortie. Vous devriez remarquer que l'ordre des tentatives est différent de l'étape précédente. Hydra essaiera maintenant le même mot de passe avec plusieurs noms d'utilisateur successivement.

Comme précédemment, la sortie affichera les tentatives en cours. Il y aura probablement de nombreux messages "login failed". Si une connexion réussit, il affichera la combinaison de nom d'utilisateur et de mot de passe.

En comparant la sortie de cette commande avec la sortie de la commande de l'étape précédente, vous pouvez voir la différence dans l'ordre des tentatives de connexion. Cela peut être utile pour comprendre le fonctionnement d'Hydra et pour choisir la stratégie d'attaque la plus efficace pour une situation donnée.

Comparer l'ordre des tentatives

Dans cette étape, nous allons analyser et comparer l'ordre des tentatives de connexion effectuées par Hydra dans les deux étapes précédentes. Cela nous aidera à comprendre l'impact de l'option -u sur la stratégie d'attaque.

Pour comparer efficacement l'ordre des tentatives, nous pouvons utiliser la commande script pour capturer la sortie des deux commandes Hydra, puis analyser la sortie capturée.

Tout d'abord, capturons la sortie de la commande Hydra par défaut (sans l'option -u) dans un fichier nommé default_attack.log dans le répertoire ~/project.

script -c "hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh" ~/project/default_attack.log

Cette commande démarrera une nouvelle session de shell en utilisant script, exécutera la commande Hydra dans cette session et enregistrera toute la sortie dans le fichier journal spécifié. Tapez exit pour terminer la session script une fois que Hydra aura terminé.

Ensuite, capturons la sortie de la commande Hydra avec l'option -u dans un fichier nommé u_attack.log dans le répertoire ~/project.

script -c "hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh" ~/project/u_attack.log

De même, cette commande capturera la sortie de la commande Hydra avec l'option -u dans le fichier u_attack.log. Tapez exit pour terminer la session script une fois que Hydra aura terminé.

Maintenant que nous avons capturé la sortie des deux commandes, nous pouvons utiliser la commande head pour afficher les premières lignes de chaque fichier journal et comparer l'ordre des tentatives.

head ~/project/default_attack.log

Examinez la sortie. Vous devriez voir les noms d'utilisateur être itérés, chaque mot de passe étant testé pour un seul nom d'utilisateur avant de passer au nom d'utilisateur suivant.

Ensuite, affichez les premières lignes du fichier u_attack.log :

head ~/project/u_attack.log

Examinez cette sortie. Vous devriez voir les mots de passe être itérés, chaque mot de passe étant testé pour tous les noms d'utilisateur avant de passer au mot de passe suivant.

En comparant les deux fichiers journaux, vous pouvez clairement voir la différence dans l'ordre des tentatives de connexion. La stratégie d'attaque par défaut itère à travers les noms d'utilisateur, tandis que l'attaque avec l'option -u itère à travers les mots de passe.

Cette comparaison souligne l'importance de comprendre les différentes options disponibles dans Hydra et comment elles peuvent être utilisées pour adapter la stratégie d'attaque à une situation spécifique.

Résumé

Dans ce laboratoire (lab), nous avons commencé par préparer les fichiers nécessaires pour une attaque SSH avec Hydra. Plus précisément, nous avons créé les fichiers usernames.txt et passwords.txt dans le répertoire ~/project en utilisant l'éditeur de texte nano. Ces fichiers contiennent des listes de noms d'utilisateur et de mots de passe potentiels que Hydra utilisera pour tenter des connexions SSH. La commande cat a ensuite été utilisée pour vérifier le contenu des deux fichiers, afin de nous assurer qu'ils ont été créés correctement et contiennent les listes prévues.

L'étape suivante a consisté à exécuter une attaque SSH par défaut en utilisant Hydra avec les listes de noms d'utilisateur et de mots de passe créées. Cela a démontré le comportement d'itération par défaut d'Hydra lorsqu'il tente de casser les connexions SSH.