Arrêtez les attaques Hydra dès le départ

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 arrêter les attaques Hydra tôt en utilisant ses options pour limiter le nombre de tentatives. Nous commencerons par configurer un serveur FTP en utilisant vsftpd et le configurer avec plusieurs comptes utilisateur, testuser1 et testuser2, chacun avec son propre mot de passe. Cette configuration nous permettra de simuler un scénario où Hydra tente de cracker plusieurs comptes simultanément.

Le laboratoire vous guidera ensuite à travers l'utilisation de l'option -f pour arrêter Hydra après la première connexion réussie et de l'option -F avec une liste multi-hôtes. Enfin, nous comparerons le comportement de -f et -F pour comprendre comment elles peuvent être utilisées pour atténuer les attaques Hydra.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/ftp_attack("FTP Brute Force") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/installation -.-> lab-550774{{"Arrêtez les attaques Hydra dès le départ"}} hydra/single_username -.-> lab-550774{{"Arrêtez les attaques Hydra dès le départ"}} hydra/single_password -.-> lab-550774{{"Arrêtez les attaques Hydra dès le départ"}} hydra/ftp_attack -.-> lab-550774{{"Arrêtez les attaques Hydra dès le départ"}} hydra/multiple_targets -.-> lab-550774{{"Arrêtez les attaques Hydra dès le départ"}} hydra/success_detection -.-> lab-550774{{"Arrêtez les attaques Hydra dès le départ"}} end

Configuration d'un serveur FTP avec plusieurs identifiants

Dans cette étape, nous allons configurer un serveur FTP et le paramétrer avec plusieurs identifiants utilisateur. Cela nous permettra de tester la capacité d'Hydra à cracker plusieurs comptes simultanément. Nous utiliserons vsftpd (Very Secure FTP Daemon) comme serveur FTP.

Premièrement, installons vsftpd :

sudo apt update
sudo apt install vsftpd -y

Ensuite, nous devons configurer vsftpd. Commençons par créer une sauvegarde du fichier de configuration original :

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Maintenant, éditons le fichier de configuration en utilisant nano :

sudo nano /etc/vsftpd.conf

Ajoutez ou modifiez les lignes suivantes dans le fichier /etc/vsftpd.conf :

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO

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

Maintenant, créons plusieurs comptes utilisateur. Nous allons créer deux utilisateurs : testuser1 et testuser2, et leur définir des mots de passe.

sudo adduser testuser1
sudo adduser testuser2

Vous serez invité à entrer un mot de passe pour chaque utilisateur. Choisissez des mots de passe simples comme password123 pour testuser1 et password456 pour testuser2 à des fins de test. N'oubliez pas ces mots de passe, car nous les utiliserons plus tard.

Ensuite, redémarrez le service vsftpd pour appliquer les modifications :

sudo systemctl restart vsftpd

Maintenant, testons le serveur FTP. Vous pouvez utiliser le client en ligne de commande ftp pour vous connecter au serveur. Étant donné que nous exécutons le serveur localement, nous pouvons nous connecter à localhost.

ftp localhost

Vous serez invité à entrer un nom d'utilisateur. Entrez testuser1 puis le mot de passe que vous lui avez attribué. Si tout est configuré correctement, vous devriez être connecté au serveur FTP. Vous pouvez taper bye pour quitter le client FTP.

Maintenant, créons un fichier que nous pourrons utiliser pour stocker les noms d'utilisateur et les mots de passe que Hydra utilisera. Dans votre répertoire ~/project, créez un fichier nommé users.txt et ajoutez les noms d'utilisateur :

nano ~/project/users.txt

Ajoutez les lignes suivantes à users.txt :

testuser1
testuser2

Enregistrez le fichier et quittez nano.

Ensuite, créez un fichier nommé passwords.txt et ajoutez quelques mots de passe courants, y compris ceux que vous avez définis pour les utilisateurs :

nano ~/project/passwords.txt

Ajoutez les lignes suivantes à passwords.txt :

password123
password456
password
123456
qwerty

Enregistrez le fichier et quittez nano.

Nous avons maintenant un serveur FTP configuré avec plusieurs comptes utilisateur et une liste de noms d'utilisateur et de mots de passe que Hydra peut utiliser pour tenter de cracker les comptes.

Exécution avec l'option -f pour arrêter après la première paire valide

Dans cette étape, nous allons utiliser l'option -f avec Hydra. L'option -f indique à Hydra d'arrêter après avoir trouvé la première paire nom d'utilisateur/mot de passe valide. Cela est utile lorsque vous avez seulement besoin de trouver un compte valide et ne voulez pas que Hydra continue à tester d'autres combinaisons après une connexion réussie.

Exécutons Hydra contre notre serveur FTP en utilisant les listes de noms d'utilisateur et de mots de passe que nous avons créées à l'étape précédente, et cette fois, nous utiliserons l'option -f.

hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ftp -f

Dans cette commande :

  • -L ~/project/users.txt : Spécifie le fichier contenant la liste des noms d'utilisateur.
  • -P ~/project/passwords.txt : Spécifie le fichier contenant la liste des mots de passe.
  • localhost : Le serveur FTP cible.
  • ftp : Le service à attaquer (FTP dans ce cas).
  • -f : Indique à Hydra d'arrêter après la première connexion réussie.

Observez la sortie. Hydra tentera de se connecter en utilisant les noms d'utilisateur et les mots de passe des listes. Dès qu'il trouvera une combinaison valide (par exemple, testuser1:password123), il affichera la connexion réussie puis s'arrêtera.

La sortie devrait ressembler à ceci :

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra starting at 2024-10-27 10:00:00
[DATA] 1 task/thread started, overall 1 task to process
[DATA] attacking ftp://localhost:21
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 1 target successfully completed, 0 valid password found
Hydra finished.

Notez que Hydra s'est arrêté après avoir trouvé la première combinaison valide (testuser1:password123). Sans l'option -f, Hydra aurait continué à tester d'autres combinaisons même après avoir trouvé une connexion valide.

Cette option est particulièrement utile lorsque vous testez un grand nombre de comptes et que vous avez seulement besoin de vérifier qu'au moins un compte est vulnérable.

Test de l'option -F avec une liste multi-hôtes

Dans cette étape, nous allons explorer l'option -F dans Hydra. Contrairement à -f, qui s'arrête après avoir trouvé la première paire d'identifiants valide pour un seul hôte, -F s'arrête après avoir trouvé la première paire d'identifiants valide parmi tous les hôtes d'une liste. Pour démontrer cela, nous allons simuler un scénario multi-hôtes. Étant donné que nous n'avons qu'une seule machine virtuelle (VM), nous utiliserons localhost plusieurs fois dans notre liste d'hôtes.

Premièrement, créons un fichier nommé hosts.txt dans votre répertoire ~/project. Ce fichier contiendra une liste d'hôtes cibles.

nano ~/project/hosts.txt

Ajoutez les lignes suivantes à hosts.txt :

localhost
localhost

Enregistrez le fichier et quittez nano. Cela simule l'existence de deux serveurs FTP identiques s'exécutant sur la même machine.

Maintenant, exécutons Hydra avec l'option -F, en ciblant la liste d'hôtes dans hosts.txt.

hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/hosts.txt ftp -F

Dans cette commande :

  • -L ~/project/users.txt : Spécifie le fichier contenant la liste des noms d'utilisateur.
  • -P ~/project/passwords.txt : Spécifie le fichier contenant la liste des mots de passe.
  • -M ~/project/hosts.txt : Spécifie le fichier contenant la liste des hôtes cibles.
  • ftp : Le service à attaquer (FTP dans ce cas).
  • -F : Indique à Hydra de s'arrêter après la première connexion réussie parmi tous les hôtes.

Observez la sortie. Hydra tentera de se connecter à chaque hôte du fichier hosts.txt en utilisant les noms d'utilisateur et les mots de passe des listes. Dès qu'il trouvera une combinaison valide sur n'importe lequel des hôtes, il affichera la connexion réussie puis cessera d'attaquer tous les hôtes.

La sortie devrait ressembler à ceci :

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra starting at 2024-10-27 10:05:00
[DATA] 2 tasks/threads started, overall 2 tasks to process
[DATA] attacking ftp://localhost:21
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 2 target successfully completed, 0 valid password found
Hydra finished.

