dimanche 26 juin 2011

John the ripper et markov pour vraiment casser du hash

Après mon article sur john the ripper opencl, j'ai regardé ce qu'offrait de nouveau le patch jumbo dans les dernières versions, et j'ai eu des bonnes surprises. John the ripper peut s'utiliser simplement sur du pdf de l'archive rar et ssh via pdf2john rar2john et ssh2john.

Mais il y a mieux, pour ceux qui utilisaient incremental mode, il y a maintenant markov.
Incremental est géré par un fichier de configuration et suivant la configuration il va effectuer des mutations sur une liste de mots (par défaut password.lst), ex: dans password.lst j'ai root avec incremental je peux tester à la volé des choses comme 1root root1 root! ...

Markov est un pure outil de probabilités et se base sur une liste de mots de passes déjà récupérés, à partir de la il va effectuer des mutations en fonction des résultats trouvés.

Alors j'ai testé le truc sur une liste de MD5 non crackés disponible sur le web.

J'ai commencé par parser la liste pour récupérer que les MD5 raw (il y avait aussi des MD5 unix), j'arrive à 1610 hash.

Ducoup le plus simple est de commencer par une wordlist de qualité (pas le dico fr et autre, une grosse liste de vrai passwords) (j'utilise notamment rockyou, les crackers de passwords connaissent bien cette liste)

Résultat en deux secondes j'arrive à 333 hash découverts.
guesses: 333  time: 0:00:00:02 DONE

Markov utilise le fichier "stats" alors on peut le générer au préalable avec sa wordlist (bonne wordlist je rappelle, avec doublon < important) ou lancer directement john avec l'option markov, c'est ce que j'ai fait.

Ducoup markov va se baser sur les 333 passwords découverts et générer son fichier stat, ensuite il va utiliser les probabilités pour générer des mots (caractères les plus utilisés etc).

tiré de la doc:

"--markov:LEVEL:START:END:LENGTH

Where:
* LEVEL is the "Markov level". This value is the maximum strength of passwords
that are going to be cracked. When LEVEL increases, the quantity of passwords
that are going to be tested increases exponentially."

(le level max est de 295 il me semble)

Première session:


./john -markov:240:0:0:12 --format=raw-md5 tester
guesses: 188  time: 0:00:22:47 DONE

188 passwords supplémentaires en 22 minutes

2eme:


./john -markov:247:0:0:12 --format=raw-md5 tester
guesses: 25  time: 0:00:46:39 DONE

25 en plus en 46 minutes.

Notez que j'augmente la difficulté donc le temps augmente, de plus markov ne se base plus sur 333 passwords puisqu'il y en a 188 supplémentaires.


./john -markov:260:0:0:10 --format=raw-md5 tester
guesses: 39  time: 0:02:36:09 DONE

39 en plus en 2 heures 36, ici j'ai baissé le max lenght de 12 à 10 caractères pour limiter la monté en difficulté.

./john -markov:270:0:0:9 --format=raw-md5 tester
guesses: 23  time: 0:03:51:32 94.34%

à 270 j'ai ctrl+c au bout de 3H51 ( 94.34%  ) dodo... et 23 passwords en bonus.

Bilan:
sur 1610, j'ai récupéré 610 passwords, dont 333 en deux secondes et le reste en ~8 heures ce qui montre bien l’efficacité redoutable de markov.

Alors évidemment c'était juste pour tester, une rainbow table aurait été beaucoup plus efficace, vu qu'ici il n'y a pas de sel.

####
Pour les wordlist si vous êtes intéressé par le cracking, j'ai déposé une archive sur filesonic avec ni plus ni moins que les meilleurs wordlists dispo (entre autre rockyou) avec aussi celle de chez hotmail myspace phpbb etc, j'ai ajouté une de chez lulzsec que j'ai parsé (extraction des pass uniquement).
Le dossier contient 9 wordlists (véritable passwords avec doublons) idéal pour les proba. ( + les 9 en une sans les doublons).

http://www.filesonic.com/file/1311500691

(par contre je garantis pas la validité du lien x temps, donc si vous téléchargez gardez les précieusement)

Pour markov il est dispo chez openwall (john the ripper version jumbo)
Un problème? Venez en parler sur le forum, tout a une solution :D

8 commentaires:

Titoo a dit…

Bien vu..
Cela me rappele la bonne epoque ou j'utilisais le bon viex VBA et Excel pour mes permutations :)

Bon question debile: Pourquoi mettre des doublons dans les wordlists, c'est quoi l'interet ?

* a dit…

les probabilités, si t'as un fichier avec
345 fois password et une fois qzqzqz
le p sera inclut dans beaucoup plus de mutations que le q vu que le p est beaucoup plus courant dans un pass que le q, voila l'idée global sans parler de longueur de pass positionnement des caractères etc

cert-lexsi a dit…

Rainbow tables probabilistes (avec du vrai markov dedans) :
http://www.lexsi.com/francais/cracknfast/

Cert-Lexsi

* a dit…

j'ai téléchargé, cela dit il compile pas directement chez moi avec mon laptop.

make: nvcc: Command not found
make: *** [all] Error 127

Donc en gros ça tourne que avec nvidia CUDA.

Je testerais sur une autre machine mais c'est quand même dommage de pas l'avoir fait en opencl, surtout que nvidia c'est limite dix fois plus lent qu'une ati.

bref à tester!

Ricko a dit…

Salut,

Le lien filesonic est mort, c'est dommage d'autant que ca fait que 2 mois que l'article est en ligne...

Est-ce possible de le re-up ?

* a dit…

oui, je ferais ça dans la soirée

Anonyme a dit…

Dasn le même genre : http://hashcat.net/oclhashcat-plus/

Anonyme a dit…

salut et merci pour cet article. Peux tu réupper le fichier stp ?

 
LinuxStore