Apprendre les commandes de base 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, vous apprendrez les commandes et techniques essentielles pour utiliser Hydra, un outil polyvalent de craquage de mots de passe. Vous explorerez les structures de commandes de base avec des options clés telles que le nom d'utilisateur (-l/-L), le mot de passe (-p/-P) et la spécification du port (-s), tout en pratiquant une simple attaque SSH contre un serveur de test.

Les exercices vous guideront à travers la configuration de la cible, l'exécution de l'attaque et l'interprétation de la sortie. En complétant ce laboratoire, vous acquerrez une expérience pratique des fonctionnalités de base d'Hydra pour les tentatives de force brute (brute-force) de base contre les services réseau.

Important : Ce laboratoire est conçu pour l'interface de bureau (Desktop Interface). NE PAS exécuter les commandes dans l'interface à terminal unique (Single-Terminal Interface).

Comprendre la structure de commande d'Hydra

Dans cette étape, nous allons explorer la structure de commande fondamentale d'Hydra, qui est un outil puissant pour tester la sécurité des mots de passe par le biais d'attaques par force brute (brute-force). Avant de commencer, il est important de comprendre qu'Hydra essaie systématiquement différentes combinaisons de noms d'utilisateur et de mots de passe contre les services réseau pour identifier les informations d'identification faibles.

La commande Hydra de base suit ce modèle :

