Outils pour utilisateurs

Outils du site


tutoriels:jtr

JOHN THE RIPPER : Cracker de passwords

  • John The Ripper a la réputation d’être le perceur de mot de passe le plus souple d’utilisation pour l’audit des mots de passe.

Crack password

Ce post est réalisé pour les administrateurs système qui souhaiterait tester la solidité des mots de passe des utilisateurs avant que les pirates ne le fassent. John peut être configuré pour auditer les mots de passe par le biais d'une tâche cron.

Installation de John the Ripper 1.7.6 sur Debian (x64)

JTR by Jack

  • Récupération de la dernière version :

wget http://www.openwall.com/john/g/john-1.7.6.tar.gz
tar xvzf john-1.7.6.tar.gz
cd john-1.7.6

  • Installation du package :

cat README
cat doc/INSTALL
cd src
make
make clean linux-x86-64

Votre installation terminée, vous devez visualiser les éxecutables :

ll ../run
John Ripper Installation

  • Tester l'éxecutable principal 'JOHN' :

cd ../run
./john --test
John Ripper Test

Les modes de fonctionnement de John the Ripper

JtR

Mode 1: single (simple)

  • John utilise les informations login/GECOS des utilisateurs (nom, prenom, login, etc.) en y appliquant les règles de transformations définies dans le fichier john.conf. Il s’agit du mode le plus rapide, il ne dure en général que quelques secondes. Les mots de passe trouvés sont essayés sur toute la liste au cas où deux utilisateurs aient le même mot de passe.

Mode 2 : wordlist (dictionnaire)

  • Les dictionnaires sont des fichiers texte, contenant un mot (ou expression) par ligne. Il en existe pour toutes les langues et tous les domaines d’activité. Les utilisateurs GNU/Linux ont en général deux dictionnaires sur leur système (/usr/share/dict), un en anglais et un dans la langue locale. Les performances sont légèrement améliorées lorsque le fichier est trié par ordre alphabétique.

Mode 3 : incremental (incrémental brut)

  • Le mode incrémental essaie toutes les combinaisons de caractères dans une plage donnée (e.g. jusqu’à 8 caractères), à partir d’un jeu de caractères définis (e.g. seulement les lettres minuscules). Ce mode est très long ; il n’est jamais mené à son terme (que l’on peut estimer en fonction des plages données à plusieurs dizaines d’années). Afin d’en améliorer un peu l’efficacité, John base ses essais sur des tables de fréquence d’utilisation des caractères. Le mode incrémental est activé avec l’option -i (ou –incremental)

Utilisation de JtR

Utilisation basique du programme

  • Copier les hash du /etc/shadow pour les comptes à tester (ici user 'test'):

./unshadow /etc/passwd /etc/shadow > mypasswd
./john mypasswd

Savoir où en est le cracker?

  • Appuyer sur la touche espace pour savoir où l'opération est rendue

Exemple:

JtR work

  • Appuyer sur [Ctrl+z] pour mettre John en pause
  • Reprendre le job de John :

jobs
fg 1

Ajouter un dictionnaire Français

Dictionnaire

  • Par défaut, le dictionnaire sur lequel est basé John est le fichier password.lst qui contient 3169 mots.
  • Mise en place d'un dictionnaire français :

aptitude install wfrench
cat /etc/dictionaries-common/words

  • Et bien plus fourni :

cat /etc/dictionaries-common/words | wc -l
139717

  • Configurer John pour utiliser notre dico french :

vi john.conf
# Wordlist file name, to be used in batch mode
Wordlist = $JOHN/french.utf8.lst

  • Test en fonction du dico :

Jtr test OK

Pour aller plus loin

  • Liens pour obtenir des Wordlist :

http://r00tsecurity.org/forums/topic/1445-wordlist-thread-keep-adding/

  • Un dico plus ample est disponible :

wget http://contest.korelogic.com/wordlists/Feb-10-2011/final-fr-wikipedia.dic.gz

  • Les règles sont paramétrables :

La documentation du projet

  • Exemple de règles supplémentaires :

#MORE RULES FROM OPENWALL.COM

[List.Rules:KoreLogicRulesJust4Num]
$[0123456789]$[0123456789]$[0123456789]$[0123456789]

