Sauvegarder les résultats d'attaque 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 (lab), nous allons explorer comment enregistrer les résultats d'une attaque Hydra. Hydra, un outil puissant de craquage de mots de passe, sera utilisé pour tester la sécurité d'un formulaire de connexion HTTP simulé. Nous commencerons par exécuter une attaque HTTP de base contre un serveur web cible, en utilisant les listes d'utilisateurs et de mots de passe créées dans le répertoire ~/project.

Le laboratoire vous guidera ensuite dans l'enregistrement des résultats de l'attaque à l'aide de l'option -o et dans leur sortie au format JSON avec l'option -b. Enfin, nous comparerons les sorties texte et JSON pour comprendre les différentes manières dont Hydra peut présenter ses résultats.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/http_form("HTTP Form Attack") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/single_username -.-> lab-550773{{"Sauvegarder les résultats d'attaque Hydra"}} hydra/single_password -.-> lab-550773{{"Sauvegarder les résultats d'attaque Hydra"}} hydra/http_form -.-> lab-550773{{"Sauvegarder les résultats d'attaque Hydra"}} hydra/output_saving -.-> lab-550773{{"Sauvegarder les résultats d'attaque Hydra"}} hydra/success_detection -.-> lab-550773{{"Sauvegarder les résultats d'attaque Hydra"}} end

Exécuter une attaque HTTP de base

Dans cette étape, nous allons effectuer une attaque HTTP de base en utilisant Hydra. Hydra est un outil puissant de craquage de mots de passe et peut être utilisé pour tester la sécurité de divers services, y compris HTTP. Nous ciblerons un simple formulaire de connexion HTTP pour démontrer les capacités de Hydra.

Avant de commencer, comprenons quelques concepts de base :

  • HTTP (Hypertext Transfer Protocol) : Le fondement de la communication de données sur le World Wide Web.
  • Hydra : Un outil de craquage de connexion parallélisé qui prend en charge de nombreux protocoles pour effectuer des attaques.
  • Cible : Dans notre cas, un serveur web avec un formulaire de connexion.
  • Liste d'utilisateurs : Un fichier contenant une liste d'utilisateurs potentiels.
  • Liste de mots de passe : Un fichier contenant une liste de mots de passe potentiels.

Tout d'abord, créons une simple liste d'utilisateurs et une liste de mots de passe. Nous utiliserons nano pour créer ces fichiers dans le répertoire ~/project.

Créez un fichier nommé users.txt avec le contenu suivant :

nano ~/project/users.txt

Ajoutez les utilisateurs suivants au fichier :

admin
user
test

Enregistrez le fichier en appuyant sur Ctrl+X, puis Y, puis Entrée.

Ensuite, créez un fichier nommé passwords.txt avec le contenu suivant :

nano ~/project/passwords.txt

Ajoutez les mots de passe suivants au fichier :

password
123456
test

Enregistrez le fichier en appuyant sur Ctrl+X, puis Y, puis Entrée.

Maintenant, supposons que nous ayons un serveur web en cours d'exécution à l'adresse 127.0.0.1 sur le port 80 avec un formulaire de connexion. Le formulaire nécessite un nom d'utilisateur et un mot de passe, et la page de connexion se trouve à l'adresse /login.php. Nous utiliserons Hydra pour tenter de craquer la connexion.

Remarque : Pour ce laboratoire, nous allons simuler le service HTTP. Dans un scénario du monde réel, vous remplaceriez 127.0.0.1 par l'adresse IP réelle ou le nom de domaine du serveur cible.

Pour effectuer l'attaque HTTP de base, utilisez la commande suivante :

hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Décortiquons cette commande :

  • hydra : La commande Hydra.
  • -L ~/project/users.txt : Spécifie le fichier de la liste d'utilisateurs.
  • -P ~/project/passwords.txt : Spécifie le fichier de la liste de mots de passe.
  • 127.0.0.1 : L'adresse IP cible.
  • http-post-form : Spécifie le module d'attaque de formulaire HTTP POST.
  • "/login.php:username=^USER^&password=^PASS^:Invalid username or password" : Spécifie la page de connexion, les champs de nom d'utilisateur et de mot de passe, ainsi que le message d'erreur affiché en cas d'échec de connexion. ^USER^ et ^PASS^ sont des espaces réservés que Hydra remplace par les noms d'utilisateur et les mots de passe des listes.

Après avoir exécuté la commande, Hydra tentera de se connecter en utilisant chaque combinaison de nom d'utilisateur et de mot de passe. Si une connexion réussie est trouvée, Hydra affichera le nom d'utilisateur et le mot de passe.

Exemple de sortie (en cas de réussite) :

Hydra v9.6 (c) 2024 by van Hauser/THC - Use freely but only for legal purposes.

Hydra is starting...

[DATA] 1 task, 3 servers, 3 login tries (l:3/p:3), ~1 try per server
[DATA] attacking service http-post-form on port 80
[ATTACK] attacking 127.0.0.1:80/login.php
[80][http-post-form] host: 127.0.0.1   login: admin   password: password

Cette sortie indique que Hydra a réussi à trouver la combinaison de nom d'utilisateur admin et de mot de passe password.

Si aucune connexion réussie n'est trouvée, Hydra se terminera sans afficher de informations de connexion réussies.

Enregistrer les résultats avec l'option -o

Dans cette étape, nous allons apprendre à enregistrer les résultats d'une attaque Hydra dans un fichier en utilisant l'option -o. Cela est utile pour analyser les résultats plus tard ou à des fins de rapport.

L'option -o vous permet de spécifier un fichier de sortie dans lequel Hydra stockera les identifiants crackés. Si Hydra trouve une combinaison valide de nom d'utilisateur et de mot de passe, elle sera écrite dans le fichier spécifié.

Continuons avec le même scénario que dans l'étape précédente. Nous avons un serveur web en cours d'exécution à l'adresse 127.0.0.1 sur le port 80 avec un formulaire de connexion situé à l'adresse /login.php. Nous utiliserons les mêmes fichiers users.txt et passwords.txt.

Pour enregistrer les résultats dans un fichier nommé hydra.log dans le répertoire ~/project, utilisez la commande suivante :

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.log 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

La seule différence par rapport à la commande précédente est l'ajout de l'option -o ~/project/hydra.log. Cela indique à Hydra d'enregistrer les résultats dans le fichier hydra.log.

Après avoir exécuté la commande, Hydra tentera de se connecter en utilisant chaque combinaison de nom d'utilisateur et de mot de passe. Si une connexion réussie est trouvée, le nom d'utilisateur et le mot de passe seront écrits dans le fichier hydra.log.

Pour afficher le contenu du fichier hydra.log, vous pouvez utiliser la commande cat :

cat ~/project/hydra.log

Exemple de sortie (en cas de réussite) :

Si Hydra trouve la combinaison admin:password, le fichier hydra.log contiendra une ligne similaire à celle-ci :

127.0.0.1 http-post-form: admin:password

Si aucune connexion réussie n'est trouvée, le fichier hydra.log sera vide.

Il est important de noter que l'option -o écrasera le fichier de sortie s'il existe déjà. Si vous souhaitez ajouter les résultats à un fichier existant, vous pouvez utiliser l'option -O (O majuscule) à la place. Cependant, pour ce laboratoire, nous nous concentrerons sur l'option -o.

Sortie au format JSON avec l'option -b

Dans cette étape, nous allons explorer comment exporter les résultats d'une attaque Hydra au format JSON en utilisant l'option -b. JSON (JavaScript Object Notation) est un format d'échange de données léger, facile à lire et à écrire pour les humains, et facile à analyser et à générer pour les machines. Ce format est particulièrement utile lorsque vous avez besoin de traiter les résultats de manière programmée.

L'option -b, combinée avec l'option -o, indique à Hydra d'enregistrer la sortie au format JSON dans le fichier spécifié.

Continuons avec le même scénario que précédemment. Nous avons un serveur web en cours d'exécution à l'adresse 127.0.0.1 sur le port 80 avec un formulaire de connexion situé à l'adresse /login.php. Nous utiliserons les mêmes fichiers users.txt et passwords.txt.

Pour enregistrer les résultats au format JSON dans un fichier nommé hydra.json dans le répertoire ~/project, utilisez la commande suivante :

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.json -b 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Dans cette commande, nous avons ajouté l'option -b ainsi que l'option -o ~/project/hydra.json. Cela indique à Hydra d'enregistrer la sortie au format JSON dans le fichier hydra.json.

