JohnTheRipper

  Ethical Hacking, Tools

john the ripper est un outil de cassage de mots de passe. C’est un logiciel opensource (licence GPL V.2) connaissant de base plusieurs algorithmes de hachages (MD4, MD5, SHA256, Blowfish, NTLM etc). Il est de plus extensible par des plugins.

Installation

cd /opt/
sudo git clone https://github.com/magnumripper/JohnTheRipper.git
sudo mv JohnTheRipper/ john
cd /john/src
sudo apt install libssl-dev
sudo ./configure && sudo make -s clean && sudo make -sj4

Test

cd ../run/ && ./john --test=0

Utilisation

John permet de fonctionner dans 3 modes différents : single, par dictionnaire et incrémentale

Single : dans ce mode, john utilise le hash du login et éventuellement des variantes de celui-ci.

Dictionnaire : john essaye un à un les mos de passes d’une liste établie

Incrémentale : aussi appelé Bruteforce, dans ce mode, john essaye un ensemble de combinaisons composé d’une suite de caractères donnés.

Utilisation avancée de john

Nous avons vu ici trois utilisations de john the ripper, mais grâce à son fichier de configuration situé dans le répertoire /etc/john/john.conf. En plus des paramètres de bases du logiciel, il est possible de définit des règles plus fine pour la recherche.

Ces règle sont définie dans des sections commençant par

[List.Rules.<name>]

<name> est la nom donné à notre liste. Suive ensuite un ensemble de règle étendant les recherche de bases.

Premier exemple : étendre notre dictionnaire

Il est courant qu’un utilisateur choisisse un mot courant, puis ajoute son année de naissance puis un caractère spécial à la fin, composant ainsi un mot de passe correspondant à la politique de sécurité de son organisation.

Nous allons donc étendre notre liste de mots en prenant en compte ceci. Parton du principe que les personnes de l’organisation on moins de 40 ans, voici la règle créée :

[List.Rules:MaListe]
$1$9$[7-9]$[0-9]$[.,;:@-_!#]

Le caractère $ remplace un caractère et [] est là pour définir une plage de caractères.

Pour l’appliquer modifions notre dernière commande john comme ceci :

john -format=raw_MD5 -wordlist=top500movies.txt -rules=MaListe logins.txt
Using default input encoding: UTF-8
Loaded 8 password hashes with no different salts (Raw-MD5 [MD5 256/256 AVX2 8x3])
Remaining 4 password hashes with no different salts
Press 'q' or Ctrl-C to abort, almost any other key for status
Pulp Fiction1989! (IndianaFord)
Use the --show --format=Raw-MD5 options to display all of the cracked passwords reliably
Session completed

Second exemple : modifier la recherche

Prenons le cas d’un utilisateur qui aurait changé les voyelles d’un mot par des chiffres pour en faire un mot de passe. Il est possible via des règles de tester ce cas de figure.

[List.Rules:Voyelles]
s?v[0-9]
  • s : remplacer
  • ?v : rechercher la classe v : les voyelles
  • [0-9] : remplacer par la classe d : un chiffre

Nous pouvons maintenant lancer la recherche avec la commande

john -wordlist=top500movies.txt -rules=Voyelles logins.txt

Cassage MD5

Je mets le hash dans un fichier texte (ex : ~/Bureau/foo)

sudo ./john --format=raw-MD5 ~/Bureau/foo

Tools Associés

https://github.com/SmeegeSec/HashTag
https://hashcat.net/hashcat/