Contrôler les intervalles de connexion 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 à contrôler les intervalles de connexion de l'outil de craquage de mots de passe Hydra. Le laboratoire montre comment configurer Hydra pour introduire des délais entre les tentatives de connexion, vous permettant ainsi de gérer le rythme de l'attaque et potentiellement d'échapper à la détection.

Le laboratoire commence par la configuration d'un serveur SSH de base sur la machine virtuelle LabEx à l'aide d'OpenSSH. Vous installerez le serveur, vérifierez son statut et confirmez qu'il écoute sur le port 22. Ensuite, vous exécuterez Hydra avec les paramètres de temporisation par défaut, puis vous modifiererez la commande pour inclure l'option -W 5, qui introduit un intervalle de 5 secondes entre les tentatives de connexion. Enfin, vous observerez l'impact de ce réglage de temporisation sur le rythme global de l'attaque.


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/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/timeout_setting("Timeout Adjustment") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/error_handling("Error Message Handling") hydra/HydraGroup -.-> hydra/rate_control("Rate Limiting Control") subgraph Lab Skills hydra/installation -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} hydra/single_username -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} hydra/single_password -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} hydra/target_service -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} hydra/ssh_attack -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} hydra/timeout_setting -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} hydra/success_detection -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} hydra/error_handling -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} hydra/rate_control -.-> lab-550764{{"Contrôler les intervalles de connexion d'Hydra"}} end

Configuration du serveur SSH

Dans cette étape, nous allons configurer un serveur SSH de base sur la machine virtuelle LabEx. SSH (Secure Shell) est un protocole réseau cryptographique permettant d'exécuter des services réseau de manière sécurisée sur un réseau non sécurisé. Il est couramment utilisé pour la connexion à distance en ligne de commande et l'exécution de commandes à distance.

Tout d'abord, nous devons installer le serveur OpenSSH. OpenSSH est une suite d'outils réseau liés à la sécurité basée sur le protocole Secure Shell, et c'est l'implémentation SSH la plus courante.

Ouvrez un terminal dans la machine virtuelle LabEx. Vous pouvez utiliser le terminal Xfce par défaut.

Exécutez la commande suivante pour mettre à jour les listes de paquets :

sudo apt update

Cette commande synchronise les fichiers d'index des paquets à partir de leurs sources. C'est une bonne pratique d'exécuter cette commande avant d'installer tout nouveau logiciel. Vous pourriez être invité à saisir votre mot de passe, mais rappelez-vous que l'utilisateur labex a des privilèges sudo sans mot de passe.

Ensuite, installez le serveur OpenSSH :

sudo apt install openssh-server -y

Le paramètre -y répond automatiquement "oui" à toutes les invitations pendant l'installation, rendant le processus non interactif.

Une fois l'installation terminée, le serveur SSH devrait démarrer automatiquement. Vous pouvez vérifier son statut en utilisant la commande suivante :

sudo systemctl status ssh

Vous pourriez voir un message d'erreur comme System has not been booted with systemd as init system (PID 1). Can't operate. Cela est dû au fait que la machine virtuelle LabEx s'exécute dans un conteneur Docker, qui n'utilise pas systemd. Ne vous inquiétez pas, le serveur SSH est toujours en cours d'exécution.

Pour confirmer que le serveur SSH est en cours d'exécution, vous pouvez vérifier si le port SSH (port 22) est en écoute. Utilisez la commande netstat :

netstat -tulnp | grep 22

Vous devriez voir une sortie similaire à ceci :

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -

Cela indique que le serveur SSH est en écoute sur le port 22 pour les connexions IPv4 et IPv6.

Maintenant que le serveur SSH est configuré, vous pouvez vous y connecter depuis une autre machine en utilisant un client SSH. Cependant, pour ce laboratoire, nous allons nous concentrer sur l'utilisation de Hydra pour craquer le mot de passe SSH.

Exécution de Hydra avec les paramètres de temporisation par défaut

Dans cette étape, nous allons exécuter Hydra pour tenter de craquer le mot de passe SSH. Nous utiliserons une liste simple de noms d'utilisateurs et de mots de passe et observerons le rythme de l'attaque avec les paramètres de temporisation par défaut.

