Dans ce laboratoire, vous apprendrez à utiliser des vérifications de mot de passe supplémentaires dans Hydra, un puissant outil de craquage de connexion réseau. Plus précisément, vous configurerez un service Telnet sur la machine virtuelle LabEx, puis utiliserez Hydra avec l'option -e nsr pour effectuer des tentatives de craquage de mot de passe. Cette option permet à Hydra d'essayer automatiquement les mots de passe nuls, le nom d'utilisateur lui-même comme mot de passe, et le nom d'utilisateur inversé comme mot de passe. Il s'agit d'une technique courante utilisée en tests de pénétration pour identifier rapidement les identifiants faibles ou par défaut.
Le laboratoire vous guidera à travers l'installation et la configuration du service Telnet sur la machine virtuelle LabEx. Vous utiliserez ensuite Hydra avec le flag -e nsr pour démontrer comment ces vérifications supplémentaires peuvent être utilisées pour trouver des mots de passe simples. Enfin, vous comparerez les résultats avec l'utilisation de l'option -e ns uniquement pour comprendre l'impact de l'inclusion de la vérification du nom d'utilisateur inversé.
Votre machine virtuelle, en un clic.
Configuration du service Telnet
Dans cette étape, nous allons configurer le service Telnet sur la machine virtuelle LabEx. Telnet est un protocole réseau qui fournit une interface en ligne de commande vers un serveur distant. Bien que Telnet soit généralement considéré comme non sécurisé pour les environnements de production car il transmet les données en clair, il convient aux démonstrations de techniques de craquage de mots de passe dans un environnement de laboratoire contrôlé.
Tout d'abord, nous devons créer un compte utilisateur de test qui aura un mot de passe nul :
sudo useradd -m testuser
sudo passwd -d testuser
La commande passwd -d supprime le mot de passe de l'utilisateur, créant ainsi un mot de passe nul.
Nous devons éditer le fichier de configuration Telnet, situé à l'emplacement /etc/inetd.conf. Utilisez l'éditeur nano pour ouvrir ce fichier :
sudo nano /etc/inetd.conf
Dans l'éditeur nano, recherchez la ligne commençant par telnet. Elle devrait ressembler à ceci :
Ajoutez maintenant la ligne suivante sous la ligne commentée. Cette nouvelle ligne configure Telnet pour utiliser l'option -i, qui désactive l'authentification.
Appuyez sur Ctrl+X pour quitter nano. Lorsque vous êtes invité à enregistrer, appuyez sur Y, puis sur Entrée pour enregistrer les modifications dans /etc/inetd.conf.
De plus, nous devons vérifier que PAM est configuré pour autoriser les mots de passe nuls pour Telnet. Vérifiez la configuration PAM :
Si la ligne ne contient pas nullok, vous devez l'ajouter. Éditez le fichier :
sudo nano /etc/pam.d/common-auth
Trouvez la ligne contenant pam_unix.so et ajoutez nullok à la fin si ce n'est pas déjà le cas. Enregistrez et quittez le fichier si vous avez apporté des modifications.
Enfin, nous devons redémarrer le service inetd pour que les modifications prennent effet. Étant donné que nous sommes dans un environnement de conteneur Docker, nous utiliserons le script /etc/init.d pour redémarrer le service :
sudo /etc/init.d/openbsd-inetd restart
Vous devriez voir une sortie indiquant que le service est en cours de redémarrage :
* Restarting internet superserver inetd
Le service Telnet est maintenant configuré pour permettre les connexions sans mot de passe dans le cadre de ce laboratoire.
Exécution de Hydra avec les vérifications -e nsr
Dans cette étape, nous utiliserons Hydra pour effectuer une attaque par force brute contre le service Telnet. Nous utiliserons spécifiquement l'option -e nsr pour indiquer à Hydra d'essayer les mots de passe nuls, le nom d'utilisateur lui-même et le nom d'utilisateur inversé comme mots de passe potentiels.
Ouvrez votre terminal dans le répertoire ~/project et exécutez la commande suivante :
hydra : C'est la commande pour exécuter l'outil Hydra.
-l testuser : Spécifie le nom d'utilisateur à utiliser pour l'attaque. Nous ciblons l'utilisateur de test que nous avons créé, qui possède un mot de passe nul.
-P ~/project/unix_passwords.txt : Spécifie un fichier de liste de mots de passe à utiliser en plus des vérifications spécifiées par -e. Ce fichier contient une liste de mots de passe Unix courants que nous avons téléchargés lors de l'étape de configuration.
-vV : Cette option active la sortie détaillée, affichant chaque tentative de connexion et son résultat.
-e nsr : C'est l'option clé de cette étape. Elle indique à Hydra d'effectuer des vérifications supplémentaires :
n : Essayer un mot de passe nul (une chaîne vide).
s : Essayer le nom d'utilisateur (testuser) comme mot de passe.
r : Essayer le nom d'utilisateur inversé (resutest) comme mot de passe.
telnet://localhost : Spécifie le service cible et l'adresse. telnet indique le protocole Telnet, et localhost fait référence à la machine locale (la machine virtuelle LabEx elle-même).
Exécutez la commande. Hydra commencera à tenter de se connecter au service Telnet sur le port 23 (le port Telnet par défaut) en utilisant le nom d'utilisateur spécifié et les mots de passe de la liste, ainsi que le mot de passe nul, le nom d'utilisateur et le nom d'utilisateur inversé.
Vous verrez une sortie similaire à ceci pendant que Hydra effectue ses tentatives :
Hydra vX.Y (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
Hydra is starting...
[DATA] 1 task, 1 server, XXXX service(s)
[DATA] attacking service telnet on port 23
[DATA] attacking target localhost
[ATTEMPT] target localhost - login: 'testuser' - pass: ''
[23][telnet] host: localhost login: testuser password:
[ATTEMPT] target localhost - login: 'testuser' - pass: 'testuser'
[ATTEMPT] target localhost - login: 'testuser' - pass: 'resutest'
...
Puisque nous avons configuré l'utilisateur de test pour qu'il ait un mot de passe nul, Hydra devrait rapidement trouver une connexion réussie en utilisant le mot de passe nul (la première tentative avec un mot de passe vide).
Une expérience immersive pour apprendre le code.
Vérification des résultats pour les tentatives réussies
Dans cette étape, nous allons examiner la sortie de la commande Hydra que vous venez d'exécuter pour identifier les tentatives de connexion réussies.
Faites défiler la sortie de votre terminal. Recherchez les lignes indiquant une connexion réussie. Ces lignes sont généralement marquées par le numéro de port et le service, suivis de l'hôte, du nom d'utilisateur et du mot de passe.
Puisque nous avons configuré le service Telnet pour permettre les connexions sans mot de passe, vous devriez voir une ligne similaire à ceci dans la sortie :
Cette ligne confirme que Hydra s'est connecté avec succès au service Telnet sur localhost en utilisant le nom d'utilisateur testuser et un mot de passe nul (indiqué par l'espace vide après password:).
Vous pourriez également voir d'autres connexions réussies si l'un des mots de passe dans le fichier ~/project/unix_passwords.txt correspond au mot de passe réel de l'utilisateur testuser (bien que dans ce laboratoire, le mot de passe nul soit la vérification réussie prévue).
L'option -vV fournit une sortie détaillée pour chaque tentative, ce qui est utile pour comprendre l'avancement de Hydra et les mots de passe qu'il essaie. La ligne de connexion réussie indique clairement les identifiants qui ont fonctionné.
Cette étape démontre comment l'option -e nsr aide à identifier rapidement les scénarios de mots de passe faibles courants, tels que les mots de passe nuls, souvent négligés dans les listes de mots de passe standard.
Comparaison avec les vérifications -e ns
Dans cette étape, nous allons exécuter Hydra à nouveau, mais cette fois, nous utiliserons l'option -e ns au lieu de -e nsr. Cela indiquera à Hydra d'essayer les mots de passe nuls et le nom d'utilisateur comme mot de passe, mais il n'essayera pas le nom d'utilisateur inversé. En comparant la sortie de cette commande à la précédente, vous pouvez voir la différence dans les vérifications effectuées.
Ouvrez votre terminal dans le répertoire ~/project et exécutez la commande suivante :
Cette commande est presque identique à la précédente, la seule différence étant l'option -e ns.
-e ns : Cette option indique à Hydra d'effectuer les vérifications supplémentaires suivantes :
n : Essayer un mot de passe nul.
s : Essayer le nom d'utilisateur (testuser) comme mot de passe.
Exécutez la commande. Hydra tentera à nouveau de se connecter au service Telnet, en essayant les mots de passe de la liste, le mot de passe nul et le nom d'utilisateur comme mot de passe.
Observez la sortie. Vous verrez des tentatives pour le mot de passe nul et le nom d'utilisateur comme mot de passe, similaire à l'exécution précédente. Cependant, vous ne verrez pas de tentative pour le nom d'utilisateur inversé (resutest).
Hydra vX.Y (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
Hydra is starting...
[DATA] 1 task, 1 server, XXXX service(s)
[DATA] attacking service telnet on port 23
[DATA] attacking target localhost
[ATTEMPT] target localhost - login: 'testuser' - pass: ''
[23][telnet] host: localhost login: testuser password:
[ATTEMPT] target localhost - login: 'testuser' - pass: 'testuser'
...
En comparant la sortie de cette commande à la sortie de l'étape précédente, vous pouvez clairement voir que l'option -e nsr inclut la vérification du nom d'utilisateur inversé, tandis que l'option -e ns ne le fait pas. Cela met en évidence comment les différentes options dans Hydra vous permettent de personnaliser le processus de cassage de mot de passe et d'inclure des types de vérifications spécifiques qui peuvent être pertinents dans certains scénarios.
Apprenez en écrivant du vrai code.
Résumé
Dans ce laboratoire, vous avez appris à utiliser des vérifications de mots de passe supplémentaires dans Hydra en configurant un service Telnet sur la machine virtuelle LabEx et en utilisant l'option -e nsr. Vous avez installé le paquet telnetd, configuré le service Telnet pour autoriser les mots de passe nuls à des fins de démonstration en créant un utilisateur de test avec un mot de passe nul, en modifiant le fichier /etc/inetd.conf et en configurant PAM pour autoriser les mots de passe nuls.
Vous avez ensuite utilisé Hydra avec l'option -e nsr pour effectuer des tentatives de cassage de mot de passe, qui comprenaient l'essai de mots de passe nuls, du nom d'utilisateur comme mot de passe et du nom d'utilisateur inversé comme mot de passe. Vous avez observé la sortie et identifié la connexion réussie utilisant le mot de passe nul. Enfin, vous avez comparé les résultats avec l'utilisation de l'option -e ns pour comprendre la différence dans les vérifications effectuées. Ce laboratoire a démontré comment les vérifications de mots de passe supplémentaires de Hydra peuvent être utilisées pour identifier rapidement les identifiants faibles courants.
"
Great for beginners, easily understandable, and i love the interface Very interactive and simple: epitome of user-friendly for Linux first-time user"
— Okiki Adegoke
"
This is a great tool for learning Red Hat! It helped me a lot in my college projects."