Rainbow Tables

Par Firemax le 06-09-2005



Présentation et utilisation des rainbow tables dans le cadre de la remontée de hashs MD5, LM, SHA1 ...



Sommaire :
I. Introduction
I. 1. Générer les tables
I. 2. "Trier" les tables
I. 3. L'exploitation de rcrack (chercher les pass)


I. Introduction:


Rainbow crack est un logiciel s'executant en invite de commande assez rebutant au début mais super efficace. Ce logiciel vous permet de générer des tables de hash de plusieurs centaine de Mo (dans mon cas) et ensuite de retrouver le texte clair de votre hash en le comparant avec ceux inscrits dans la table. Quand ont utilise le logiciel pour la première fois cela est très long à mettre en place alors ne vous inquiétez pas si vous mettez du temps à lancer vos premiers crackage de hash ;).

Lien : http://www.antsight.com/zsl/rainbowcrack/

Par défaut vous avez pas mal de charset mais il vous est possible d'en rajouter dans le fichier texte charset.txt

contenu du fichier :

code_header Code:
spacer # charset configuration file for rainbowcrack 1.1 and later
# by Zhu Shuanglei

alpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]

alpha-numeric-symbol14 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=]
all = ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]

numeric = [0123456789]
loweralpha = [abcdefghijklmnopqrstuvwxyz]

loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789]



I. 1. Générer des tables :


Il faut avant d'utiliser le logiciel générer des tables de hash pour cela nous allons nous placer par le biais de l'invite de commande dans le répertoire ou vous avez placé les fichiers du soft (je pense que tout le monde connais executer > cmd et la commande cd ;))

Pour l'exemple nous allons générer des tables de hash pour le charset numérique (vous seriez étonné du nombre de personne utilisant une date de naissance ;)) Nous allons donc taper ou coller pour les paresseux ;) ces lignes dans notre invite de commande .

code_header Code:
spacer rtgen md5 numeric 1 8 0 2100 8000000 all
rtgen md5 numeric 1 8 1 2100 8000000 all
rtgen md5 numeric 1 8 2 2100 8000000 all
rtgen md5 numeric 1 8 3 2100 8000000 all
rtgen md5 numeric 1 8 4 2100 8000000 all

Voilà mais seulement faudrait t'il comprendre les argument de cette ligne , je vais donc les expliquer (dans l'ordre) :

rtgen (un des programe de rcrack qui permet de generer les tables)
md5 (le type de hash a generer (rcrack suporte pour l'instant [lm, md5, sha1]))
numeric (le charset utiliser)
les deux chiffres suivant representent le nombre caractere du texte en clair (dans notre exemple c'est des hash de mot de passe de 1 à 8 caracteres)
0 , 1 , 2 ... c'est le numero de fichier car rcrack crée un fichier pour chaque tables generee (logiques)
2100 (Longueur des chaines "Rainbow. Je sais pas ce que c'est, mais ca joue dans le temps et les chances de cracking ... plus elle est longue, plus le temps de génération est long et les chances de crack augmentent ( ainsi que la taille ).)
8000000 le nombre de hash a generer et a placer dans la tables
all ben ca veut dire all ;)

Cela va prendre pas mal de temps pour générer les tables :(


I. 2. "Trier" les tables


code_header Code:
spacer rtsort md5_numeric#1-7_0_2100x8000000_all.rt
rtsort md5_numeric#1-7_1_2100x8000000_all.rt
rtsort md5_numeric#1-7_2_2100x8000000_all.rt
rtsort md5_numeric#1-7_3_2100x8000000_all.rt
rtsort md5_numeric#1-7_4_2100x8000000_all.rt

rtsort ben c'est aussi un des sous programes de rcrack il permet de trier les tables genérées au préalable
md5_numeric#1-7_0_2100x8000000_all.rt pour ceux qui ne l'aurais pas compris est la tables

Après avoir fait cette étape (pour toutes les tables que vous avez générées) vous pouvez passer à l'étape suivante.


I. 3. L'exploitation de rcrack (chercher les pass)

code_header Code:
spacer
rcrack.exe *.rt -l random_md5_numeric#1-7.hash

rcrack.exe je vais pas l'expliquer je pense que vous avez tous compris ce que c'est ^^
*.rt designe toutes les tables que vous avez genérées et triées

-l argument de rcrack (plus d'info en tapant rcrack help ;))

t, rainbow chain length
m, rainbow chain count
l, rainbow table count


random_md5_numeric#1-7.hash fichier où sont mis les hash que vous avez à cracker cela peut aussi être un .txt et s'appeller comme vous le souhaitez bien entendu ;)

Si vous avez bien fait toutes ces étapes vous aurez peut-être de la chance et le hash sera dans vos tables ;) et vous obtiendrez ceci :

code_header Code:
spacer searching for 1 hash...
plaintext of f2cd7d3cd57c9769a3336b4aa3c57dcb is *****
cryptanalysis time: 1.44 s


statistics
-------------------------------------------------------
plaintext found: 1 of 1 (100.00%)
total disk access time: 6.75 s
total cryptanalysis time: 1.44 s
total chain walk step: 450775

total false alarm: 452
total chain walk step due to false alarm: 660442


result
-------------------------------------------------------
f2cd7d3cd57c9769a3336b4aa3c57dcb ***** hex:***********

PS: c'est censuré car c'est le résultat d'un challenge ;)

Ceci sont les bases de l'utilisation de rcrack mais après avoir exploré ses capacités vous ne pourrez plus vous en passer ;)

Firemax, pour Futurezone