[List.Rules:KoreLogicRulesPrependNumNumSpecial]
ci[0][0123456789]i[1][0123456789]i[2][!@...
ci[0][0123456789]i[1][0123456789]i[2][%^&*()_+\-={}|\[\]\\;':",./\<\>?`~]

[List.Rules:KoreLogicRulesPrependSpecialSpecial]
# prepend !@#$ characters
i0[!@...
# Capitalize the first letter of the wordlist, THEN prepend !@#$
ci0[!@...
# prepend !@#$ and then ANOTHER set of !@#$ characters (total = 2)
i0[!@...i1[!@...
# Capitalize the first letter of the wordlist, THEN prepend !@#$ (total = 2)
ci0[!@...i1[!@...

[List.Rules:KoreLogicRulesPrependSpecialAppendNumbersNumber]
i0[!$@...&*?.+\-_=`~()|]$[!$@...&*?.+\-_=`~()|]$[0123456789]$[0123456789]

[List.Rules:KoreLogicRulesAppendNumbersNumbersSpecialSpecial]
$[0123456789]$[0123456789]$[$]$[$]
c$[0123456789]$[0123456789]$[$]$[$]
$[0123456789]$[0123456789]$[!]$[!]
c$[0123456789]$[0123456789]$[!]$[!]
$[0123456789]$[0123456789]$[@...@]
c$[0123456789]$[0123456789]$[@...@]
$[0123456789]$[0123456789]$[#]$[#]
c$[0123456789]$[0123456789]$[#]$[#]
$[0123456789]$[0123456789]$[%]$[%]
c$[0123456789]$[0123456789]$[%]$[%]
$[0123456789]$[0123456789]$[*]$[*]
c$[0123456789]$[0123456789]$[*]$[*]
$[0123456789]$[0123456789]$[?]$[?]
c$[0123456789]$[0123456789]$[?]$[?]

  • Il est possible de configurer un tâche cron pour checker régulièrement la complexité des passwords utilisateurs.
  • John peut envoyer un mail pour notifier le user dont le password a été cracké !

Script d'installation Version Contrib Full

#!/bin/bash

echo "Installation de JTR dans /opt/jtr/"
cd /opt
echo "Récupération de l'archive de JTR contrib version"
wget http://download.openwall.net/pub/projects/john/contrib/linux/john-1.7.9-jumbo-5-Linux-x86-64.tar.gz
echo "Extraction silencieuse"
tar xzf john-1.7.9-jumbo-5-Linux-x86-64.tar.gz
mv john-1.7.9-jumbo-5-Linux-x86-64 jtr
cd jtr/run
./john --test
echo "John the Ripper Ready for action!"

  • Résultat pour les options de l'outil:

JTR full options

Auditer les passwords d'une base de données Drupal (MD5)

  • Syntaxe du fichier à tester :

user:md5

  • Commande avec les options appropriées:

./john --format=raw-MD5 drupal_md5.txt

Auditer les passwords d'une base de données Joomla (MD5+SALT)

  • Syntaxe du fichier à tester :

user:md5_gen(1)MD5$SALT

  • Commande avec les options adéquates:

./john --format=MD5-gen --subformat="md5_gen(1)" joomla_md5.txt

Auditer les passwords d'une base SAM Windows (DES/MD4)

Tester à partir d'une base SAM locale extraite sur un Windows Server 2003. :!:

Récupérer la liste des comptes utilisateurs avec les passwords cryptés (SAM)

Grâce à fgdump nous allons pouvoir récupérer une copie des “hash” des passwords utilisateurs de tout un domaine.
Ouvrez une ligne de commande et naviguez vers le répertoire ou vous avez extrait fgdump.exe

  • Puis entrez la commande suivante:

fgdump.exe -h $SERVEUR_AD -u $ADMIN_DOMAINE -p $PASSWD
Les variables sont à adapter en fonction de votre configuration. Le logiciel nécessite d'avoir un compte admin local ou admin de domaine.

FGDUMP.EXE
Après quelques dizaines de secondes un fichier $SERVEUR_AD.pwdump est généré.
Il contient la liste des comptes utilisateurs de votre domaine ainsi que les mot de passe cryptés en MD5.

Récupérer le fichier et transférer le vers un linux où JTR sera installé ! 8-O

FGDUMP_resultat

Bref… la suite :

Déchiffrage NTLM avec John

  • Cette partie se réalise avec John the Ripper à récupérer ici.
  • Le challenge se réalise en 2 parties : la mise en évidence des hashes LM et le décryptage des hashes NTLM grâce au LM utilisés en mode dico.

Décryptage brute-force des hashes LM (cryptage DES)

  • Lancer John the ripper en spécifiant le format LM :

./john --format=LM /opt/base_SAM.txt

Le déchiffrage dépend de la complexité vous l'aurez compris… m(


Pour réaliser un véritable audit, il peut être intéressant de récupérer quelques infos comme les noms, prénoms, adresses, date de naissance… des utilisateurs. Ces infos seront à placer dans un dictionnaire et à tester en premier lieu.

Décryptage LM

Le problème des hashes LM est le fait qu'ils apparaissent tous en majuscules, hors la casse est prise en compte.

  • Visualiser les réussites de JTR comme ceci :

LM crackés

Décryptage en mode dictionnaire des hashes NTLM (cryptage MD4)

Modification du fichier de conf de john pour le décryptage NTLM:
  • Copier le fichier de conf :

cp john.conf john.conf.NTLM

  • Adapter les lignes suivantes dans le john.conf.NTLM :

  • Remplacer “List.Rules:Wordlist” par “List.Rules:Disabled” pour désactiver la règle normale.
  • Et remplacer “List.Rules:NT” par “List.Rules:Wordlist” pour activer notre attaque spécifique.

Création du dictionnaire depuis les hashes LM:

  • Récupérer les hashes LM entièrement décryptés dans un fichier pour le dico (ici le fichier lm_crack.txt):

./john --show --format=LM /opt/base_SAM.txt | cut -d: -f2 | grep ^[^?] > lm_crack.txt

Décryptage des hashes NTLM:

  • Lancer le décryptage NTLM depuis le dico avec le fichier de conf modifié :

./john --config=john.conf.NTLM -rules --wordlist=lm_crack.txt --format=NT /opt/base_SAM.txt

NTLM crackés
John the Ripper affiche enfin les Passwords !


Attention, toutes ces manipulations sont réalisées en vue d'audit de sécurité par un admin qui sait ce qu'il fait ! 8-O

  • Ne pas confondre SAM locale et SAM AD. Une base SAM AD ne contient pas d'empreinte LM donc seule une attaque brute force (longue voire très longue) arrivera à ces fins. Donc il est possible de tester une base SAM d'un Active Directory server 2008R2 par exemple. N'oubliez pas qu'un poste de travail conserve une copie des 10 dernières connexions utilisateurs de domaine.
tutoriels/jtr.txt · Dernière modification: 15/04/2016 à 21:15 (modification externe)

Outils de la page