Après avoir exécuté la commande, Hydra tentera de se connecter en utilisant chaque combinaison de nom d'utilisateur et de mot de passe. Si une connexion réussie est trouvée, le nom d'utilisateur et le mot de passe seront écrits dans le fichier hydra.json au format JSON.

Pour afficher le contenu du fichier hydra.json, vous pouvez utiliser la commande cat :

cat ~/project/hydra.json

Exemple de sortie (en cas de réussite) :

Si Hydra trouve la combinaison admin:password, le fichier hydra.json contiendra un objet JSON similaire à celui-ci :

[
  {
    "host": "127.0.0.1",
    "port": 80,
    "service": "http-post-form",
    "login": "admin",
    "password": "password"
  }
]

Si aucune connexion réussie n'est trouvée, le fichier hydra.json contiendra un tableau JSON vide :

[]

Ce format JSON vous permet d'analyser facilement les résultats à l'aide de langages de script tels que Python ou JavaScript pour une analyse plus approfondie ou une automatisation.

Comparer les sorties texte et JSON

Dans cette étape, nous allons comparer les sorties texte et JSON générées par Hydra. Cela vous aidera à comprendre les différences entre les deux formats et à savoir quand utiliser chacun d'eux.

Nous continuerons à utiliser le même scénario : un serveur web en cours d'exécution à l'adresse 127.0.0.1 sur le port 80 avec un formulaire de connexion situé à l'adresse /login.php, ainsi que les fichiers users.txt et passwords.txt.

Tout d'abord, exécutons Hydra pour générer à la fois les fichiers de sortie texte et JSON.

Exécutez la commande suivante pour générer le fichier de sortie texte (hydra.log) :

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.log 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Ensuite, exécutez la commande suivante pour générer le fichier de sortie JSON (hydra.json) :

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.json -b 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Maintenant, comparons le contenu des deux fichiers.

Affichez le contenu du fichier de sortie texte (hydra.log) en utilisant la commande cat :

cat ~/project/hydra.log

Exemple de sortie (en cas de réussite) :

127.0.0.1 http-post-form: admin:password

Affichez le contenu du fichier de sortie JSON (hydra.json) en utilisant la commande cat :

cat ~/project/hydra.json

Exemple de sortie (en cas de réussite) :

[
  {
    "host": "127.0.0.1",
    "port": 80,
    "service": "http-post-form",
    "login": "admin",
    "password": "password"
  }
]

Comparaison :

  • Sortie texte : La sortie texte est un format simple et lisible par l'homme. Il est facile de voir rapidement le nom d'utilisateur et le mot de passe crackés. Cependant, il n'est pas facilement analysé par les machines.
  • Sortie JSON : La sortie JSON est un format structuré qui est facilement analysé par les machines. Elle contient plus d'informations que la sortie texte, telles que l'hôte, le port et le service. Cependant, elle n'est pas aussi lisible par l'homme que la sortie texte.

Quand utiliser chaque format :

  • Utilisez la sortie texte lorsque vous avez besoin de voir rapidement le nom d'utilisateur et le mot de passe crackés et que vous n'avez pas besoin de traiter les résultats de manière programmée.
  • Utilisez la sortie JSON lorsque vous avez besoin de traiter les résultats de manière programmée, par exemple pour la génération de rapports ou l'automatisation.

En résumé, le choix entre la sortie texte et la sortie JSON dépend de vos besoins spécifiques. Si vous avez besoin d'un format lisible par l'homme, utilisez la sortie texte. Si vous avez besoin d'un format lisible par les machines, utilisez la sortie JSON.

Résumé

Dans ce laboratoire, nous avons appris à effectuer une attaque HTTP de base en utilisant Hydra, un outil puissant de craquage de mots de passe. Nous avons créé des listes de noms d'utilisateurs et de mots de passe à l'aide de nano, puis utilisé Hydra pour tenter de craquer un formulaire de connexion HTTP simulé à l'adresse 127.0.0.1. La commande hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password" a été utilisée pour exécuter l'attaque, ciblant le point d'accès /login.php avec les paramètres de nom d'utilisateur et de mot de passe spécifiés.