hydra [[[-l LOGIN | -L FILE] [-p PASS | -P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]

Décomposons les options les plus couramment utilisées pour comprendre ce que fait chaque partie :

  • -l ou -L : Elles vous permettent de spécifier soit un seul nom d'utilisateur (-l) pour les tests, soit un fichier contenant plusieurs noms d'utilisateur (-L).
  • -p ou -P : Semblables aux noms d'utilisateur, elles vous permettent de tester soit un seul mot de passe (-p), soit plusieurs mots de passe à partir d'un fichier (-P).
  • -t : Contrôle le nombre de tentatives qu'Hydra effectue simultanément (threads parallèles).
  • -s : Important lorsque le service que vous testez n'utilise pas son numéro de port standard.
  • -vV : Affiche des informations détaillées sur la progression pendant l'attaque.
  • -o : Enregistre vos résultats dans un fichier spécifié pour une consultation ultérieure.

Pour vérifier qu'Hydra fonctionne correctement et voir toutes les options disponibles, nous allons commencer par une simple commande qui affiche le menu d'aide :

hydra -h
hydra help menu

Après avoir exécuté ceci, vous devriez voir la liste complète des options et des commandes d'Hydra. Cette sortie confirme que l'outil est correctement installé et prêt pour nos exercices de test de sécurité. Le menu d'aide est également une référence utile lorsque vous devez vérifier la syntaxe d'une commande spécifique pendant votre travail.

Spécifier l'hôte et le port cible

Dans cette étape, vous apprendrez à spécifier l'hôte et le port cible lors de l'utilisation d'Hydra. Ceci est essentiel pour diriger votre attaque vers le service correct. Considérez cela comme l'adressage d'une enveloppe : vous avez besoin de la bonne destination (IP/nom d'hôte) et de la boîte aux lettres spécifique (port) pour remettre votre message.

Le format de base pour spécifier les informations de la cible dans Hydra est :

hydra [options] < service > :// < target > [:port]

Décomposons chaque composant :

  • <service> : Le protocole ou le service que vous attaquez (par exemple, ssh, ftp, http). Cela indique à Hydra quel type d'authentification tenter.
  • <target> : L'adresse IP ou le nom d'hôte du serveur cible. C'est comme l'adresse du bâtiment auquel vous essayez d'accéder.
  • [:port] : Numéro de port facultatif. Les services fonctionnent généralement sur des ports standard (comme 22 pour SSH), mais ils sont parfois déplacés vers des ports différents pour des raisons de sécurité.

Pour la pratique, nous utiliserons un serveur SSH de test fonctionnant sur localhost (127.0.0.1) sur le port 22. Cela signifie que nous attaquons notre propre machine, ce qui est sûr pour l'apprentissage. Essayez cette commande pour vérifier la spécification de la cible :

hydra -vV -l testuser -p testpass ssh://127.0.0.1:22
hydra test command

Voici ce qui se passe dans cette commande de test :

  • -vV permet à Hydra d'afficher une sortie détaillée afin que vous puissiez voir ce qui se passe
  • -l testuser spécifie un nom d'utilisateur de test
  • -p testpass fournit un mot de passe de test
  • ssh://127.0.0.1:22 indique à Hydra de tenter une authentification SSH sur notre machine locale

Remarque : Il s'agit simplement d'une commande de test pour démontrer la syntaxe. Nous utiliserons de véritables informations d'identification (credentials) dans les étapes ultérieures lorsque vous comprendrez comment les éléments s'assemblent.

Utiliser les options de nom d'utilisateur et de mot de passe

Dans cette étape, nous allons explorer la façon dont Hydra gère les informations d'identification (credentials) pour les attaques par force brute (brute-force). Comprendre ces options est crucial car Hydra doit savoir quelles combinaisons essayer lorsqu'il tente de se connecter au système cible.

Hydra propose trois méthodes principales pour spécifier les informations d'identification, chacune étant adaptée à différents scénarios :

  1. Test d'informations d'identification uniques (utile pour une vérification rapide) :
hydra -l username -p password ssh://127.0.0.1

Cette commande essaie exactement une combinaison nom d'utilisateur/mot de passe contre le service SSH.

  1. Test basé sur une liste (courant pour les attaques par dictionnaire) :
hydra -L usernames.txt -P passwords.txt ssh://127.0.0.1

Ici, Hydra essaiera toutes les combinaisons possibles entre les noms d'utilisateur dans usernames.txt et les mots de passe dans passwords.txt.

  1. Fichier d'informations d'identification appariées (lorsque les noms d'utilisateur et les mots de passe sont directement liés) :
hydra -C creds.txt ssh://127.0.0.1

Cela utilise un fichier où chaque ligne contient un nom d'utilisateur et un mot de passe séparés par un deux-points (username:password).

Créons des fichiers de test pour nous entraîner avec ces options. Tout d'abord, nous allons créer une simple liste de noms d'utilisateur contenant des comptes administratifs courants :

echo -e "admin\nroot\ntestuser" > usernames.txt

Ensuite, nous allons créer une liste de mots de passe avec des mots de passe faibles que l'on trouve souvent dans les systèmes réels :

echo -e "password\n123456\nadmin123" > passwords.txt

Nous pouvons maintenant exécuter une commande de test avec une sortie détaillée (-vV) pour voir comment Hydra traite ces fichiers :

hydra -vV -L usernames.txt -P passwords.txt ssh://127.0.0.1
hydra test command

Les options -vV permettent à Hydra d'afficher une sortie détaillée afin que vous puissiez observer la progression de l'attaque et comprendre ce qui se passe à chaque étape.

Exécuter une commande d'attaque SSH simple

Dans cette étape, vous combinerez tous les apprentissages précédents pour exécuter une attaque SSH par force brute (brute-force) complète à l'aide d'Hydra. Nous utiliserons le serveur SSH de test fonctionnant sur localhost (127.0.0.1) avec les informations d'identification (credentials) que nous avons préparées précédemment. Cet exercice pratique vous aidera à comprendre comment Hydra essaie systématiquement différentes combinaisons de nom d'utilisateur et de mot de passe contre un service SSH.

Avant de lancer l'attaque, vérifions que notre configuration cible fonctionne correctement. Nous allons tenter une connexion SSH manuelle pour confirmer que le service est en cours d'exécution :

ssh [email protected]

(Tapez "Ctrl+C" lorsque vous êtes invité à entrer le mot de passe pour revenir à votre session)

Ce test manuel nous aide à confirmer que le service SSH est actif et répond aux tentatives de connexion. Lorsque Hydra s'exécute, il effectuera des tentatives de connexion similaires, mais automatisera le processus avec plusieurs essais.

La VM LabEx fournit le mot de passe pour labex dans la variable d'environnement PASSWORD. Ajoutons-le au fichier de mots de passe pour les tests :

Important : Exécutez les commandes suivantes dans l'interface de bureau, sinon vous n'obtiendrez pas la variable d'environnement PASSWORD.

echo "labex" > usernames.txt
echo -e "$PASSWORD" >> passwords.txt
environment variable

Exécutons maintenant la commande d'attaque Hydra proprement dite. C'est là que nous rassemblons tous les composants que nous avons préparés : la liste des noms d'utilisateur, la liste des mots de passe et les informations sur la cible :

hydra -vV -L usernames.txt -P passwords.txt -t 4 ssh://127.0.0.1
hydra test command

Décomposons ce que fait chaque paramètre :

  • -vV : Active la sortie détaillée afin que vous puissiez voir la progression d'Hydra en temps réel
  • -L usernames.txt : Spécifie le fichier contenant les noms d'utilisateur potentiels à essayer
  • -P passwords.txt : Spécifie le fichier contenant les mots de passe potentiels à tester
  • -t 4 : Définit le nombre de connexions parallèles (threads) à utiliser
  • ssh://127.0.0.1 : Identifie notre cible comme un service SSH sur localhost

La commande testera systématiquement toutes les combinaisons de nos listes de noms d'utilisateur et de mots de passe. Dans notre environnement de test contrôlé, cela ne permettra pas intentionnellement de trouver des informations d'identification valides, mais vous verrez exactement comment Hydra travaille à travers les combinaisons. La sortie détaillée vous montrera chaque tentative effectuée par Hydra, ce qui vous aidera à comprendre le processus de force brute.

Remarquez comment Hydra gère automatiquement les tentatives infructueuses et continue avec la combinaison suivante. Cela démontre la puissance des outils automatisés par rapport aux tests manuels. Le processus peut prendre quelques instants pendant qu'Hydra travaille sur toutes les combinaisons possibles dans nos fichiers de test.

Vérifier la sortie de la commande

Dans cette étape, nous allons examiner comment lire et comprendre la sortie d'Hydra après avoir exécuté une attaque SSH. Ceci est important car la sortie nous indique si l'attaque a réussi et fournit des informations de débogage précieuses. En tant que débutant, vous apprendrez à identifier les principaux indicateurs de succès dans les résultats.

Lorsque vous avez exécuté la commande d'attaque SSH à l'étape 4, Hydra a généré une sortie qui ressemble à ceci :

[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[STATUS] 80.00 tries/min, 80 tries in 00:01h, 19 to do in 00:01h
[22][ssh] host: 127.0.0.1   login: testuser   password: testpass
1 of 1 target successfully completed, 1 valid password found

Décomposons ce que signifie chaque partie :

  1. La ligne [DATA] affiche le service cible et l'adresse attaquée
  2. [STATUS] fournit des statistiques en temps réel sur la progression de l'attaque
  3. La ligne la plus importante affiche toutes les informations d'identification (credentials) trouvées au format : [port][service] host: IP login: username password: password
  4. La dernière ligne résume les résultats de l'attaque

Pour la documentation et l'analyse ultérieure, vous pouvez enregistrer la sortie d'Hydra dans un fichier à l'aide de l'option -o. Cela crée un enregistrement permanent de vos résultats de test :

hydra -vV -L usernames.txt -P passwords.txt -t 4 -o results.txt ssh://127.0.0.1

Une fois la commande terminée, vous pouvez afficher les résultats enregistrés avec :

cat results.txt
hydra test command

Ce fichier contiendra la même sortie que celle que vous avez vue dans le terminal, ce qui vous permettra d'examiner les résultats ultérieurement ou de les partager avec les membres de l'équipe.

Résumé

Dans ce labo, vous avez appris les commandes et techniques essentielles pour mener des attaques de craquage de mot de passe (password-cracking) à l'aide d'Hydra. Les exercices ont couvert la syntaxe de commande de base, y compris la spécification du nom d'utilisateur/mot de passe avec les options -l/-L et -p/-P, la configuration du port avec -s et la vérification de l'installation de base d'Hydra.

Vous avez également pratiqué la spécification de la cible en utilisant le format <service>://<target>[:port] à travers des exemples pratiques d'attaques SSH. Ces compétences fondamentales vous permettent d'exécuter des opérations Hydra de base tout en comprenant la structure de commande appropriée et la définition de la cible.