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.
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
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 :
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 :
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.
Test basé sur une liste (courant pour les attaques par dictionnaire) :
Ici, Hydra essaiera toutes les combinaisons possibles entre les noms d'utilisateur dans usernames.txt et les mots de passe dans passwords.txt.
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 :
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 :
(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.
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 :
-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 :
La ligne [DATA] affiche le service cible et l'adresse attaquée
[STATUS] fournit des statistiques en temps réel sur la progression de l'attaque
La ligne la plus importante affiche toutes les informations d'identification (credentials) trouvées au format : [port][service] host: IP login: username password: password
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 :
Une fois la commande terminée, vous pouvez afficher les résultats enregistrés avec :
cat results.txt
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.