Ask me anything
Ithy Logo
Sign in to save

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

linux terminal command security

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 echo pour 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 su n'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 sudo si 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


Requêtes Recommandées pour Approfondir


Last updated February 26, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI