Introduction
Dans ce laboratoire, nous explorerons comment arrêter les attaques Hydra précocement en exploitant ses options pour limiter le nombre de tentatives. Nous commencerons par configurer un serveur FTP utilisant vsftpd et en configurant plusieurs comptes utilisateurs, 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 ils peuvent être utilisés pour atténuer les attaques Hydra.
Configurer un serveur FTP avec plusieurs identifiants
Dans cette étape, nous allons configurer un serveur FTP 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.
Tout d'abord, installons vsftpd. Ouvrez votre terminal et exécutez la commande suivante :
sudo apt update
sudo apt install vsftpd -y
Ensuite, nous devons configurer vsftpd. Nous commencerons par créer une sauvegarde du fichier de configuration d'origine. C'est une bonne pratique avant d'apporter des modifications aux fichiers de configuration système.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
Maintenant, modifions le fichier de configuration /etc/vsftpd.conf à l'aide de nano. Ce fichier contrôle le comportement du serveur FTP.
sudo nano /etc/vsftpd.conf
Dans l'éditeur nano, ajoutez ou modifiez les lignes suivantes. Ces paramètres désactiveront l'accès anonyme, activeront les connexions d'utilisateurs locaux, permettront l'accès en écriture et placeront les utilisateurs locaux dans leur répertoire personnel pour des raisons de sécurité.
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO
Pour enregistrer le fichier dans nano :
- Appuyez sur
Ctrl + Xpour quitter. - Appuyez sur
Ypour confirmer l'enregistrement. - Appuyez sur
Entréepour confirmer le nom du fichier.
Après l'enregistrement, vérifiez le fichier de configuration pour vous assurer que les modifications ont été correctement appliquées à l'aide de la commande suivante :
sudo cat /etc/vsftpd.conf | grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|listen)"
Assurez-vous que la sortie affiche la même configuration que celle que nous avons ajoutée.
Créons maintenant plusieurs comptes utilisateurs. Nous allons créer deux utilisateurs : testuser1 et testuser2, et définir des mots de passe pour chacun. Ces utilisateurs seront utilisés par Hydra pour tenter de se connecter.
Créez testuser1 avec un répertoire personnel :
sudo useradd -m testuser1
Définissez le mot de passe de testuser1 à l'aide d'une commande non interactive :
echo 'testuser1:password123' | sudo chpasswd
Créez testuser2 avec un répertoire personnel :
sudo useradd -m testuser2
Définissez le mot de passe de testuser2 à l'aide d'une commande non interactive :
echo 'testuser2:password456' | sudo chpasswd
Ces commandes sont non interactives et créeront les utilisateurs directement sans demander d'entrée, ce qui les rend plus fiables dans les environnements automatisés.
Maintenant, nous devons corriger les permissions du répertoire personnel pour la configuration chroot. Lorsque chroot_local_user=YES est activé, le répertoire personnel de l'utilisateur ne doit pas être modifiable par l'utilisateur pour des raisons de sécurité :
sudo chmod 755 /home/testuser1
sudo chmod 755 /home/testuser2
Créez un sous-répertoire modifiable pour chaque utilisateur où ils peuvent télécharger des fichiers :
sudo mkdir /home/testuser1/files
sudo mkdir /home/testuser2/files
sudo chown testuser1:testuser1 /home/testuser1/files
sudo chown testuser2:testuser2 /home/testuser2/files
Ensuite, redémarrez le service vsftpd pour appliquer les modifications apportées au fichier de configuration et pour reconnaître les nouveaux utilisateurs.
sudo service vsftpd restart
Testons maintenant le serveur FTP pour nous assurer qu'il fonctionne correctement et que nos nouveaux utilisateurs peuvent se connecter. Vous pouvez utiliser le client de ligne de commande ftp pour vous connecter au serveur. Puisque nous exécutons le serveur localement, nous pouvons nous connecter à localhost.
ftp localhost
Vous serez invité à saisir un nom d'utilisateur. Entrez testuser1 puis le mot de passe password123. Si tout est correctement configuré, vous devriez voir un message indiquant que vous êtes connecté.
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:labex): testuser1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Vous pouvez taper bye pour quitter le client FTP.
ftp> bye
221 Goodbye.
Préparons maintenant les fichiers que Hydra utilisera pour son attaque. Naviguez vers votre répertoire ~/project, qui est votre répertoire de travail par défaut.
cd ~/project
Créez un fichier nommé users.txt dans le répertoire ~/project. Ce fichier contiendra les noms d'utilisateurs que Hydra tentera d'utiliser.
nano users.txt
Ajoutez les noms d'utilisateurs suivants à users.txt :
testuser1
testuser2
Enregistrez le fichier et quittez nano.
Ensuite, créez un fichier nommé passwords.txt dans le répertoire ~/project. Ce fichier contiendra une liste de mots de passe, y compris ceux corrects pour nos utilisateurs de test, ainsi que des mots de passe incorrects courants.
nano passwords.txt
Ajoutez les mots de passe suivants à passwords.txt :
password123
password456
password
123456
qwerty
Enregistrez le fichier et quittez nano.
Nous avons maintenant un serveur FTP configuré avec plusieurs comptes utilisateurs et une liste de noms d'utilisateurs et de mots de passe que Hydra peut utiliser pour tenter de pirater les comptes.
Exécution avec -f pour arrêter après la première paire
Dans cette étape, nous utiliserons l'option -f avec Hydra. L'option -f indique à Hydra de s'arrêter après avoir trouvé la première paire nom d'utilisateur/mot de passe valide pour une cible unique. Ceci est utile lorsque vous avez uniquement besoin de trouver un compte valide sur un service spécifique et que vous ne souhaitez pas que Hydra continue d'essayer d'autres combinaisons après une connexion réussie.
Assurez-vous d'être dans le répertoire ~/project.
cd ~/project
Maintenant, exécutons Hydra contre notre serveur FTP en utilisant les listes de noms d'utilisateurs et de mots de passe que nous avons créées à l'étape précédente. Nous inclurons l'option -f.
hydra -L users.txt -P passwords.txt localhost ftp -f
Décomposons cette commande :
hydra: L'outil de ligne de commande pour le force brute.-L users.txt: Spécifie le fichier contenant la liste des noms d'utilisateurs (users.txtdans le répertoire courant).-P passwords.txt: Spécifie le fichier contenant la liste des mots de passe (passwords.txtdans le répertoire courant).localhost: L'adresse du serveur FTP cible.ftp: Le protocole de service à attaquer (FTP dans ce cas).-f: C'est l'option cruciale qui indique à Hydra de s'arrêter après avoir trouvé la première paire nom d'utilisateur/mot de passe valide.
Observez la sortie dans votre terminal. Hydra tentera de se connecter en utilisant les noms d'utilisateurs et les mots de passe des listes. Dès qu'il trouve une combinaison valide (par exemple, testuser1:password123), il affichera la connexion réussie puis arrêtera son opération.
La sortie devrait ressembler à ceci :
Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Veuillez faire preuve de prudence !
Hydra (https://github.com/vanhauser-thc/thc-hydra) démarré le 2025-05-29 14:41:46
[DATA] max 10 tâches par 1 serveur, au total 10 tâches, 10 tentatives de connexion (l:2/p:5), ~1 tentative par tâche
[DATA] attaque ftp://localhost:21/
[21][ftp] hôte : localhost utilisateur : testuser1 mot de passe : password123
1 sur 1 cible terminée avec succès, 1 mot de passe valide trouvé
Hydra (https://github.com/vanhauser-thc/thc-hydra) terminé le 2025-05-29 14:41:47
Remarquez que Hydra s'est arrêté immédiatement après avoir trouvé la première combinaison valide (testuser1:password123). Sans l'option -f, Hydra aurait continué à essayer toutes les autres combinaisons dans le fichier passwords.txt pour testuser1, puis serait passé à testuser2 et aurait essayé tous les mots de passe pour cet utilisateur également.
Cette option est particulièrement utile lorsque vous testez un service spécifique et que vous avez uniquement besoin de vérifier qu'au moins un compte est vulnérable, ce qui permet de gagner du temps et des ressources.
Test avec -F et 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 sur tous les hôtes d'une liste. Ceci est particulièrement utile lorsque vous ciblez plusieurs systèmes et que vous avez uniquement besoin de trouver une entrée vulnérable parmi eux.
Pour démontrer cela, nous allons simuler un scénario multi-hôtes. Puisque nous n'avons qu'une seule machine virtuelle, nous utiliserons localhost plusieurs fois dans notre liste d'hôtes pour simuler différentes cibles.
Tout d'abord, assurez-vous d'être dans le répertoire ~/project.
cd ~/project
Maintenant, créons un fichier nommé hosts.txt dans votre répertoire ~/project. Ce fichier contiendra une liste d'hôtes cibles.
nano hosts.txt
Ajoutez les lignes suivantes à hosts.txt :
localhost
localhost
Enregistrez le fichier et quittez nano. En listant localhost deux fois, nous indiquons à Hydra de le traiter comme deux cibles distinctes, même s'ils pointent vers la même machine.
Maintenant, exécutons Hydra avec l'option -F, ciblant la liste d'hôtes spécifiée dans hosts.txt.
hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F
Décomposons cette commande :
-L users.txt: Spécifie le fichier contenant la liste des noms d'utilisateurs.-P passwords.txt: Spécifie le fichier contenant la liste des mots de passe.-M hosts.txt: C'est la nouvelle option. Elle spécifie le fichier contenant la liste des hôtes cibles (hosts.txtdans le répertoire courant).ftp: Le protocole de service à attaquer.-F: C'est l'option cruciale qui indique à Hydra de s'arrêter après avoir trouvé la première connexion réussie sur tous les hôtes de la liste.
Observez la sortie dans votre terminal. Hydra tentera de se connecter à chaque hôte dans le fichier hosts.txt en utilisant les noms d'utilisateurs et les mots de passe des listes. Dès qu'il trouve une combinaison valide sur n'importe lequel des hôtes, il affichera la connexion réussie et arrêtera alors l'attaque sur tous les hôtes listés dans hosts.txt.
La sortie devrait ressembler à ceci :
Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Veuillez faire preuve de prudence !
Hydra (https://github.com/vanhauser-thc/thc-hydra) démarré le 2025-05-29 14:42:10
[DATA] max 10 tâches par 2 serveurs, au total 20 tâches, 10 tentatives de connexion (l:2/p:5), ~1 tentative par tâche
[DATA] attaque ftp://(2 cibles):21/
[21][ftp] hôte : localhost utilisateur : testuser1 mot de passe : password123
[STATUS] attaque terminée pour localhost (paire valide trouvée)
2 sur 2 cibles terminées avec succès, 1 mot de passe valide trouvé
Hydra (https://github.com/vanhauser-thc/thc-hydra) terminé le 2025-05-29 14:42:11
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 ne continue pas à essayer de trouver les identifiants pour la deuxième entrée localhost, ce qui démontre l'effet de l'option -F.
L'option -F est très utile lorsque vous ciblez plusieurs systèmes et que vous avez uniquement besoin de trouver un système vulnérable pour atteindre votre objectif. Elle peut économiser considérablement du temps et des ressources informatiques en arrêtant l'attaque dès qu'une vulnérabilité est trouvée sur l'une des cibles listées.
Comparer le comportement de -f et -F
Dans cette étape, nous comparerons directement les comportements 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 exécuté sur localhost, les fichiers users.txt et passwords.txt, et le fichier hosts.txt contenant deux entrées pour localhost.
Tout d'abord, réexécutons la commande en utilisant l'option -f. Cette commande cible un seul hôte (localhost) et s'arrête après avoir trouvé les premiers identifiants valides pour cet hôte spécifique.
hydra -L users.txt -P passwords.txt localhost ftp -f
Comme nous l'avons observé à l'étape 2, Hydra trouvera testuser1:password123 puis s'arrêtera. Il n'essaiera pas de trouver testuser2:password456 pour localhost.
Maintenant, réexécutons la commande en utilisant l'option -F. Cette commande cible une liste d'hôtes (hosts.txt) et s'arrête après avoir trouvé les premiers identifiants valides sur n'importe lequel des hôtes de cette liste.
hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F
Comme nous l'avons observé à l'étape 3, Hydra trouvera testuser1:password123 sur la première entrée localhost dans hosts.txt puis s'arrêtera. Il ne continuera pas à vérifier la deuxième entrée localhost dans le fichier hosts.txt.
La différence essentielle réside dans la façon dont Hydra interprète la cible et quand il décide de s'arrêter :
-f(cible unique) : Lorsque vous spécifiez une cible unique (par exemple,localhost),-findique à Hydra de s'arrêter dès qu'il trouve n'importe quelle paire nom d'utilisateur/mot de passe valide pour cette cible spécifique. Il ne continuera pas à rechercher d'autres identifiants valides sur la même cible.-F(liste multi-hôtes) : Lorsque vous spécifiez une liste de cibles à l'aide de-M,-Findique à Hydra de s'arrêter dès qu'il trouve n'importe quelle paire nom d'utilisateur/mot de passe valide sur n'importe lequel des hôtes de cette liste. Il ne continuera pas à rechercher d'autres identifiants valides sur le même hôte, ni à vérifier les hôtes suivants de la liste.
Pour illustrer davantage la différence, considérons un scénario hypothétique où vous scannez un réseau avec plusieurs serveurs FTP : ftp1.example.com, ftp2.example.com et ftp3.example.com.
Si vous utilisez
-fet ciblezftp1.example.com, Hydra trouvera les premiers identifiants valides surftp1.example.comet s'arrêtera. Si vous souhaitez ensuite vérifierftp2.example.com, vous devrez exécuter une commande Hydra distincte pour cela.Si vous mettez les trois serveurs dans un fichier
hosts.txtet utilisez-F, Hydra commencera à vérifierftp1.example.com. S'il trouve des identifiants valides là-bas, il arrêtera immédiatement l'opération entière, sans même tenter de se connecter àftp2.example.comouftp3.example.com.
En résumé :
- Utilisez
-florsque vous vous concentrez sur une seule cible et que vous souhaitez trouver au moins un identifiant valide pour celle-ci. - Utilisez
-Florsque vous scannez plusieurs cibles et que vous souhaitez arrêter l'opération entière dès qu'un identifiant valide est trouvé sur n'importe laquelle des cibles.
Ceci conclut le laboratoire. Vous avez correctement configuré un serveur FTP, configuré plusieurs comptes utilisateurs et utilisé Hydra pour cracker les comptes, explorant les options -f et -F pour contrôler le comportement d'attaque de Hydra.
Résumé
Dans ce laboratoire, vous avez appris à contrôler le comportement d'attaque d'Hydra à l'aide des options -f et -F. Vous avez commencé par configurer un serveur FTP local à l'aide de vsftpd et en le configurant avec plusieurs comptes utilisateurs (testuser1 et testuser2) pour simuler un scénario réel. Vous avez également préparé les fichiers users.txt et passwords.txt pour Hydra.
Vous avez ensuite utilisé l'option -f pour indiquer à Hydra de s'arrêter après avoir trouvé la première paire nom d'utilisateur/mot de passe valide pour une seule cible, démontrant ainsi comment trouver efficacement un seul compte vulnérable. Ensuite, vous avez exploré l'option -F avec une liste multi-hôtes (hosts.txt), apprenant comment Hydra peut arrêter une attaque multi-cibles entière dès qu'un seul identifiant valide est trouvé sur l'un des hôtes listés.
Enfin, vous avez comparé les comportements distincts de -f et -F, comprenant leurs cas d'utilisation respectifs : -f pour s'arrêter après le premier succès sur une seule cible, et -F pour s'arrêter après le premier succès sur plusieurs cibles. Ces connaissances sont cruciales pour optimiser les attaques par force brute et gérer efficacement les ressources.


