Générer des mots de passe avec Hydra pour les attaques par force brute

HydraBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à utiliser Hydra pour générer des mots de passe pour des attaques par force brute en utilisant diverses techniques de génération de mots de passe. Vous vous concentrerez sur l'utilisation de l'option -x d'Hydra pour créer des mots de passe basés sur différents critères tels que la longueur, les jeux de caractères et les schémas de mots de passe courants.

Le laboratoire vous guidera à travers plusieurs scénarios de génération de mots de passe, y compris les jeux de caractères de base, les combinaisons de caractères mixtes, les modèles numériques et les structures de mots de passe du monde réel. Vous ciblerez un serveur FTP fictif sur localhost pour pratiquer ces techniques et apprendre à analyser efficacement les résultats des attaques par force brute.

Générer des mots de passe avec l'option -x

Dans cette étape, vous apprendrez à utiliser l'option -x dans Hydra pour générer des mots de passe basés sur un format spécifié. Ceci est utile lorsque vous disposez de certaines informations sur la structure potentielle du mot de passe, comme une plage de longueurs connue ou un jeu de caractères.

L'option -x d'Hydra vous permet de définir une longueur minimale et maximale pour les mots de passe générés, ainsi qu'un jeu de caractères à utiliser. La syntaxe est -x min:max:charset.

Commençons par un exemple simple. Vous allez générer des mots de passe de 6 à 8 caractères de longueur, en utilisant uniquement les lettres minuscules.

Tout d'abord, assurez-vous que vous êtes dans le répertoire ~/project. Il s'agit du répertoire par défaut lorsque vous démarrez le laboratoire.

cd ~/project

Maintenant, vous utiliserez Hydra pour générer des mots de passe. À des fins de démonstration, vous ciblerez le service SSH sur localhost. Cela vous permettra de voir la génération de mots de passe sans effectuer une attaque réelle (puisque nous utilisons un utilisateur inexistant).

Exécutez la commande suivante dans le terminal :

hydra -l testuser -vV -x 3:5:a-z localhost ssh

Décomposons cette commande :

  • hydra : La commande pour exécuter l'outil Hydra.
  • -l testuser : Spécifie le nom d'utilisateur à utiliser. Vous utilisez ici "testuser" comme marqueur (cet utilisateur n'existe probablement pas).
  • -vV : Active la sortie détaillée, affichant chaque tentative.
  • -x 3:5:a-z : Ceci est la partie clé. Elle indique à Hydra de générer des mots de passe avec :
    • 3 : Longueur minimale de 3 caractères.
    • 5 : Longueur maximale de 5 caractères.
    • a-z : Utiliser uniquement les lettres minuscules (a-z). D'autres options incluent A-Z (majuscules), 0-9 (chiffres), et vous pouvez les combiner, par exemple, a-zA-Z0-9 pour les minuscules, majuscules et chiffres.
  • localhost : L'hôte cible.
  • ssh : Le service SSH à cibler.

Vous verrez Hydra tenter des connexions avec des mots de passe générés comme "aaa", "aaaa", "aaaaa", "aab", et ainsi de suite. Lorsque vous utilisez l'option -x, Hydra génère automatiquement des mots de passe en fonction des critères spécifiés.

Remarque : Le nombre de combinaisons pour des mots de passe de 3 à 5 caractères utilisant uniquement les lettres minuscules est gérable : 26³ + 26⁴ + 26⁵ = 17 576 + 456 976 + 11 881 376 ≈ 12,4 millions de combinaisons, ce qui est inférieur aux limites d'Hydra.

Important : Utilisez Ctrl+C pour arrêter l'attaque, car elle prendra beaucoup de temps à se terminer.

La sortie affichera les mots de passe générés tandis qu'Hydra tente de se connecter au service SSH.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aab" - 1 of 1 [child 0] (0/0)
...

Limites de combinaisons de mots de passe :

Lors de l'utilisation de l'option -x d'Hydra, il est crucial de considérer le nombre total de combinaisons de mots de passe qui seront générées. Hydra possède une limite intégrée de 4 milliards de mots de passe pour éviter les tentatives de force brute irréalistes.

Voici quelques exemples de nombres de combinaisons :

  • 3-5 caractères, minuscules uniquement (a-z) : ~12,4 millions de combinaisons ✓
  • 4-6 caractères, minuscules uniquement (a-z) : ~321 millions de combinaisons ✓
  • 6-8 caractères, minuscules uniquement (a-z) : ~217 milliards de combinaisons ✗ (dépasse la limite)
  • 4-6 caractères, alphanumériques (a-zA-Z0-9) : ~57 milliards de combinaisons ✗ (dépasse la limite)

Calculez toujours le nombre de combinaisons avant d'exécuter la commande : charset_size^min_length + ... + charset_size^max_length

Attaquer un serveur FTP avec des mots de passe générés

Dans cette étape, vous utiliserez les capacités de génération de mots de passe d'Hydra pour attaquer un serveur FTP fictif. Vous utiliserez une liste de mots de passe générée "à la volée" avec l'option -x.

Tout d'abord, vous devez configurer un serveur FTP simple pour les tests. Vous utiliserez python3-pyftpdlib, qui est une bibliothèque de serveur FTP légère pour Python.

Installez python3-pyftpdlib si ce n'est pas déjà fait :

sudo apt update
sudo apt install -y python3-pyftpdlib

Démarrez le serveur FTP en arrière-plan sur le port 2121, servant les fichiers depuis le répertoire ~/project. L'option -w permet l'accès en écriture.

nohup python3 -m pyftpdlib -p 2121 -w -u testuser -P secret ~/project > /dev/null 2>&1 &

La partie nohup ... & exécute la commande en arrière-plan et l'empêche de s'arrêter si vous fermez le terminal. > /dev/null 2>&1 redirige la sortie standard et l'erreur standard vers /dev/null, gardant votre terminal propre. Les options -u testuser -P secret configurent un utilisateur avec le mot de passe "secret" qui peut accéder au serveur.

Maintenant, vous utiliserez Hydra pour attaquer ce serveur FTP. Vous utiliserez l'option -x pour générer des mots de passe et tenter de vous connecter en tant qu'utilisateur "testuser".

Exécutez la commande suivante dans le terminal :

hydra -l testuser -vV -x 4:6:a-z 127.0.0.1 ftp -s 2121

Décomposons cette commande :

  • hydra : L'outil en ligne de commande Hydra.
  • -l testuser : Spécifie le nom d'utilisateur à utiliser : "testuser".
  • -vV : Active la sortie détaillée, affichant chaque tentative de connexion.
  • -x 4:6:a-z : Indique à Hydra de générer des mots de passe avec :
    • 4 : Longueur minimale de 4 caractères.
    • 6 : Longueur maximale de 6 caractères.
    • a-z : Utiliser uniquement les lettres minuscules (a-z).
  • 127.0.0.1 : L'hôte cible (localhost). Vous utilisez 127.0.0.1 au lieu de localhost pour éviter d'éventuels problèmes de résolution DNS dans le conteneur.
  • ftp : Le service à attaquer (FTP).
  • -s 2121 : Spécifie le numéro de port. Vous ciblez le serveur FTP exécuté sur le port 2121.

