TP2 - Mots de passe - Intranet | IUT de Troyes
Transcription
TP2 - Mots de passe - Intranet | IUT de Troyes
Mots de Passe M4204 - Introduction à John The Ripper Patrice Gommery - 21 mars 2016 Le but de ce TP est de vous faire tester John the Ripper, un logiciel libre de cassage de mots de passe par dictionnaire. Ce logiciel peut notamment être utilisé pour tester la sécurité d'un mot de passe dans le cas d'un audit de sécurité ou encore pour évaluer son niveau de sécurité lorsque l'utilisateur choisit son mot de passe. L'utilisation de ce type de logiciel doit se faire d'une manière responsable et éthique, dans le but exclusif de contrôler la sécurité de vos mots de passe. MOTS DE PASSE - JOHN THE RIPPER 1 INTRODUCTION John The Ripper est un logiciel libre de cassage de mot de passe, utilisé pour tester la sécurité des mots de passe d'un système. A l'origine développé pour les systèmes UNIX et Linux, il existe aujourd'hui des versions pour Windows. Il est disponible sur le http://www.openwall.com/john/ mais aussi sous forme de paquets pré-installés pour la plupart des distributions Linux. Il permet aussi bien de réaliser des attaques par force-brute, que des attaques par dictionnaire et reconnait la plupart des algorithmes utilisés pour le chiffrement. INSTALLATION Sous Debian, un paquet nommé john est disponible, il suffit de l'installer avec la commande apt-get CONFIGURATION Le fichier de configuration de John The Ripper se trouve dans le dossier /etc/john et se nomme simplement john.conf . Ce fichier décrit dans ces moindres détails la manière dont le programme doit effectuer le décryptage de mots de passe. Rassurez-vous ne ne modifierons pas ce fichier lors de ce tp, nous allons simplement utiliser les différentes options de la commande. FONCTIONNEMENT John The Ripper peut fonctionner selon 3 modes : • Le mode single qui est le mode par défaut. Il utilise les informations de login des utilisateurs (nom, prénom, login, commentaires etc ..) en y appliquant les règles de transformations définies dans le fichier john.conf. Il s'agit du mode le plus rapide, si on considère que les utilisateurs ont ré-utilisés des informations directement liées à leur login ou à leur patronyme. • Le mode dictionnaire (wordlist) . John utilise dans ce mode des fichiers texte , contenant un mot (ou une expression) par ligne. On trouve de nombreux fichiers de ce type sur Internet, regroupant des mots par centre d'intérêts, listant des lieux ou des personnages etc ... Sur votre serveur vous avez déjà des dictionnaires de ce type • pour la langue française : /usr/share/dict/french • pour l'anglais et l'américain : /usr/share/dict/american-english MOTS DE PASSE - JOHN THE RIPPER 2 • Le mode incrémental (force-brute). Dans ce mode John va essayer toutes les combinaisons de caractères dans une plage donnée et à partir d'un jeu de caractères définis. Ce mode est très long, surtout si le mot de passe est correctement construit. UTILISATION Pour voir les différentes options disponible : john man john (sans aucun arguments, liste des options) (Manuel complet avec les explications) Pour tester la vitesse du produit (benchmarking) en fonction des différents algorithmes de chiffrement utilisés : john --test Pour casser un mot de passe, il faut fournir à john un fichier contenant les mots de passe chiffrés (ou le couple utilisateur:motdepasse). Exemple john MonFichier Avec cette commande, john enchaine les 3 modes (single, wordlist et incrémental) pour essayer de casser les mots de passe contenu dans le fichier. Donc, vous l'avez compris, il faut déjà se procurer (ou construire) un fichier avec les empreintes des mots de passe. Nous allons choisir la seconde option. GENERATION DES MOTS DE PASSE Pour crypter nos mots de passe, nous allons utiliser la commande mkpasswd La syntaxe est la suivante : mkpasswd [OPTION] MotDePasse L'option la plus intéressante dans notre cas est le choix de la méthode de chiffrement (-m methode). Pour connaitre les méthodes possibles, tapez mkpasswd -m help Pour commencer, nous allons simplement tester en chiffrant le mot de passe PASSWORD en DES. mkpasswd -m des PASSWORD . Le résultat affiché est le mot de passe chiffré. REMARQUE : Si vous saisissez plusieurs fois la commande, vous constaterez que le résultat obtenu est différent à chaque fois Pourtant, nous chiffrons toujours le même mot de passe (PASSWORD). L'explication est simple, le système utilise un "sel" ou "alea" pour obtenir un résultat "aléatoire" à chaque appel de la fonction. Essayez avec : mkpasswd -m des -S 10 PASSWORD Le résultat sera : 10uLxLRqvALKg , l'option -S permet de forcer un "sel" constant. MOTS DE PASSE - JOHN THE RIPPER 3 Maintenant que nous savons générer rapidement des empreintes pour nos mots de passe, passons à la construction du fichier à fournir à john. Rien de compliqué, il suffit de rediriger le résultat de la commande mkpasswd dans un fichier. mkpasswd -m des -S 10 PASSWORD > passDES.txt Pour ajouter d'autres mots de passe dans le fichier, utilisez la double-redirection : mkpasswd -m des -S 10 123456 >> passDES.txt Le contenu de votre fichier passDES.txt doit ressembler à ceci : 10uLxLRqvALKg 10vrzSg43HfWI Pour associer les mots de passe à des utilisateurs, il suffit de rajouter leurs nom en début de ligne (en utilisant nano) : user1:10uLxLRqvALKg user2:10vrzSg43HfWI METHODE SIMPLE Dans ce mode John enchaine les modes single, wordlist et incremental Le fichier de mots se nomme : /usr/share/john/password.lst Il ne reste plus qu'à tester notre fichier avec john : john passDES.txt Le résultat est pratiquement immédiat, John n'a aucune difficulté à retrouver des mots de passe tel que PASSWORD et 123456 chiffrés avec DES. Essayez de voir si MD5 et SHA lui résiste plus longtemps. Pour cela créer trois nouveaux fichiers nommés respectivement passMD5.txt, pass256.txt et pass512.txt . Utilisez bien sur les mêmes mots de passe à chaque fois (PASSWORD et 123456) Le "sel" pour MD5 et SHA doit être d'au moins 8 caractères. Prenez par exemple : 12345678 Testez ensuite John sur ces nouveaux fichiers. Plus de résistance ? Pas vraiment, nos mots de passe ne sont effectivement pas très surs. Essayez d'autres mots plus résistants MOTS DE PASSE - JOHN THE RIPPER 4 REMARQUE : Si vous essayez un mot plus long avec DES, le système tronquera automatiquement le mot à 8 caractères. C'est une des limites du chiffrement DES pour les mots de passe (Rappelez-vous que DES est plutôt un algorithme de chiffrement symétrique, q'un mécanisme de hachage comme c'est le cas pour MD5 et SHA) John garde une trace des mots de passe qu'il a cassés dans un fichier nommé : .john/john.pot . Si vous ouvrez ce fichier vous devriez y voir les 8 mots de passe cassés précédemment 10uLxLRqvALKg:PASSWORD 10vrzSg43HfWI:123456 $1$12345678$a4ge4d5iJ5vwvbFS88TEN0:123456 $1$12345678$oTQ52R7XSKiHV1JFa4K121:PASSWORD $5$12345678$WMljQKVHvALBmbjlvfCmCbAQfg9c4FS8pzgJw8k0HR1:123456 $5$12345678$XXS0BaRBxTWrTC0MOspHbdd9ZWlGt48lsuli/bY0JnD:PASSWORD $6$12345678$DdoPtW5IjAQ0RwQ7869/SdKcmdnZEc9uX4aFEVxM/ ydRXg99kvIayDtc1EXsTYYKtPMEXiIcDrios7o5hKO0e.:123456 $6$12345678$z3keGN6ddpBCPy4QaOXhB6Q3u7WOggh5ZDNneqJlGgoS1wW0z8iZXlbpvFBIRDOfolA 1sjpmW7mLPs9M1nbRg.:PASSWORD Remarquez la différence entre les différentes méthode de création des empreintes : Pour DES : 11 caractères, précédés du sel utilisé Pour MD5 : Le préfixe $1, suivi du sel utilisé et enfin de l'empreinte Pour SHA-256 : Préfixe $5, le sel et l'empreinte Pour SHA-512 : Préfixe $6, le sel et l'empreinte Le préfixe permet donc d'identifier l'algorithme de chiffrement. UTILISATION DES DICTIONNAIRES Pour utiliser un dictionnaire, il faut indiquer à John ou se trouve le fichier texte contenant les mots connus. On utilise pour cela l'option --wordlist Exemple, pour utiliser le dictionnaire des mots français fourni avec Debian john --wordlist=/usr/share/dict/french FichierMotsDePasse Testez cette méthode en créant un nouveau fichier de mot de passe en MD5. Par Exemple, chiffrez le mot de passe : tomate mkpasswd -m md5 tomate > passwords.txt john --wordlist= /usr/share/dict/french passwords.txt MOTS DE PASSE - JOHN THE RIPPER 5 Encore une fois, facile pour John qui vous décrypte ce mot de passe en quelques secondes. Mot trop facile ? , essayez un mot de la langue française un peu plus long et chiffrez le en SHA-256 : anticonstitutionnellement Compliqué pour John ? Un tout petit plus long, mais un mot du dictionnaire quand même, donc trop simple. ATTAQUE PAR FORCE-BRUTE Vos mots de passe résistent aux deux premières méthodes, c'est déjà une bonne chose, mais résisteront-ils à une attaque de John en mode incrémental . Ce n'est véritablement qu'une question de temps, parfois de beaucoup de temps, mais c'est inévitable. D'ou l'importance d'un changement périodique de mot de passe. Dans ce mode John utilise des fichiers de caractères prédéfinis, mais tous ne sont pas installés par défaut. Pour la suite du TP, téléchargez le fichier john.chr.tar disponible dans le dossier mmis4/Exemples du serveur FTP et décompressez-le dans le dossier /usr/ share/john de votre serveur. (tar xvf john.chr.tar) Pour le mode force-brute , l'option à utiliser est : --incremental=[MODE] ou -i=MODE Exemple avec le mode Alpha (tous les caractères Alphabétique A-Z,a-z, soit 52 caractères) mkpasswd -m md5 couack > passwords.txt john -i=alpha passwords.txt Nous avons pris un mot court qui n'est pas dans le dictionnaire, combien de temps va mettre John pour retrouver le mot de passe ? Patientez un peu .... ASTUCE : Pendant la recherche, vous pouvez appuyer sur la barre d'espace pour voir ou en est John. Vous remarquerez que la suite des tentatives n'est pas du tout alphabétique, John utilise des données de statistiques et de probabilités pour effectuer ces tentatives. COMPLEMENT : Ce petit mémo sur l'utilisation de John The Ripper est bien sur loin de montrer toutes les possibilités de l'outil et de sa configuration. Pour en savoir plus : La documentation officielle : http://www.openwall.com/john/doc/ MOTS DE PASSE - JOHN THE RIPPER 6 CHALLENGE Même si nous n'avons pas vu toutes les subtilités de John, nous pouvons quand même l'exploiter pour percer à jour beaucoup de mots de passe. Pour finir ce TP, téléchargez le fichier passwords.txt disponible sur le serveur FTP de la salle (mmis4/Exemples) et utilisez John pour connaitre les mots de passe des différents utilisateurs. Pour des questions de durée de l'exercice, tous les mots de passe sont chiffrés en MD5 et ne font pas plus de 8 caractères. Vous pouvez simplement essayez le mode par défaut, mais il serait plus raisonnable d'essayer d'utiliser les options vues pendant le cours pour optimiser la recherche de certains mots de passe. ASTUCE : Ouvrez le fichier passwords.txt, observez le nom des utilisateurs et réfléchissez !! MOTS DE PASSE - JOHN THE RIPPER 7