Cybersécurité (Kali) : Crack de mots de passe avec Hydra

De Justine's wiki
Aller à la navigation Aller à la recherche


Introduction

https://tools.kali.org/password-attacks/hydra

THC Hydra est un outil de crack de mots de passe, qui supporte de nombreux protocoles. Il est rapide, flexible, et peut recevoir facilement de nouveaux modules. Hydra est disponible dans les dépôts et est également installé sur Kali (Section Attaque de mots de passe > Attaques en ligne). Hydra peut mener des attaques bruteforce à partir de listes de mots de passe, ce qui est un bon test "de base" pour voir la sécurité d'un système. Même si les tests en force brute ont peu de chance de fonctionner sur un système relativement sécurisé, ils sont faciles à mener et peuvent aider à déceler des matériels possédant encore leur mot de passe par défaut (routeurs, point d'accès WiFi...).

De plus, Hydra permet de lancer plusieurs threads à la fois, ce qui permet de gagner du temps, sur une machine suffisament puissante.

De nombreuses listes de mots de passe sont disponibles en ligne, mais par simplicité j'utiliserais ici celle de "John the Ripper", disponible sur Kali dans le dossier : /usr/share/john/password.lst. Ce document texte contient quelques milliers de mots de passe, les plus courant du monde anglophone. D'autres listes sont disponibles en ligne, comme le "top 1 000 000". Ce genre d'outils peut être intéressant pour tester la sécurité d'un réseau : faire un test sur le matériel réseau à l'aide d'une liste de mots de passe par défaut, par exemple.

Hydra ne doit pas être utilisé sans l'autorisation du propriétaire des machines cibles !

Utilisation

Installation

Hydra est installé par défaut avec Kali Linux. Sur Ubuntu, il est disponible dans les dépôts :

sudo apt update && sudo apt install hydra

Environnement de test

J'utiliserais ici deux machines :

  • Une machine attaquante sous Kali Linux 4.18 (IP : 192.168.1.20)
  • Une machine cible "Metasploitable" (Une distribution Linux volontairement peu sécurisée) (IP : 192.168.1.1)

 

Préparation de la liste de mots de passe

Nous allons copier la liste de mots de passe de John The Ripper dans notre dossier, puis enlever les lignes commentées au début de celui-ci (s'il en contient) pour qu'il soit prêt à être utilisé.

cp /usr/share/john/password.lst ~/password.lst
vim ~/password.lst      #Pour enlever les commentaires

Utilisation

La commande que j'utilise (ici, elle est assez basique) est la suivante :

hydra -l msfadmin -P ~/password.lst -vV 192.168.1.1 ftp

Détail :

  • hydra : le nom du programme
  • -l msfadmin : il s'agit ici du login (en l'occurence "msfadmin")
  • -P : le chemin de ma liste de mots de passe
  • -vV : il s'agit ici de la verbosité :
    • v correspond à une verbosité moyenne : quelques informations sont affichées.
    • V correspond à une verbosité élevée : tous les essais menés sont affichés.
  • 192.168.1.1 : l'adresse IP de la machine cible
  • ftp : le nom du service employé. La liste des services supportés est disponible dans le manuel (tapez "man hydra" dans le terminal).

Le résultat est rapidement concluant :

RTENOTITLE

Hydra m'indique ici avoir réussi une tentative de login , sur le port 21, avec le protocole ftp et le login msfadmin : msfadmin.

Il s'agit bien sûr d'un exemple : ici, le mot de passe était bien présent dans notre liste (puisque je l'y ai ajouté moi-même pour la démonstration...).

Plus d'options

Hydra comporte de nombreuses options intéressantes.

Threads

Par défaut, Hydra utilise 16 threads (ou 4 sur SSH, il s'adapte en fonction de chaque protocole): cela signifie qu'il lance 4 processus à la fois pour aller plus vite (4 instances de lui-même). Plus nous lançons de threads simultanés, plus la recherche ira vite : nous ne serons limités que par les capacités de notre machine ainsi que les possibilités offertes par le serveur.

Les threads sont gérés avec l'option -t (t pour tasks) :

hydra -t 4 -l msfadmin -P ~/usr/share/wordlists/rockyou.txt -vV 192.168.1.1 ftp

 

Usage de listes

Hydra peut utiliser à la fois des listes de mots de passe, mais aussi des listes de noms d'utilisateurs voire des listes d'adresses IP :

  • Une liste de mots de passe s'utilise avec l'option -P (P pour password): -P ~/password.lst
    • L'option -p permet de tester un seul mot de passe : -p password111
  • Une liste de noms d'utilisateurs s'utilise avec -L (L pour Login) : -L /usr/share/wordlists.rockyou.txt
  • Une liste d'IP s'utilise avec -M (M pour Machines) : -M ~/ips.txt

Avec ce genre de configuration, Hydra testera tous les noms d'utilisateurs données, avec tous les mots de pas passe, sur toutes les machines. Attention, plus vos listes seront longues, plus longue sera la recherche de mot de passe !

Exemple complet (avec une verbosité moindre) :

hydra -L ~/users.txt -P ~/password.lst -M ~/ips.txt -v ftp

RTENOTITLE 

Utilisation de SSL et choix du port

Un serveur n'écoute pas forcément le port prévu par défaut : un administrateur système aura pu le changer, et par exemple mettre SSH en écoute sur un autre port. Vous pouvez préciser un autre port avec l'option -s (s comme Socket):

hydra -L ~/users.txt -P ~/password.lst -M ~/ips.txt -v -s 21 ftp

Si un service autre que celui précisé est en écoute sur port, un message d'erreur s'affichera alors.

De plus, pour utiliser SSL avec les services compatibles, l'option à utiliser est : -S (comme SSL).

Options de mots de passe

Quelques options permettent de faire varier les mots de passe testés, en plus de ceux de la liste. Ces variantes sont à préciser avec l'option -e suivie d'une ou plusieurs lettres que voici :

  • n (pour "null") : permet de tester un mot de passe vide
  • s (pour "same") : permet de tester systématiquement un mot de passe identique au login (par exemple admin - admin).
  • r (pour "reverse") : permet de tester les mots de passe à l'endroit et à l'envers.

Exemple :

hydra -L ~/users.txt -P ~/password.lst -M ~/ips.txt -v -s 21 -e nsr ftp

Ici, -e nsr me permettra de tester, en plus de ma liste de mots de passe, des mots de passe vide, à l'envers, et identiques au login.