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

Documents pareils