Vous devriez voir Hydra tenter des connexions avec les mots de passe générés. Puisque le serveur FTP est configuré avec des identifiants spécifiques (nom d'utilisateur : testuser, mot de passe : secret), Hydra trouvera le mot de passe correct lorsqu'il générera "secret" lors de ses tentatives de force brute.

Important : Utilisez Ctrl+C pour arrêter l'attaque, car elle prendra beaucoup de temps à se terminer.

La sortie affichera les tentatives de connexion et éventuellement un message de connexion réussie.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaaa
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaab
...
[2121][ftp] host: 127.0.0.1   login: testuser   password: secret

Essayons maintenant un exemple légèrement plus complexe, combinant les lettres minuscules et les chiffres :

hydra -l testuser -vV -x 3:5:a-z0-9 127.0.0.1 ftp -s 2121

Ceci générera des mots de passe comme "aaa", "aab", "aac", et ainsi de suite, en parcourant systématiquement toutes les combinaisons de 3 caractères d'abord, puis de 4 caractères, et enfin de 5 caractères. Observez la sortie pour voir les mots de passe générés et la connexion réussie.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaa
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aab
...
[2121][ftp] host: 127.0.0.1   login: testuser   password: secret

Cette étape a démontré comment utiliser Hydra avec l'option -x pour générer des mots de passe et attaquer un serveur FTP. N'oubliez pas d'utiliser ces techniques de manière responsable et éthique.

Génération de mots de passe en majuscules et minuscules

Dans cette étape, vous apprendrez à générer des mots de passe utilisant des lettres majuscules et minuscules. Il s'agit d'un schéma courant pour les mots de passe, ce qui en fait une stratégie efficace pour les attaques par force brute.

De nombreux utilisateurs créent des mots de passe avec des lettres majuscules et minuscules pour satisfaire aux exigences de complexité des mots de passe. Comprendre ce schéma peut améliorer significativement votre taux de réussite lors des attaques par force brute.

Assurez-vous d'être dans le répertoire ~/project et que votre serveur FTP est toujours en cours d'exécution :

cd ~/project

Générons maintenant des mots de passe avec des lettres majuscules et minuscules. Exécutez la commande suivante :

hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121

Cette commande génère des mots de passe en utilisant :

  • a-z : lettres minuscules (a-z)
  • A-Z : lettres majuscules (A-Z)

Vous verrez des mots de passe comme "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab", etc. Notez comment Hydra combine systématiquement les lettres majuscules et minuscules.

Essayons la plage de 3 à 4 caractères pour voir le schéma plus clairement :

hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121

Cela générera des mots de passe de 3 à 4 caractères avec des lettres majuscules et minuscules. Vous pouvez observer comment les combinaisons progressent :

  • 3 caractères : "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab", etc.
  • 4 caractères : "aaaa", "Aaaa", "aAaa", "AAaa", "aaaA", "AaaA", "aAaA", "AAaA", etc.

Comprendre le schéma :

La génération de mots de passe en majuscules et minuscules suit une approche systématique où Hydra essaie toutes les combinaisons possibles de lettres majuscules et minuscules. Ceci est particulièrement efficace car :

  1. De nombreuses politiques de mots de passe exigent des lettres majuscules et minuscules.
  2. Les utilisateurs capitalisent souvent la première lettre ou des lettres aléatoires.
  3. Les schémas courants incluent la capitalisation de la première lettre des mots.

Cette étape a démontré comment utiliser la génération de mots de passe avec des lettres majuscules et minuscules pour les attaques par force brute, ce qui est efficace contre les mots de passe utilisant à la fois des lettres majuscules et minuscules.

Génération de mots de passe alphanumériques

Dans cette étape, vous apprendrez à générer des mots de passe combinant des lettres et des chiffres. Les mots de passe alphanumériques sont extrêmement courants car ils équilibrent sécurité et mémorisation.

Les mots de passe alphanumériques sont l'un des types de mots de passe les plus courants car ils :

  • Respectent la plupart des exigences de complexité des mots de passe
  • Sont plus faciles à mémoriser que des chaînes aléatoires purement
  • Sont souvent utilisés dans les environnements professionnels

Générons des mots de passe alphanumériques à l'aide d'Hydra :

hydra -l testuser -vV -x 3:4:a-zA-Z0-9 127.0.0.1 ftp -s 2121

Ceci génère des mots de passe avec :

  • a-z : lettres minuscules (a-z)
  • A-Z : lettres majuscules (A-Z)
  • 0-9 : chiffres (0-9)

Exemples de mots de passe générés : "abc", "A2b", "123", "aB1", "Te1", etc.

Essayons une approche plus ciblée avec uniquement des lettres minuscules et des chiffres :

hydra -l testuser -vV -x 3:4:a-z0-9 127.0.0.1 ftp -s 2121

Ceci générera des mots de passe comme "aaa", "aa1", "a12", "123", "test", etc.

Schémas alphanumériques courants :

Les utilisateurs suivent souvent des schémas prévisibles lors de la création de mots de passe alphanumériques :

  1. Mot + chiffres (par exemple, "pass123")
  2. Chiffres + mot (par exemple, "123pass")
  3. Alternance de lettres et de chiffres (par exemple, "a1b2")

Simulons un schéma où les utilisateurs pourraient utiliser de courtes combinaisons alphanumériques :

hydra -l testuser -vV -x 4:5:a-z0-9 127.0.0.1 ftp -s 2121

Cette étape a démontré comment générer des mots de passe alphanumériques, qui sont parmi les types de mots de passe les plus courants dans les scénarios réels.

Génération de mots de passe numériques uniquement

Dans cette étape, vous apprendrez à générer des mots de passe composés uniquement de chiffres. Ce type de mot de passe est courant pour les codes PIN, les mots de passe simples et les systèmes ne nécessitant que des chiffres.

Les mots de passe numériques sont fréquemment utilisés dans :

  • Les codes PIN pour les appareils et les comptes
  • Les mots de passe simples pour les systèmes basiques
  • Les mots de passe temporaires
  • Les systèmes hérités ne nécessitant que des chiffres

Générons des mots de passe numériques uniquement :

hydra -l testuser -vV -x 3:6:0-9 127.0.0.1 ftp -s 2121

Ceci génère des mots de passe numériques uniquement comme "123", "1234", "0000", "9999", "5678", etc.

Pour les mots de passe de type code PIN (généralement 4 à 6 chiffres), essayez :

hydra -l testuser -vV -x 4:4:0-9 127.0.0.1 ftp -s 2121

Ceci génère des combinaisons de 4 chiffres qui pourraient représenter :

  • Des années (1990, 2000, 2023, etc.)
  • Des codes PIN courants (1234, 0000, 1111, etc.)
  • Des années de naissance
  • Des dates importantes

Essayons un schéma de 6 chiffres courant pour les codes PIN plus longs :

hydra -l testuser -vV -x 6:6:0-9 127.0.0.1 ftp -s 2121

Schémas numériques courants :

Les utilisateurs choisissent souvent des mots de passe numériques prévisibles :

  1. Chiffres séquentiels : 123456, 654321
  2. Chiffres répétés : 111111, 000000
  3. Dates : années de naissance, année courante
  4. Schémas simples : 121212, 123123

Application dans le monde réel :

La génération de mots de passe numériques est particulièrement utile pour cibler :

  • Les codes PIN des appareils mobiles
  • Les codes PIN des distributeurs automatiques
  • Les mots de passe simples des systèmes basiques
  • Les codes d'accès temporaires

Cette étape a démontré comment générer des mots de passe numériques uniquement, fréquemment utilisés dans de nombreux systèmes.

Génération de mots de passe avec jeux de caractères personnalisés et symboles

Dans cette étape, vous apprendrez à créer des ensembles de caractères personnalisés incluant des symboles spécifiques. Cela est utile lorsque vous savez ou soupçonnez que la cible utilise certains caractères spéciaux dans ses mots de passe.

De nombreuses politiques de mots de passe exigent des caractères spéciaux, et les utilisateurs choisissent souvent des symboles courants faciles à taper. Comprendre quels symboles inclure peut rendre vos attaques par force brute plus efficaces.

Générons des mots de passe avec des ensembles de caractères personnalisés incluant des symboles spécifiques :

hydra -l testuser -vV -x '3:4:a-z0-9!@#' 127.0.0.1 ftp -s 2121

Ceci génère des mots de passe utilisant :

  • a-z : lettres minuscules (a-z)
  • 0-9 : chiffres (0-9)
  • !@# : symboles spécifiques

Exemples : "abc!", "a1@", "te#", "12!", etc.

Essayons un autre ensemble de symboles courants :

hydra -l testuser -vV -x '3:4:a-z$%&' 127.0.0.1 ftp -s 2121

Ceci utilise les lettres minuscules et les symboles $, %, &.

Pour les mots de passe pouvant inclure des symboles plus complexes :

hydra -l testuser -vV -x '3:4:a-zA-Z0-9!@#$%^&*' 127.0.0.1 ftp -s 2121

Ceci crée un ensemble de caractères complet avec :

  • Lettres minuscules et majuscules
  • Chiffres
  • Symboles courants : !@#$%^&*

Symboles de mots de passe les plus courants :

D'après l'analyse des mots de passe, ces symboles sont les plus fréquemment utilisés :

  1. ! - Point d'exclamation
  2. @ - Symbole arobase
  3. # - Dièse/dièse
  4. $ - Signe dollar
  5. % - Pourcentage
  6. ^ - Accent circonflexe
  7. & - Et
  8. * - Astérisque

Sélection stratégique des symboles :

Lors de la création d'ensembles de caractères personnalisés, tenez compte de :

  • L'accessibilité au clavier (les symboles de la rangée numérique sont courants)
  • Les exigences de la politique de mot de passe
  • Les préférences culturelles (certains symboles sont plus courants dans certaines régions)
  • Les limitations du système (certains systèmes n'autorisent pas certains symboles)

Ensembles de symboles ciblés :

Pour des scénarios spécifiques, vous pouvez utiliser des ensembles de symboles ciblés :

## Ponctuation courante
hydra -l testuser -vV -x '3:4:a-z0-9.,;:' 127.0.0.1 ftp -s 2121

## Symboles de crochets
hydra -l testuser -vV -x '3:4:a-z0-9()[]{}' 127.0.0.1 ftp -s 2121

## Symboles mathématiques
hydra -l testuser -vV -x '3:4:a-z0-9+-=/' 127.0.0.1 ftp -s 2121

Cette étape a démontré comment créer des ensembles de caractères personnalisés avec des symboles spécifiques, vous permettant d'adapter vos attaques par force brute en fonction des schémas de mots de passe connus ou soupçonnés.

Résumé

Dans ce laboratoire, vous avez appris à utiliser Hydra pour générer des mots de passe dans le cadre d'attaques par force brute, grâce à une approche complète étape par étape. Vous avez exploré l'option -x d'Hydra dans de multiples scénarios spécifiques, chacun se concentrant sur des techniques de génération de mots de passe particulières.

Vous avez pratiqué différentes stratégies de génération de mots de passe, notamment :

  • Génération de mots de passe de base : Comprendre la syntaxe de l'option -x et les concepts fondamentaux.
  • Scénarios d'attaque FTP : Application de la génération de mots de passe contre des services réels.
  • Lettres majuscules et minuscules : Combinaison de lettres majuscules et minuscules pour des schémas de mots de passe courants.
  • Mots de passe alphanumériques : Utilisation de lettres et de chiffres, le type de mot de passe le plus courant dans les scénarios réels.
  • Mots de passe numériques uniquement : Ciblage des codes PIN et des mots de passe numériques simples avec un fort taux de réussite de la piratage.
  • Ensembles de caractères personnalisés avec symboles : Création de combinaisons de symboles ciblées basées sur les schémas d'utilisation courants.