Toutes les techniques de piratage MD5

Par thème:


Все методы взлома MD5

Il est pas un secret que la cryptographie est fermement établie dans nos vies. services Internet, les réseaux sociaux, les appareils mobiles - qui sont tous stockés dans leurs bases de données de mots de passe cryptés avec différents algorithmes.

L'algorithme le plus populaire encore aujourd'hui, bien sûr, est MD5.

A propos de la façon dont il peut se casser et sera discuté.

Un peu sur la cryptographie

La cryptographie moderne se compose de trois zones: une clé de chiffrement privée, chiffrement à clé publique et hachage. Aujourd'hui, nous allons parler de ce qui est le hachage et ce qu'il mange.

En général, une transformée de réaliser le hachage des données arbitraires d'entrée de longueur dans la chaîne de longueur fixe de bits de sortie. Les fonctions de hachage les plus courantes sont utilisées dans le processus d'authentification d'un utilisateur (le hachage de mot de passe de la base est normalement stockée au lieu du mot de passe), et pour calculer la somme de contrôle du fichier, des paquets de données, et ainsi de suite. N.

Un de l'algorithme de hachage le plus connu et largement utilisé est MD5.

début

L'algorithme MD5 est un algorithme de hachage à 128 bits. Cela signifie qu'il calcule un hachage de 128 bits pour un ensemble arbitraire de données reçues à son entrée. L'algorithme développé par Ronald Rivest, professeur de l'Institut de technologie du Massachusetts en 1991 pour remplacer prédécesseur moins fiable - MD4. L'algorithme a été d'abord publié en Avril 1992 RFC 1321. Après que MD5 a été utilisé pour résoudre une variété de problèmes, du mot de passe de hachage dans le CMS pour créer une signature numérique, et les certificats SSL.