Même si nous avons deux entrées localhost dans hosts.txt, Hydra s'arrête après avoir trouvé la première connexion réussie sur la première instance localhost. Il n'essaie pas de trouver des identifiants pour la deuxième entrée localhost.

L'option -F est utile lorsque vous ciblez plusieurs hôtes et que vous n'avez besoin de trouver qu'un seul système vulnérable. Elle peut économiser du temps et des ressources en stoppant l'attaque dès qu'une vulnérabilité est trouvée.

Comparaison du comportement des options -f et -F

Dans cette étape, nous allons comparer directement le comportement des options -f et -F pour consolider votre compréhension de leurs différences. Nous utiliserons la même configuration que dans les étapes précédentes : un serveur FTP s'exécutant sur localhost, les fichiers users.txt et passwords.txt, ainsi que le fichier hosts.txt contenant deux entrées pour localhost.

Tout d'abord, rappelons-nous l'option -f. Exécutons à nouveau la commande suivante :

hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ftp -f

Comme nous l'avons vu précédemment, Hydra s'arrête après avoir trouvé la première paire nom d'utilisateur/mot de passe valide pour localhost.

Maintenant, exécutons à nouveau Hydra avec l'option -F, en ciblant le fichier hosts.txt :

hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/hosts.txt ftp -F

Encore une fois, Hydra s'arrête après avoir trouvé la première paire nom d'utilisateur/mot de passe valide parmi tous les hôtes du fichier hosts.txt.

La différence clé réside dans la façon dont Hydra interprète la cible.

  • -f (cible unique) : Hydra s'arrête après avoir trouvé la première paire d'identifiants valide pour la cible unique spécifiée. Dans notre cas, la cible unique est localhost.

  • -F (liste multi-hôtes) : Hydra s'arrête après avoir trouvé la première paire d'identifiants valide parmi toutes les cibles de la liste d'hôtes. Dans notre cas, la liste d'hôtes contient deux entrées pour localhost, mais Hydra s'arrête toujours après la première connexion réussie sur l'une ou l'autre d'entre elles.

Pour illustrer davantage la différence, considérez un scénario où vous avez deux serveurs FTP différents, ftp.example.com et ftp.example.net, et seul ftp.example.com a un compte vulnérable.

  • Si vous utilisez -f et ciblez ftp.example.com, Hydra trouvera le compte vulnérable et s'arrêtera. Si vous ciblez ensuite ftp.example.net avec -f, Hydra continuera d'essayer de craquer ce serveur.

  • Si vous utilisez -F et que vous avez à la fois ftp.example.com et ftp.example.net dans votre fichier hosts.txt, Hydra trouvera le compte vulnérable sur ftp.example.com et s'arrêtera immédiatement, sans même tenter de craquer ftp.example.net.

En résumé :

  • Utilisez -f lorsque vous voulez trouver au moins un identifiant valide pour une cible spécifique.
  • Utilisez -F lorsque vous voulez trouver au moins un identifiant valide parmi une liste de cibles et que vous n'avez pas besoin de vérifier toutes les cibles si l'une d'elles est déjà compromise.

Ceci conclut le laboratoire. Vous avez réussi à configurer un serveur FTP, à configurer plusieurs comptes utilisateur et à utiliser Hydra pour craquer les comptes, en explorant les options -f et -F.

Résumé

Dans ce laboratoire, nous avons configuré un serveur FTP en utilisant vsftpd et l'avons configuré pour exiger une authentification. Nous avons créé deux comptes utilisateur, testuser1 et testuser2, avec des mots de passe simples à des fins de test. Le fichier vsftpd.conf a été modifié pour autoriser les utilisateurs locaux, l'accès en écriture et le chroot (enfermement dans un répertoire racine restreint) pour renforcer la sécurité. Enfin, le service vsftpd a été redémarré pour appliquer les modifications de configuration, et la fonctionnalité du serveur FTP a été vérifiée à l'aide du client en ligne de commande ftp.

Un fichier users.txt a également été créé pour stocker les noms d'utilisateur, qui seront utilisés dans les étapes suivantes avec Hydra pour tester ses capacités de craquage. Cette configuration fournit un environnement contrôlé pour expérimenter les fonctionnalités de Hydra et comprendre son comportement lorsqu'il s'agit de gérer plusieurs identifiants d'utilisateur.