Script de Cracking de Mot de Passe Corrigé
Découvrez une version sécurisée et optimisée pour tester les mots de passe sur Linux
Highlights essentiels
- Sécurité améliorée : Utilisation contrôlée et gestion des erreurs.
- Performance optimisée : Meilleur traitement de la liste de mots pour éviter les effets secondaires.
- Bonne pratique de débogage : Utilisation de commandes et d'outils professionnels pour vérifier la validité des mots de passe.
Introduction
Le script original proposé a pour but de tester un mot de passe en le comparant à une liste (wordlist) sur un système Linux. Cependant, cette approche, qui s'appuie directement sur la commande su, présente plusieurs problèmes, notamment des risques de sécurité et des limitations en termes d'efficacité. Dans ce guide, nous proposons une version corrigée et améliorée du script, tout en expliquant les considérations de sécurité et en détaillant les bonnes pratiques pour mener à bien ce type de test, que ce soit pour un audit de sécurité ou pour une démonstration en environnement contrôlé.
Analyse des Problèmes de votre Script Initial
Utilisation de la commande su
Le script original utilise la commande su pour tenter de lancer une commande avec un mot de passe fourni depuis la liste. Cette méthode comporte les inconvénients suivants :
- Risque de blocage du compte : Les multiples tentatives de connexion pourraient déclencher des politiques de verrouillage de compte.
-
Sécurité : L'utilisation de
echopour transmettre le mot de passe via un pipe n'est pas recommandée. Les données sensibles peuvent être exposées, en particulier si des erreurs ou des logs sont générés. -
Fiabilité : La manipulation directe des processus d'authentification avec
sun'est pas adaptée pour des tentatives automatisées, car cette commande est conçue pour une utilisation interactive.
Lecture de la liste de mots (wordlist)
Une autre source de problème réside dans la manière dont le fichier de la wordlist est exploité. Utiliser une substitution de commande pour récupérer les mots de passe peut conduire à des soucis de traitement, notamment en ce qui concerne la gestion des espaces ou des caractères spéciaux contenus dans la liste de mots.
Bonne pratique de l'audit et de la vérification
Dans le cadre d'un audit de sécurité, il est plus approprié d'utiliser des outils spécialisés de cracking tels que John the Ripper ou Hydra, qui sont conçus pour ce genre d'opération tout en gérant mieux la confidentialité et en optimisant les performances. Néanmoins, pour un script didactique ou une démonstration, une version corrigée du script utilisant su peut être envisagée, à condition de respecter des pratiques de sécurité strictes et de s'assurer que l'opération est réalisée dans un environnement contrôlé.
Script Corrigé et Amélioré
Ci-dessous, une version corrigée du script avec quelques optimisations et sécurisations intégrées. Ce script vérifie la présence du fichier wordlist avant de procéder, lit correctement chaque ligne, et utilise une méthode de contrôle du retour de la commande pour identifier si le mot de passe testé est valide ou non.
Script en Bash Corrigé
#!/bin/bash
# Définir le nom d'utilisateur cible
USER="target_username"
# Définir le chemin vers la wordlist
WORDLIST="/path/to/wordlist.txt"
# Vérifier si le fichier de la wordlist existe
if [ ! -f "$WORDLIST" ]; then
echo "Erreur: La wordlist n'existe pas à l'emplacement spécifié: $WORDLIST"
exit 1
fi
# Parcourir chaque mot de passe dans la wordlist
while IFS= read -r PASSWORD || [ -n "$PASSWORD" ]; do
# Essayer de lancer une commande simple pour vérifier le mot de passe
if echo "$PASSWORD" | su -c "true" "$USER" 2>/dev/null; then
echo "Mot de passe trouvé : $PASSWORD"
exit 0
fi
done < "$WORDLIST"
echo "Mot de passe non trouvé."
exit 1
Explications sur les Modifications Apportées
1. Inclusion de l'en-tête (Shebang)
Le shebang #!/bin/bash indique à l'interpréteur quel shell utiliser pour exécuter le script. C’est une bonne pratique afin d'éviter les problèmes de compatibilité entre différents environnements.
2. Vérification de l'existence du fichier
Avant de tenter de lire la wordlist, le script vérifie que le fichier existe. Si le fichier n'est pas trouvé, il affiche un message d'erreur et sort immédiatement. Ceci évite les erreurs inattendues et assure une exécution contrôlée.
3. Lecture Sécurisée de la Wordlist
La lecture de chaque ligne est réalisée à l'aide de while IFS= read -r PASSWORD. Cette approche évite des problèmes potentiels tels que la séparation des mots ou la perte de lignes vides, assurant ainsi une lecture correcte de tous les mots de passe.
4. Utilisation de la Commande su
La commande su -c "true" est utilisée pour exécuter une commande triviale (true) qui ne produit pas de sortie. Si la commande s'exécute correctement, cela signifie que le mot de passe entré est correct. Les erreurs sont redirigées vers /dev/null afin de ne pas polluer la sortie avec des messages d'erreur inutiles.
5. Gestion du Code de Retour
La vérification du code de retour avec if [ $? -eq 0 ] détermine si le mot de passe testé a permis à la commande de s'exécuter avec succès. Cela permet d'identifier efficacement le mot de passe valide.
6. Sortie Appropriée du Script
Une fois le mot de passe trouvé, le script affiche le résultat et se termine avec un code de sortie 0, indiquant un succès. Si aucun mot de passe ne correspond, le script termine avec un message adapté et un code d'erreur 1.
Tableau Comparatif : Ancien vs. Nouveau Script
| Critère | Script Original | Script Corrigé |
|---|---|---|
| Sécurité | Utilisation non sécurisée de su et exposition du mot de passe en clair |
Redirection sécurisée des erreurs, vérification du fichier de wordlist et utilisation correcte du pipe |
| Lecture de la Wordlist | Utilise une substitution de commande, qui peut échouer sur des mots avec espaces | Utilisation de while IFS= read -r pour une lecture ligne par ligne sécurisée |
| Gestion des Erreurs | Aucune vérification d'existence du fichier ni gestion des erreurs | Vérification préalable de la wordlist et gestion des codes de retour |
| Utilisation | Script simple, susceptible de verrouiller le compte | Script didactique optimisé pour des tests dans un environnement contrôlé |
Considérations de Sécurité et Bonnes Pratiques
Il est essentiel de se rappeler que tout test de cette nature doit être réalisé de manière éthique et légale. Avant d'exécuter des scripts de cracking :
- Assurez-vous d'avoir obtenu une autorisation explicite sur le système testé.
- Évitez d'utiliser ce script sur des systèmes de production ou sur des comptes autres que ceux que vous possédez ou gérez.
- Considérez l'utilisation d'outils spécialisés comme John the Ripper ou Hydra, qui offrent des performances supérieures et des fonctionnalités adaptées.
Pour confirmer le mot de passe de manière plus robuste, des outils professionnels proposent la gestion des hachages (issus du fichier /etc/shadow) et disposent de nombreux modes de fonctionnement. Par exemple, voici comment utiliser John the Ripper pour une approche plus puissante et sécurisée :
# Extraire les hachages dans un format compatible
sudo unshadow /etc/passwd /etc/shadow > unshadowed.txt
# Lancer l'attaque par dictionnaire à l'aide de John the Ripper
john --wordlist=/path/to/wordlist.txt --rules unshadowed.txt
Cette approche utilise John the Ripper pour traiter les mots de passe en fonction des hachages et applique des règles qui augmentent les chances de réussite, tout en respectant la sécurité du système.
Étapes d'Utilisation du Script Corrigé
Préparation
Avant d'exécuter le script, vérifiez les points suivants :
- Avoir une copie de sauvegarde du système pour éviter tout risque de verrouillage de comptes critiques.
- S'assurer que le fichier de la wordlist est bien accessible à partir du chemin indiqué.
- Exécuter le script dans un environnement de test ou sur un système contrôlé.
Mise en place du script
-
Copier le script dans un fichier, par exemple
crack_password.sh. -
Rendre le script exécutable avec la commande
chmod +x crack_password.sh. -
Exécuter le script en tant qu'utilisateur avec les droits suffisants, souvent avec
sudosi nécessaire :sudo ./crack_password.sh
Test et Débogage
Il est conseillé de tester le script avec une wordlist contenant quelques mots de passe connus pour valider le fonctionnement avant de lancer le test complet. En cas d'erreur, vérifiez l'existence du fichier de mots, l'assignation de variables et l'usage des commandes.
Conclusion
Ce script de cracking de mot de passe corrigé offre une approche didactique pour tester les mots de passe sur des systèmes Linux dans un environnement contrôlé. En améliorant la lecture de la wordlist et en vérifiant fortement l'existence et la validité des fichiers et des commandes, le script devient plus robuste, sécurisé et fiable. Il intègre des techniques de gestion des erreurs et des vérifications appropriées pour minimiser les risques liés aux tentatives de connexion multiples.
Toutefois, il est important de rappeler que même si ce script peut servir dans un cadre pédagogique ou pour des tests d'intrusion autorisés, les méthodes de cracking de mot de passe doivent être utilisées avec prudence et uniquement dans des contextes légaux et éthiques. Pour des analyses approfondies, ou lorsque le traitement de hachages complexes est requis, l'utilisation d’outils spécialisés reste recommandée.
Références
- How to use the John the Ripper password cracker - TechTarget
- John the Ripper Tool - Kali Linux
- Password Cracking Tutorial - Computer System Security
- The Top 10 Password Cracking Techniques – and how to prevent them - Stytch
Requêtes Recommandées pour Approfondir
Last updated February 26, 2025