Tout d'abord, créons un fichier de liste de noms d'utilisateurs nommé users.txt dans le répertoire ~/project. Ce fichier contiendra un seul nom d'utilisateur : labex.

echo "labex" > ~/project/users.txt

Ensuite, créons un fichier de liste de mots de passe nommé passwords.txt dans le répertoire ~/project. Ce fichier contiendra quelques mots de passe courants, y compris le mot de passe correct pour l'utilisateur labex, qui est labex.

echo "password" > ~/project/passwords.txt
echo "123456" >> ~/project/passwords.txt
echo "labex" >> ~/project/passwords.txt

Maintenant, nous pouvons exécuter Hydra avec les paramètres de temporisation par défaut. La syntaxe de base pour Hydra est la suivante :

hydra [options] <target> <service> [MODULE-OPTIONS]

Dans notre cas, la cible est localhost (la machine virtuelle LabEx elle - même), le service est ssh, et nous utiliserons les listes de noms d'utilisateurs et de mots de passe que nous venons de créer.

Exécutez la commande suivante :

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

Décortiquons cette commande :

  • hydra : La commande pour exécuter l'outil Hydra.
  • -L ~/project/users.txt : Spécifie le fichier de liste de noms d'utilisateurs.
  • -P ~/project/passwords.txt : Spécifie le fichier de liste de mots de passe.
  • localhost : L'hôte cible (dans ce cas, la machine locale).
  • ssh : Le service à attaquer (SSH).

Hydra va maintenant commencer à tenter de se connecter au serveur SSH en utilisant les noms d'utilisateurs et les mots de passe des listes. Vous verrez une sortie montrant la progression de l'attaque. Il essaiera chaque combinaison de nom d'utilisateur et de mot de passe. Étant donné que le mot de passe correct "labex" se trouve dans le fichier passwords.txt, Hydra devrait le trouver relativement rapidement.

La sortie ressemblera à ceci :

Hydra v9.6 (c) 2024 by van Hauser/THC - use help for legal stuff


Hydra starting at 2024-01-01 00:00:00
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] 0.00 tries/min
[STATUS] 0 of 3 passwords tested (0.00%)
[22][ssh] host: localhost   login: labex   password: labex
Hydra finished.

La ligne importante est [22][ssh] host: localhost login: labex password: labex. Cela indique que Hydra a réussi à trouver le mot de passe pour l'utilisateur labex.

Notez la vitesse à laquelle Hydra essaie les mots de passe. C'est la temporisation par défaut. Dans l'étape suivante, nous modifierons la temporisation pour voir comment cela affecte le rythme de l'attaque.

Ajout de l'option -W 5 pour des intervalles de 5 secondes

Dans cette étape, nous allons ajouter l'option -W 5 à la commande Hydra. Cette option introduit un délai de 5 secondes entre chaque tentative de connexion. Cela est utile pour éviter les verrouillages de compte ou la détection par les systèmes de détection d'intrusion.

L'option -W dans Hydra spécifie le délai d'attente pour recevoir une réponse du service cible. Par défaut, Hydra utilise un délai d'attente très court. Augmenter ce délai peut être utile lorsque le service cible répond lentement ou lorsqu'il y a des problèmes de latence réseau.

Exécutez la commande suivante :

hydra -L ~/project/users.txt -P ~/project/passwords.txt -W 5 localhost ssh

La seule différence entre cette commande et la précédente est l'ajout de l'option -W 5.

Maintenant, Hydra tentera de se connecter au serveur SSH, mais il attendra 5 secondes après chaque tentative de connexion échouée avant d'essayer le mot de passe suivant.

Observez la sortie. Vous remarquerez que le rythme de l'attaque est considérablement plus lent que dans l'étape précédente. Hydra trouvera toujours le mot de passe correct ("labex"), mais cela prendra plus de temps.

La sortie ressemblera à ceci :

Hydra v9.6 (c) 2024 by van Hauser/THC - use help for legal stuff