Le fait que l'algorithme MD5 peut être craqué, d'abord mentionné en 1993. Les chercheurs Bert den Boer et Anton Bossilaris ont montré que l'algorithme peut psevdokollizii. Trois ans plus tard, en 1996, Hans Dobbertin a publié un article dans lequel il a prouvé l'existence de conflits et décrit la théorie possibilité MD5 hack. Ce ne fut pas la rupture, mais dans le monde a commencé à parler de la nécessité de passer à un algorithme de hachage plus sûr, comme SHA1 (au moment de la rédaction de cet article a déjà été prouvé que des conflits existent dans cet algorithme, donc je vous recommande d'utiliser SHA2) ou RIPEMD-160.

La première attaque

MD5 piratage direct a commencé le 1er Mars 2004. La société a lancé projet CertainKey Cryptosystèmes MD5CRK - distribué conflits système de recherche. Le but du projet était de trouver deux messages avec des codes de hachage identiques. Projet terminé le 24 Août 2004, lorsque quatre chercheurs indépendants - Xiaoyun Wang, Feng Denguo, Syuetszya Lai et Hongbo Yu - algorithme de vulnérabilité découverte permet de trouver des collisions méthode analytique pour un temps plus ou moins raisonnable. En utilisant cette méthode ne peut détecter les collisions par heure sur IBM p690 grappe (désolé, je ne l'ai pas à la maison).

Все методы взлома MD5
Exemple collisions MD5-hachage

En Mars 2005, il a été démontré la première utilisation de cette vulnérabilité dans la pratique. Un groupe de chercheurs a présenté deux certificats X.509 avec différents ensembles de touches, mais avec checksums identiques. Dans la même année, Vlastimil Klima a publié un algorithme pour détecter les collisions sur un ordinateur portable ordinaire pendant quelques heures. En 2006, il a continué. Dix-huitième Mars 2006 chercheur a dévoilé l'algorithme de trouver des collisions en une minute! Cette méthode est appelée "tunnel". En 2008, la Conférence Chaos Communication Congress était représentée par un article sur la méthode de génération de certificats X.509 faux. En fait, il a été la première utilisation réelle des collisions dans l'algorithme MD5.

Все методы взлома MD5
masque MD5 Brutus

Beaucoup de travail a été fait et aussi pour accélérer les hashs de craquage. En 2007, Kevin Breeze a présenté un programme qui utilise le Sony PlayStation3 pour MD5 hack. Il a réussi à obtenir de très bons résultats: 1,4 milliard de MD5-hashes ont été générées en une seconde! Deux ans plus tard, en 2009, à la BlackHat USA publié un article sur l'utilisation du GPU pour rechercher la collision, ce qui a permis d'augmenter sa vitesse à plusieurs reprises, surtout si elle est réalisée avec l'aide de plusieurs cartes vidéo simultanément.

ATI Radeon HD 4850 X2 carte graphique vous permet de générer jusqu'à 2,2 milliards de hachages par seconde! En utilisant l'algorithme MD5 dans la signature électronique ne sont pas acceptables en raison de la stabilité insuffisante de cet algorithme pour rechercher des collisions.

Est-ce la fin?

En 2011, l'IETF a accepté de faire des changements dans la RFC 1321 (MD5) et RFC 2104 (HMAC-MD5). Il y avait donc un document RFC 6151. Il reconnaît l'algorithme de chiffrement MD5 est précaire et recommande d'abandonner son utilisation. À mon avis, ce document a officiellement mis fin à MD5.

Cependant, en dépit du fait que l'algorithme MD5 a été officiellement reconnu comme dangereux, il y a des milliers, voire des centaines de milliers d'applications qui l'utilisent pour stocker les mots de passe dans la signature numérique et pour calculer checksums des fichiers.

Par ailleurs 31 Octobre, 2008 NIST a annoncé une concurrence entre les cryptographes. Le but du concours - pour développer un algorithme de hachage pour remplacer SHA2 obsolète et SHA1. À l'heure actuelle, les finalistes ont déjà été identifiés - ce BLAKE, Göstl, JH, Keccak et Skein.

Ighashgpu: le piratage sur le GPU

Mais assez de théorie. Descendons aux entreprises et parler directement à briser notre algorithme préféré. Supposons que nous avons eu entre les mains d'un hachage du mot de passe: d8578edf8458ce06fbc5bb76a58c5ca4.

Pour casser ce hachage, je propose d'utiliser le programme Ighashgpu, qui peut être téléchargé à saytewww.golubev.com ou visitez notre lecteur. Utility distribué gratuitement et fonctionne facilement sous Windows. Pour accélérer le processus de rupture hachage, Ighashgpu utiliser GPU, si vous avez besoin d'au moins une nVidia ou ATI carte vidéo support de c pour CUDA / ATI Stream.

GPU modernes sont construits sur une architecture légèrement différente de la CPU d'habitude, ils sont donc beaucoup d'informations graphiques de processus plus efficace. Bien que GPU conçu pour le traitement graphique en trois dimensions, il y a une tendance à l'utilisation et pour des calculs classiques au cours des dernières années. Mise en route du programme ne soit pas facile, mais très simple: Décompressez l'archive à un emplacement sur le disque et obtenir au piratage via la ligne de commande Windows:

ighashgpu.exe -t:md5 \
-h:d8578edf8458ce06fbc5bb76a58c5ca4 -max:7

Nous utilisons la méthode ci-dessus pour briser un certain hachage, généré en utilisant l'algorithme MD5. La longueur maximale possible du mot de passe est de sept caractères. Après un certain temps, le mot de passe sera trouvée (azerty). Maintenant, nous allons essayer de casser un hachage, mais avec des conditions légèrement différentes. Laissez notre hachage semble d11fd4559815b2c3de1b685bb78a6283, et comprend des lettres, des chiffres, et a souligne le suffixe «_admin». Dans ce cas, nous pouvons utiliser la force brute avec masque, afin de simplifier la tâche du programme:

ighashgpu.exe -h:d11fd4559815b2c3de1b685bb78a6283 -t:md5
-u:[abcdefghijklmnopqrstuwvxyz1234567890_] -m:??????_admin

Ici, le paramètre '-u' vous permet de spécifier le jeu de caractères utilisé dans la recherche, et le paramètre '-m' définit le masque de mot de passe. Dans ce cas, le masque se compose de six caractères aléatoires, après quoi il est une combinaison de «_admin». mot de passe deviner car il n'y a aucun problème.

Collisions - collision cryptographie appelé deux blocs de données d'entrée différents, pour lesquels les mêmes fonctions de hachage donnent le même hachage. Chaque fonction de sortie donne une séquence de bits d'une certaine longueur, ce qui ne dépend pas de la taille des données d'origine. Il en résulte qu'il existe un conflit pour tout algorithme de hachage. Cependant, la probabilité que vous serez en mesure de trouver une collision dans un "bon" algorithme, presque à zéro. Malheureusement ou heureusement, les algorithmes de hachage peuvent contenir des erreurs, ainsi que tout programme. De nombreuses fonctions de hachage ont été soit cassé ou seront bientôt. Dans ce cas, la «rupture» - signifie pour trouver une collision pour le temps qui est beaucoup moins que l'infini déclarée.

Ighashgpu: Listes

Maintenant, nous allons essayer de casser les mots de passe multiples simultanément. Supposons que nous sommes tombés sur un mot de passe de la base de données hash. Il est connu que chaque caractère du mot de passe se termine c00l:

f0b46ac8494b7761adb7203aa7776c2a
f2da202a5a215b66995de1f9327dbaa6
c7f7a34bbe8f385faa89a04a9d94dacf
cb1cb9a40708a151e6c92702342f0ac5
00a931d3facaad384169ebc31d38775c
4966d8547cce099ae6f666f09f68458e

Enregistrer hashes dans encrypted.dat fichier Ighashgpu et exécuter comme suit:

ighashgpu.exe -t:md5 -u:[abcdefghijklmnopqrstuwvxyz1234567890_]
-m:??????c00l encrypted.dat

À la fin du programme apparaîtra dans le dossier du fichier Ighashgpu ighashgpu_results.txt pour casser le mot de passe:

f0b46ac8494b7761adb7203aa7776c2a:1rootxc00l
f2da202a5a215b66995de1f9327dbaa6:pwd12xc00l
c7f7a34bbe8f385faa89a04a9d94dacf:pwd34yc00l

cb1cb9a40708a151e6c92702342f0ac5:pwd56yc00l
4966d8547cce099ae6f666f09f68458e:pwd98zc00l
00a931d3facaad384169ebc31d38775c:pwd78zc00l
Все методы взлома MD5
Vzlomanykh hash du fichier encrypted.dat

Ighashgpu: sel

Enfin laisser ce que nous faisons de piratage "salée" hash. On suppose qu'un hachage est généré par l'algorithme suivant:

var plain = password + "s41t";
var hash = md5(plain);

En conséquence, nous avons reçu le hachage suivant: 42151cf2ff27c5181bb36a8bcfafea7b. Ighashgpu vous permet de spécifier «sel» dans le paramètre «-asalt»:

ighashgpu.exe -h:42151cf2ff27c5181bb36a8bcfafea7b \
-t:md5 -u:[abcdefghijklmnopqrstuwvxyz1234567890_] \
-asalt:s41t

Et nous avons une nouvelle fois le mot de passe requis rapidement et facilement.

Divertissant Mathématiques - Pour le mot de passe de 8 caractères composé des 126 premiers caractères ASCII, disponibles 63 527 879 748 485 376 combinaisons possibles. Pour 254 caractères le nombre de combinaisons possibles augmente à 324 859 956 17 700 833 536 que déjà 2,7 milliards de fois plus de personnes sur la planète. Si vous créez un fichier texte qui contient tous ces mots de passe, il faut des millions de téraoctets. Bien sûr, dans le monde d'aujourd'hui, il est possible, mais le coût du stockage d'un tel fichier sera tout simplement exorbitants.

MD5 Hacking en mode turbo

Cracking hashes par recherche exhaustive, même sur le meilleur matériel prend beaucoup de temps, surtout si le mot de passe est supérieure à huit caractères. La meilleure façon d'augmenter la vitesse de deviner le mot de passe - est de créer une base de données de tous les hashs à un ensemble spécifique de caractères. Dans les années 80 du siècle dernier hackers croyaient que quand ils auront un matériel plus puissant, 640 Ko de mémoire et un disque dur de 10 Mo, cette base de données deviendra une réalité et la sélection d'un mot de passe deviendra une question de minutes. Cependant, le fer est développé, et le rêve est resté juste un rêve. La situation a changé seulement en Août 2003, après Philip Oeshlin, PhD dans le domaine des réseaux informatiques de l'Institut suisse de technologie à Lausanne, a publié son travail sur le problème du choix du rapport optimal de l'espace-temps. Il décrit un procédé de rupture des fonctions de hachage en utilisant un "Rainbow" de tables.

L'essence de la nouvelle méthode est la suivante. S'il vous plaît sélectionner un mot de passe aléatoire, qui est ensuite haché et soumis à la fonction de réduction, qui convertit le hachage dans un mot de passe possible (par exemple, il peut être le premier hachage 64 bits de l'original). Suivant la construction d'une chaîne de mots de passe possibles, qui sont choisis parmi les premier et dernier éléments. Ils sont enregistrés dans le tableau. Pour récupérer un mot de passe, utilisez la fonction de réduction du hachage original et chercher possible mot de passe dans la table résultante. Si ce mot de passe ne sont pas dans le tableau, et de calculer son hachage le prochain mot de passe possible. L'opération est répétée jusqu'à ce que le "rainbow" table non trouvé le mot de passe. Ce mot de passe est l'extrémité d'une des chaînes. Pour trouver le mot de passe original, vous devez vous débarrasser de toute la chaîne à nouveau. Cette opération ne prend pas beaucoup de temps, en fonction de l'algorithme de chaînage est généralement quelques secondes ou quelques minutes. Table "Rainbow" peut réduire de manière significative l'utilisation de la mémoire par rapport à la recherche conventionnelle. Le seul inconvénient de cette méthode est que pour construire les tables nécessaires beaucoup de temps.

Maintenant, nous allons passer de la parole à l'action et essayer de casser un couple de hashs par cette méthode.

Arc-en-tables - «tableau Rainbow" - un type spécial de dictionnaire, qui contient une chaîne de mots de passe et vous permet de choisir votre mot de passe en quelques secondes ou minutes, avec une probabilité de 85-99%.

"Rainbow" piratage

Tout d'abord, vous devez décider sur le programme. Personnellement, je nravitsyaRainbowCrack, qui est gratuit et fonctionne aussi bien sur Windows et sur Linux. Il prend en charge l'algorithme de hachage quatre: LN / NTLM, MD5 et SHA1. Le programme ne nécessite aucune installation, déballez assez quelque part sur le disque. Après le déballage, vous devez trouver un "arc en ciel" table pour l'algorithme MD5. Il est pas si simple: vous pouvez soit télécharger ou acheter, ou générer votre propre. Une des plus grandes archives de tables disponibles sur le site Web du projet Rainbow Tables gratuit.

Par ailleurs, vous pouvez vous aussi aider le projet si le client téléchargé à partir du site et rejoindre le réseau international distribué, qui génère un "arc en ciel" table. Au moment de la rédaction de cet article sur ce site a été des tables de 3To disponibles algorithmes MD5, SHA1, LM et NTLM. Si vous avez pas la possibilité de fusionner ce volume d'information, sur le même site, vous pouvez commander des CD avec les tables «rainbow». À l'heure actuelle, il y a trois package: LN / NTLM, MD5 et SHA1 - pour 200 $ chacun. Nous générons la table par vous-même. Pour ce faire, utilisez le RTGEN du programme, qui est composé RainbowCrack. Elle prend les paramètres d'entrée suivants:

  • hash_algorithm - algorithme de hachage (LM, NTLM, MD5 ou SHA1);
  • charset - un ensemble de caractères contenus dans le fichier charset.txt;
  • plaintextlenmin et plaintextlenmax - longueur minimale et maximale du mot de passe;
  • tableindex, chainlen, chainnum et partindex - «nombres magiques", décrit dans l'article de Philip Oeshlina

Considérons enfin plus d'options:

  1. table_index - index de table "arc en ciel", qui peut être utilisé dans un tableau décomposé en plusieurs fichiers. J'ai utilisé 0, puisque ma table est composée d'un seul fichier.
  2. chain_len - le nombre de mots de passe uniques dans la chaîne.
  3. chain_num - le nombre de chaînes dans le tableau.
  4. part_index - un paramètre qui détermine le début de la chaîne. Les créateurs du programme sont invités à utiliser uniquement le nombre (j'utilise 0) pour ce paramètre. Maintenant, nous commençons la génération de la table "rainbow" pour MD5:
rtgen.exe md5 loweralpha-numeric 1 7 0 2000 97505489 0

Dans ce cas, nous créons une table de mots de passe composé de chiffres et de lettres majuscules de l'alphabet et d'une longueur de un à sept caractères. Sur mon Eee PC avec processeur Intel Atom N450, ce processus a pris presque deux jours :) . En conséquence, je suis md5loweralpha-numérique # 1-702000 fichier? Taille 975054890.rt de 1,5 Go.

Ensuite, la table résultante à trier afin d'optimiser la recherche de la chaîne nous désirée. Pour ce faire, rtsort.exe exécuter:

rtsort.exe md5_loweralpha-numeric#1-7_0_2000x97505489_0.rt

Nous attendons quelques minutes et la table est prête! Maintenant, vous pouvez casser les mots de passe eux-mêmes. Pour commencer essayer de deviner le mot de passe pour un hachage: d8578edf8458ce06fbc5bb76a58c5ca4. Exécutez rcrack_gui.exe et sélectionnez Ajouter Hash ... dans le menu Fichier. Dans la fenêtre qui apparaît, saisissez le hachage, puis cliquez sur OK. Maintenant, sélectionnez le fichier avec le "rainbow" table. Pour ce faire, utilisez l'élément Recherche de Rainbow Tables ... dans le menu Rainbow Table. Dans la fenêtre qui apparaît, sélectionnez le fichier que vous êtes à la recherche d'un fichier avec une table, j'ai cette md5_loweralpha-numérique # 1-7_0_2000x97505489_0.rt, puis cliquez sur Ouvrir. Après quelques secondes, le mot de passe est entre nos mains! La même opération peut être effectuée et sur une liste de hash à partir d'un fichier.

Все методы взлома MD5
Génération tables arc

«Arc-en» Table vs. CPU vs. GPU

Je suppose que vous avez remarqué la rapidité avec Ighashgpu capable de déchiffrer les MD5-hashes de force brute, et que RainbowCrack rend encore plus rapidement en présence d'un bon "rainbow" table. J'ai décidé de comparer la vitesse de fonctionnement de ces programmes. Pour la pureté de l'expérience que j'utilisé un programme MDCrack, qui effectue un mot de passe brute sur le CPU (et est l'un des meilleurs dans ce type de programme). Voici ce qui est arrivé à la suite pour le GPU (nVidia GeForce GT 220M), CPU (Intel Atom N450, dual core) et "arc en ciel" de tableaux:

Длина пароля | GPU | CPU | Таблицы
4 символа | 00:00:01 | 00:00:01 | 00:00:16
5 символов | 00:00:02 | 00:00:09 | 00:00:16
6 символов | 00:00:16 | 00:05:21 | 00:00:10
7 символов | 00:07:11 | 09:27:52 | 00:00:04

Comme vous pouvez le voir, la vitesse de recherche avec l'utilisation du processeur est beaucoup moins avec l'utilisation du GPU ou des tables «rainbow». En outre, la plupart des logiciels spécialisés vous permet de créer un groupe de cartes vidéo, ce qui permet la vitesse de récupération de mot de passe est augmenté de manière significative. Je pense que vous l'avez souligné que le taux de recrutement de mot de passe de 4 et 5 caractères est inférieure à la vitesse de la sélection des mots de passe de six ou sept caractères. Ceci est dû au fait que la recherche commence seulement après que la table de mot de passe est chargé en mémoire. Il se trouve que seize secondes en moyenne, treize ont passé le téléchargement et trois - pour casser le hachage.

Все методы взлома MD5
Rainbow Table intérieur

bit.ly/vEhdir - l'ajout d'un nouvel algorithme de hachage en RainbowCrack utilisant l'API.

bit.ly/vTSB9K - la description du format de table "arc en ciel".

Au lieu d'une conclusion

En fin de compte, je voudrais parler un peu de la protection de vos mots de passe. Tout d'abord, ne pas utiliser des algorithmes de hachage sensibles tels que MD5 ou SHA1. À ce stade, il est utile d'envisager l'utilisation d'un SHA2 de fonction de hachage cryptographique ou SHA-3 (comme publiera la norme pertinente). Deuxièmement, ne pas utiliser directement une fonction de hachage. Toujours essayer d'utiliser le «sel» et de combiner différents algorithmes. Et troisièmement, choisir des mots de passe complexes longueur arbitraire d'au moins huit caractères. Bien sûr, cela ne vous protège pas contre le piratage à 100%, mais au moins compliquer la vie des criminels.