Après avoir fait parlé de lui début 2009 vis à vis des certificats SSL, la fonction de hashage Message Digest 5 - plus connue sous l'acronyme MD5 - reste aujourd'hui largement utilisée (chez Microsoft notamment). Cette méthode permet d'obtenir l'empreinte MD5 d'une suite de caractères ou plus généralement de fichiers (on parle alors de somme de contrôle ou checksum).
Il est impossible de retrouver la chaine originale à partie du hash mais il est possible de hasher une chaine et de comparer l'empreinte MD5 avec celle d'un mot de passe inconnu. S'ils sont identiques, c'est que nous avons "décodé" la chaine MD5. C'est le principe des Rainbow Table (tables d'arc-en-ciels pour les puristes) : retrouver un mot de passe à partir de son empreinte.
Construire l'empreinte de toutes les combinaisons de lettres, chiffres et caractères spéciaux est impossible car infini. En revanche, il est tout à fait possible de stocker un maximum d'empreintes dans le but de retrouver les mots de passes relativement simples mais parfois très utilisés. On trouve sur le web quelques poignées de sites proposant chacun une base d'empreinte plus ou moins complète. Il faut dire que stocker ces empreintes consomme de l'espace disque, on dépasse assez facilement le téra octet...
Le site Hashkiller (inscription gratuite, obligatoire) permet de retrouver un mot de passe à partir de son empreinte MD5 en interrogeant plus de 40 bases du web ! de la même façon que pourrait le faire un meta-moteur de recherche. Mais il possède également sa propre base OpenCrack qui est loin d'être inintéressante comme le prouve cette capture :
Vous n'avez plus à faire le tour de vos 20 sites de crack MD5 pour tenter de retrouver un mot de passe à partir de l'empreinte. Le gain de temps est non négligeable et vous permettra de savoir si votre mot de passe est retrouvable à partir de l'empreinte. Si oui, il est fortement conseillé d'en changer et d'ajouter des caractères (spéciaux).
Vous pouvez tout à fait créer votre propre base d'empreintes si vous avez une machine ayant assez d'espace disque et surtout de mémoire vive pour permettre une recherche dans cette immensité (MySQL est déconseillé car trop lent pour travailler avec de tels enregistrements), voir le projet RainbowCrack par exemple qui utilise la puissance de calcul GPU (processeur graphique), OnlineHashCrack (LM & NTLM Reverse Hash via Rainbow Tables) ou encore le projet Free Rainbow Tables (calcul collaboratif).
Lien complémentaire : PolarSSL (librairie open source).
Attention : Je vous rappelle qu'il est strictement interdit d'utiliser ces méthodes à des fins de piratage, de vol d'information ou d'identité. Dans le cas contraire - et suivant votre pays - ces actions peuvent être lourdement sanctionnées par la justice. Ces méthodes vous sont ici présentées à des fins éducatives et d'apprentissage, vous ne devez tester ces méthodes que sur vos propres mots de passe.
Hashkiller
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
12 commentaires
merci pour l'article
pour tester hashkiller sans inscription, rien de vaut les comptes déjà créés de bugmenot:
username: aSd123456
password: buga44
d'autres pass: http://www.bugmenot.com/view/hashkiller.com
Il est aussi recommandé d'ajouter un grain de sel au mot de passe avant de le hacher, comme ça on peut remédier aux attaques dictionnaires(à confirmer) 😀
A) Techniquement, l'ensemble des combinaisons de caractères pour un mot de passe donné n'est pas infini. Il ne l'est que si l'on ne peut majorer la taille du mot de passe, ce qui est rarissime (la plupart des systèmes ont une taille maximale, et au pire il suffit de tabler sur un nombre déraisonnablement grand pour avoir un ensemble monstrueusement gigantesque, mais néanmoins fini).
B) On traduit généralement "rainbow table" par "Table Arc-en-ciel", du fait de la couleur (virtuelle) de la table (chaque colonne pouvant être visualisée par une couleur distincte).
C) Le principe des tables arc-en-ciel n'a que peu à voir avec une "base de mots de passe pré-cassés". C'est au contraire une technique astucieuse pour balayer rapidement l'espace des mots de passe potentiels sans tout recalculer NI tout stocker.
@jjjn : je vois que tu utilises aussi BugMeNot, voilà qui fait plaisir 🙂
@Olivier M: si le nombre de hash est infini c'est parce que le mot de passe peut l'être (en théorie, en pratique il est limité). Il est vrai que je n'ai pas expliqué l'origine des tables Arc-en-ciel mais ce billet n'est qu'une approche du sujet, relativement long à aborder en globalité. Ceci étant dit, je te remercie des précisions apportées.
Je vais tenter de reformuler mon texte concernant les tables arc-en-ciel pour ne pas qu'on les confonde avec les bases de passes.
@Ucef : le grain de sel permet effectivement de brouiller les pistes puisqu'il ajoute un ou plusieurs caractères à la chaîne originale, ce qui change complètement le hash (souvent utilisé sur les forums, SMF notamment).
@Xhark: en fait, non. Le mot de passe ne peut pas être infini. Pas même en théorie. Si le mot de passe est infini, le temps de le saisir serait infini, le calcul de son MD5 serait infini, la vérification du mot de passe serait infini. Bref, rien ne serait possible. En revanche, il peut être arbitrairement grand. Mais même malgré cela, il est - me semble-t-il - toujours possible de le majorer : en prenant la taille du plus grand mot de passe pouvant être stocké dans la mémoire d'un ordinateur haut de gamme, tu es certain de pouvoir tester toutes les valeurs dans un temps fini. Hors d'atteinte, on est bien d'accord là-dessus, mais tout à fait fini.
L'infini est une notion à manipuler avec beaucoup de précautions, on peut tomber sur un matheux tatillon. Ce n'est pas parce que nous autres "computer guys" ne faisons pas forcément de différence pratique entre "algorithme qui ne termine pas" et "algorithme qui terminera dans 4000 ans" qu'il n'y a pas un monde entre les deux.
@Olivier M : tu as parfaitement raison de dire que c'est un abus de langage (ou une imprécision). Néanmoins tu auras compris que sur le fond nos pensées se rejoignent et que mon "langage" se veut accessible pour le plus grand nombre 🙂
En théorie, le nombre de combinaisons est infinie. Sauf que le hash MD5, par définition, donne une longueur finie, toujours la même. Ce qui fait que même si en théorie, le nombre de mot de passe est lui, infini, le nombre de hash est lui, fini. Et il est tout à fait possible, mais fortement improbable, de tomber sur deux mots de passes qui au final donne le même hash, et qui, en fonction du système d'authentification, sont alors interchangeables.
Pour ce qui est de la complexité des mots de passes, plutôt que de continuer sur des suite de caractères ésotériques, rien ne vaut la passphrase, bien plus simple à mémoriser, et bien plus sécurisée face aux attaques de force brute quand elle atteint une longueur conséquente. Encore faut il que les sites le permettent...
Le meme pour le SHA1 aussi http://www.dcode.fr/?outil=hachage-md5-sha1
Pour compléter la discussion démarrée dans le fil de commentaires, la phrase "Construire l’empreinte de toutes les combinaisons de lettres, chiffres et caractères spéciaux est impossible car infini" est très ambiguë. Sans revenir sur la discussion précédente, je me permets d'ajouter que l'espace des hachés MD5 est lui clairement fini, le MD5 produisant des hachés de 128 bits. Il n'y a donc, en tout et pour tout, "que" 2^(128) possibilités.
De plus, les sites qui utilisent les tables citées renvoient un mot de passe qui possède 'le même haché' que celui encodé par l'utilisateur sur la page (pour l'explication complète, il faut regarder de plus près le fonctionnement des tables arc-en-ciel, mais ce n'est pas l'endroit). Ce mdp renvoyé n'est pas forcément LE mot de passe recherché au départ, mais UN mot de passe qui, une fois passé à la moulinette MD5, produit le même haché.
EDIT : Grilled par Gameplayer 😉
L'intérêt du système est le coté évolutif.
Dans le même genre, pour décrypter les MD5 jetez un œil ici :
http://www.parse-error.com/decryptage-md5
Le principe c’est vous êtes prévenus par email quand votre mot de passe MD5 a été décrypté.
Also this one is updated daily i think
http://www.net-tools.eu/lang/en/calculators/md5-decrypter
je préfère
http://decrypt.fr c'est instantané et totalement gratuit