Hydra starting at 2024-01-01 00:00:00
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] 0.00 tries/min
[STATUS] 0 of 3 passwords tested (0.00%)
[22][ssh] host: localhost   login: labex   password: labex
Hydra finished.

Cependant, la différence clé est le temps nécessaire pour atteindre le message Hydra finished.. Avec l'option -W 5, il faudra au moins 10 secondes (2 tentatives échouées * 5 secondes/tentative) avant que Hydra ne trouve le mot de passe correct.

Dans l'étape suivante, nous discuterons de l'impact de ce changement sur le rythme de l'attaque et des implications pour les tests de sécurité.

Observer l'impact sur le rythme de l'attaque

Dans cette étape, nous allons analyser l'impact de l'option -W 5 sur le rythme de l'attaque d'Hydra.

Comme vous l'avez observé dans les étapes précédentes, l'ajout de -W 5 a considérablement ralenti l'attaque. Sans l'option -W 5, Hydra tente les connexions aussi rapidement que possible, limité seulement par la latence réseau et le temps de réponse du serveur. Avec -W 5, Hydra fait une pause de 5 secondes après chaque tentative de connexion échouée.

Cette différence de rythme d'attaque a plusieurs implications importantes :

  • Verrouillage de compte : De nombreux systèmes ont des politiques de verrouillage de compte qui désactivent un compte après un certain nombre de tentatives de connexion échouées. En ralentissant le rythme de l'attaque avec -W 5, vous pouvez réduire le risque de déclencher ces politiques de verrouillage et éviter d'être bloqué du compte cible.

  • Systèmes de détection d'intrusion (IDS) : Les IDS surveillent le trafic réseau pour détecter les activités suspectes, telles que les attaques de force brute. Une série rapide de tentatives de connexion échouées est un signe fort d'une attaque de force brute et peut déclencher une alerte. En ralentissant le rythme de l'attaque, vous pouvez rendre plus difficile la détection de l'attaque par un IDS.

  • Consommation de ressources : Un rythme d'attaque rapide peut consommer des ressources importantes à la fois sur la machine attaquante et sur le serveur cible. En ralentissant le rythme de l'attaque, vous pouvez réduire la consommation de ressources et rendre l'attaque moins visible.

  • Temps d'achèvement : L'impact le plus évident est l'augmentation du temps nécessaire pour terminer l'attaque. Si vous avez une grande liste de mots de passe, l'ajout d'un délai entre les tentatives peut augmenter considérablement le temps total nécessaire pour craquer le mot de passe.

En résumé, l'option -W dans Hydra vous permet de contrôler le rythme de l'attaque et d'équilibrer le besoin de rapidité avec le risque de détection et de verrouillage de compte. Le choix de la bonne valeur pour -W dépend de la cible spécifique et des objectifs de l'attaque. Pour les tests de pénétration, il est souvent préférable d'être discret et d'éviter la détection, même si cela signifie que l'attaque prend plus de temps.

Ce laboratoire a démontré un exemple de base d'utilisation d'Hydra pour craquer un mot de passe SSH. Dans les scénarios réels, les attaquants utilisent souvent des listes de noms d'utilisateurs et de mots de passe beaucoup plus grandes et des techniques plus sophistiquées pour contourner les mesures de sécurité. Il est crucial d'utiliser des mots de passe forts et uniques et de mettre en œuvre des mesures de sécurité appropriées pour se protéger contre les attaques de force brute.

Résumé

Dans ce laboratoire, nous avons commencé par configurer un serveur SSH de base sur la machine virtuelle LabEx. Cela a impliqué la mise à jour des listes de paquets à l'aide de la commande sudo apt update et l'installation du serveur OpenSSH avec sudo apt install openssh-server -y.

Nous avons ensuite vérifié que le serveur SSH était en cours d'exécution en vérifiant son statut et en confirmant qu'il écoutait sur le port 22 à l'aide de la commande netstat -tulnp | grep 22. L'environnement de laboratoire utilise Docker, donc les commandes systemd peuvent ne pas fonctionner comme prévu, mais le serveur SSH fonctionne toujours correctement.