This page has been robot translated, sorry for typos if any. Original content here.

Alle Methoden zum Hacken von MD5

Nach Thema:


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

Es ist kein Geheimnis, dass die Kryptographie ein Teil unseres Lebens geworden ist. Internet-Dienste, soziale Netzwerke, mobile Geräte - sie alle speichern in ihren Datenbanken Benutzer Passwörter, verschlüsselt mit verschiedenen Algorithmen.

Der beliebteste Algorithmus heute ist natürlich MD5.

Über die Weisen seines Bruchs und es wird eine Rede geben.

Ein wenig über Kryptographie

Moderne Kryptographie umfasst drei Bereiche: private Schlüsselverschlüsselung, öffentliche Schlüsselverschlüsselung und Hashing. Heute werden wir darüber reden, was hasst und was es gegessen wird.

Im allgemeinen wird das Hashing als die Umwandlung von Eingangsdaten beliebiger Länge in einen Ausgangsbitstring mit fester Länge verstanden. Meistens werden Hash-Funktionen im Prozess der Benutzerauthentifizierung verwendet (die Datenbank speichert normalerweise einen Hash des Passwortes anstelle des Passwortes selbst) und für die Berechnung von Prüfsummen von Dateien, Datenpaketen und so weiter.

Einer der bekanntesten und weit verbreiteten Hash-Algorithmen ist MD5.

Starten

Der MD5-Algorithmus ist ein 128-Bit-Hash-Algorithmus. Dies bedeutet, dass es einen 128-Bit-Hash für einen beliebigen Satz von Daten berechnet, die an seinem Eingang ankommen. Dieser Algorithmus wurde von Professor Ronald Rivest des Massachusetts Institute of Technology im Jahr 1991 entwickelt, um den weniger zuverlässigen Vorgänger - MD4 zu ersetzen. Der Algorithmus wurde erstmals im April 1992 in RFC 1321 veröffentlicht. Danach wurde MD5 verwendet, um eine Vielzahl von Aufgaben zu lösen, von Hashing Passwörter zu CMS, um digitale Signaturen und SSL-Zertifikate zu erstellen.

Die Tatsache, dass der MD5-Algorithmus gehackt werden kann, wurde erstmals 1993 diskutiert. Die Forscher Bert den Bauer und Anton Bossilaris zeigten, dass Pseudokolliten im Algorithmus möglich sind. Drei Jahre später, 1996, veröffentlichte Hans Doberbert einen Artikel, in dem er die Existenz von Kollisionen bewies und die theoretische Möglichkeit des Hackens von MD5 beschrieb. Es war noch nicht hackend, aber die Welt begann darüber zu reden über die Notwendigkeit, auf zuverlässigere Hashing-Algorithmen zu wechseln, zum Beispiel SHA1 (zum Zeitpunkt dieses Schreibens wurde bereits bewiesen, dass es Kollisionen in diesem Algorithmus gibt, also empfehle ich mit SHA2) oder RIPEMD-160.

Erste Angriffe

Der direkte Zusammenbruch von MD5 begann am 1. März 2004. CertainKey Cryptosystems hat das MD5CRK-Projekt gestartet, ein verteiltes Kollisionssuchsystem. Ziel des Projektes war es, nach zwei Meldungen mit identischen Hash-Codes zu suchen. Das Projekt endete am 24. August 2004, als vier unabhängige Forscher - Wang Xiaoyun, Feng Denguo, Lai Xuejia und Yu Hongbo - die Anfälligkeit des Algorithmus entdeckten, die es ermöglicht, Kollisionen nach analytischer Methode für mehr oder weniger akzeptable Zeit zu finden. Mit Hilfe dieser Methode ist es möglich, Kollisionen auf einem IBM p690 Cluster in nur einer Stunde zu identifizieren (es ist schade, dass ich kein solches Haus habe).

Все методы взлома MD5
Beispiel für Kollisions-MD5-Hashes

Am 1. März 2005 wurde der erste Einsatz dieser Schwachstelle in der Praxis nachgewiesen. Das Forscherteam stellte zwei X.509-Zertifikate mit verschiedenen Sätzen von Schlüsseln vor, aber mit identischen Prüfsummen. Im selben Jahr veröffentlichte Vlastimil Klima einen Algorithmus, der es ermöglicht, Kollisionen auf einem herkömmlichen Laptop in wenigen Stunden zu erkennen. Im Jahr 2006 ging er weiter. Am 18. März 2006 veröffentlichte der Forscher einen Algorithmus, der in einer Minute Kollisionen fand! Diese Methode heißt "Tunneling". Im Jahr 2008 wurde auf dem Chaos Communication Congress ein Artikel über die Methode zur Erstellung von X.509 gefälschten Zertifikaten vorgestellt. In der Tat war dies der erste Fall der wirklichen Verwendung von Kollisionen im MD5-Algorithmus.

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

Es wurde auch viel gearbeitet, um das Rauschen der Hashes zu beschleunigen. Im Jahr 2007 führte Kevin Breeze ein Programm ein, das Sony PlayStation3 zum Hacken von MD5 verwendet. Er gelang es, sehr gute Ergebnisse zu erzielen: 1,4 Milliarden MD5 Hashes wurden in nur einer Sekunde erzeugt! Zwei Jahre später, im Jahr 2009, veröffentlichte BlackHat USA einen Artikel über die Verwendung der GPU, um nach Kollisionen zu suchen, was es möglich machte, seine Geschwindigkeit mehrmals zu erhöhen, besonders wenn es gleichzeitig mit mehreren Videokarten durchgeführt wurde.

Mit der ATI Radeon HD 4850 X2 Grafikkarte können Sie bis zu 2,2 Milliarden Hashes pro Sekunde erzeugen! Die Verwendung des MD5-Algorithmus in EDS ist inakzeptabel aufgrund der fehlenden Stabilität dieses Algorithmus auf die Suche nach Kollisionen.

Dies ist das Ende?

Im Jahr 2011 hat die IETF vereinbart, RFC 1321 (MD5) und RFC 2104 (HMAC-MD5) zu ändern. So erschien das Dokument RFC 6151. Er erkennt den MD5-Verschlüsselungsalgorithmus als unsicher und empfiehlt es nicht zu verwenden. Meiner Meinung nach hat dieses Dokument offiziell MD5 beendet.

Trotz der Tatsache, dass der MD5-Algorithmus offiziell als unsicher erkannt wurde, gibt es Tausende, wenn nicht zehn und Hunderte von Tausenden von Anwendungen, die es zum Speichern von Passwörtern, in digitalen Signaturen und zur Berechnung von Prüfsummen von Dateien verwenden.

Mittlerweile hat NIST am 31. Oktober 2008 einen Wettbewerb unter den Kryptographen angekündigt. Das Ziel des Wettbewerbs ist es, einen Hash-Algorithmus zu entwickeln, um die veralteten SHA1 und SHA2 zu ersetzen. Im Moment sind die Finalisten bereits bestimmt - das ist BLAKE, Gostl, JH, Keccak und Skein.

Ighashgpu: Hacken mit GPU

Aber genug Theorie. Lass uns aufs Geschäft gehen und direkt über das Hacken unseres Lieblingsalgorithmus sprechen. Angenommen, wir haben einen Hash von irgendeiner Art von Passwort: d8578edf8458ce06fbc5bb76a58c5ca4.

Um diesen Hash zu knacken, schlage ich vor, das Ighashgpu Programm zu benutzen, das von www.golubev.com heruntergeladen oder auf unserer Festplatte gefunden werden kann. Das Dienstprogramm ist völlig kostenlos verteilt und arbeitet leise unter Windows. Um den Prozess des Brechens des Hash zu beschleunigen, verwendet Ighashgpu eine GPU, also brauchst du mindestens eine nVidia oder ATI Grafikkarte mit CUDA / ATI Stream Unterstützung.

Moderne Grafikprozessoren basieren auf einer etwas anderen Architektur als herkömmliche CPUs, so dass sie viel effizienter bei der Verarbeitung von Grafikinformationen sind. Obwohl GPUs für die 3D-Grafik konzipiert sind, gab es in den letzten Jahren einen Trend zu ihrer Verwendung für konventionelle Berechnungen. Die Arbeit mit dem Programm zu beginnen ist nicht einfach, aber ganz einfach: entpacken Sie das Archiv an einen beliebigen Platz auf der Festplatte und starten Sie den Einbruch mit der Befehlszeile Windows:

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

Wir verwenden die obige Methode, um einen spezifischen Hash zu knacken, der durch den MD5-Algorithmus erzeugt wird. Die maximale Länge eines möglichen Passwortes beträgt sieben Zeichen. Nach einiger Zeit wird das Passwort gefunden (qwerty). Jetzt wollen wir versuchen, einen anderen Hash zu knacken, aber mit etwas anderen Bedingungen. Lassen Sie unsere Hash hat die Form d11fd4559815b2c3de1b685bb78a6283, sondern enthält Buchstaben, Zahlen, Unterstrich und hat das Suffix "_admin". In diesem Fall können wir die Passwort-Suche nach Maske verwenden, um die Programmaufgabe zu vereinfachen:

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

Hier können Sie mit der Option '-u' den Zeichensatz festlegen, der für Brute-Force verwendet wird, und der Parameter '-m' gibt die Passwort-Maske an. In unserem Fall besteht die Maske aus sechs beliebigen Zeichen, gefolgt von einer Kombination von "_admin". Die Wahl des Passworts ist auch nicht schwierig.

Kollisionen - eine Kollision in der Kryptographie heißt zwei verschiedene Eingangsdatenblöcke, die für dieselbe Hashfunktion denselben Hash geben. Jede Ausgabefunktion erzeugt eine Folge von Bits einer bestimmten Länge, die nicht von der Größe der ursprünglichen Daten abhängt. Daraus folgt, dass es Kollisionen für jeden Hash-Algorithmus gibt. Doch die Wahrscheinlichkeit, dass Sie in der Lage sein werden, eine Kollision in einem "guten" Algorithmus zu finden, tendiert praktisch zu Null. Leider, oder glücklicherweise können Hash-Algorithmen Fehler enthalten, wie jedes Programm. Viele Hash-Funktionen sind entweder gebrochen oder werden bald. In diesem Fall bedeutet "Brechen", eine Kollision in einer Zeit zu finden, die viel weniger als die deklarierte Unendlichkeit ist.

Ighashgpu: Listen

Jetzt wollen wir versuchen, mehrere Passwörter sofort zu knacken. Angenommen, wir haben eine Datenbank mit Passwort-Hashes in unseren Händen. Es ist bekannt, dass jedes Passwort mit den Zeichen c00l endet:

f0b46ac8494b7761adb7203aa7776c2a
f2da202a5a215b66995de1f9327dbaa6
c7f7a34bbe8f385faa89a04a9d94dacf
cb1cb9a40708a151e6c92702342f0ac5
00a931d3facaad384169ebc31d38775c
4966d8547cce099ae6f666f09f68458e

Speichern Sie die Hashes in der Datei encrypted.dat und führen Sie Ighashgpu wie folgt aus:

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

Nachdem das Programm beendet ist, erscheint die Datei ighashgpu_results.txt im Ighashgpu-Ordner mit den Passwörtern geknackt:

f0b46ac8494b7761adb7203aa7776c2a:1rootxc00l
f2da202a5a215b66995de1f9327dbaa6:pwd12xc00l
c7f7a34bbe8f385faa89a04a9d94dacf:pwd34yc00l

cb1cb9a40708a151e6c92702342f0ac5:pwd56yc00l
4966d8547cce099ae6f666f09f68458e:pwd98zc00l
00a931d3facaad384169ebc31d38775c:pwd78zc00l
Все методы взлома MD5
Hacked hashes aus der Datei encrypted.dat

Ighashgpu: Salz

Schließlich machen wir einen Riss der "gesalzenen" Hash. Angenommen, ein Hash wird mit dem folgenden Algorithmus erzeugt:

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

Als Ergebnis erhielten wir folgendes Hash: 42151cf2ff27c5181bb36a8bcfafea7b. Ighashgpu erlaubt Ihnen, "Salz" im Parameter "-Anal" zu spezifizieren:

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

Und wir haben das Passwort schnell und schnell bekommen.

Unterhaltende Mathematik - Für das 8-stellige Passwort, bestehend aus den ersten 126 ASCII-Zeichen, sind 63 527 879 748 485 376 mögliche Kombinationen verfügbar. Für 254 Zeichen erhöht sich die Anzahl der möglichen Kombinationen auf 17 324 859 956 700 833 536, was 2,7 Milliarden Mal mehr ist als Menschen auf unserem Planeten. Wenn Sie eine Textdatei erstellen, die alle diese Passwörter enthält, wird es Millionen von Terabyte nehmen. Natürlich ist es in der modernen Welt möglich, aber die Kosten für die Speicherung einer solchen Datei werden einfach transzendental sein.

Einbruch des MD5 im Turbomodus

Hacking Hashes durch eine vollständige Suche auch auf die beste Hardware dauert ziemlich viel Zeit, vor allem, wenn das Passwort mehr als acht Zeichen lang ist. Der einfachste Weg, um die Geschwindigkeit der Passworteingabe zu erhöhen, besteht darin, eine Datenbank aller Hashes für einen bestimmten Satz von Zeichen zu erstellen. In den 80er Jahren des letzten Jahrhunderts glaubten Hacker, dass, wenn sie mehr leistungsfähige Hardware, 640K Speicher und eine 10MB Festplatte haben, wird eine solche Basis eine Realität werden und die Auswahl eines beliebigen Passworts wird in eine Minute Angelegenheit verwandeln. Allerdings baute Eisen, und der Traum blieb ein Traum. Die Situation änderte sich erst im August 2003, nachdem Philip Oeshlin, Ph.D. in Computernetzwerk vom Schweizerischen Institut für Technologie in Lausanne, seine Arbeit über das Problem der Wahl des optimalen Zeit-zu-Zeit-Verhältnisses veröffentlicht hat. Es beschrieb die Methode, Hash-Funktionen mit "Regenbogen" -Tabellen zu brechen.

Das Wesen der neuen Methode ist wie folgt. Zuerst müssen Sie ein beliebiges Passwort auswählen, das dann gehasht und einer Reduktionsfunktion unterworfen wird, die den Hash auf ein beliebiges Passwort umwandelt (z. B. die ersten 64 Bits des Originalhashs). Als nächstes wird eine Kette von möglichen Passwörtern konstruiert, aus denen die ersten und letzten Elemente ausgewählt werden. Sie sind auf den Tisch geschrieben. Um das Passwort wiederherzustellen, wenden wir die Reduzierungsfunktion auf den ursprünglichen Hash an und suchen nach dem möglichen Passwort in der Tabelle. Wenn es kein solches Passwort in der Tabelle gibt, werden wir es hash und das nächste mögliche Passwort berechnen. Die Operation wird wiederholt, bis ein Passwort in der Regenbogen-Tabelle gefunden wird. Dieses Passwort stellt das Ende einer der Ketten dar. Um das Original-Passwort zu finden, musst du die gesamte Konversation erneut fahren. Eine solche Operation dauert nicht viel Zeit, je nach Kettenbau Algorithmus, ist es in der Regel ein paar Sekunden oder Minuten. "Rainbow" -Tabellen können erheblich reduzieren die Menge an Speicher im Vergleich zu herkömmlichen Suche verwendet. Der einzige Nachteil der beschriebenen Methode ist, dass es ziemlich lange dauert, Tabellen zu bauen.

Jetzt lasst uns von Worten zu Taten bewegen und versuchen, ein paar Passwort Hashes mit dieser Methode zu knacken.

Rainbow Tische - "Rainbow" Tische - das ist eine spezielle Art von Wörterbuch, das eine Kette von Passwörtern enthält und Ihnen erlaubt, ein Passwort in wenigen Sekunden oder Minuten mit einer Wahrscheinlichkeit von 85-99% zu wählen.

"Regenbogen" hacken

Zuerst müssen Sie sich für das Programm entscheiden. Persönlich mag ich RainbowCrack, das kostenlos ist und auf Windows und Linux arbeitet. Es unterstützt vier Hash-Algorithmen: LN / NTLM, MD5 und SHA1. Das Programm erfordert keine Installation, es ist genug, um es irgendwo auf der Festplatte auszupacken. Nach dem Auspacken müssen Sie die "Regenbogen" -Tabellen für den MD5-Algorithmus finden. Hier ist alles nicht so einfach: man kann sie entweder kostenlos herunterladen oder kaufen oder selbst erzeugen. Eines der größten Archive der freien Tische ist auf der Free Rainbow Tables Projekt-Website verfügbar.

Übrigens können Sie dem Projekt auch helfen, wenn Sie den Client von der Website herunterladen und sich einem verteilten internationalen Netzwerk anschließen, das "Regenbogen" -Tabellen erzeugt. Zum Zeitpunkt dieses Schreibens waren bereits 3 TB-Tabellen für die MD5-, SHA1-, LM- und NTLM-Algorithmen auf dieser Seite verfügbar. Wenn Sie nicht die Möglichkeit haben, solch ein Informationsvolumen zusammenzuführen, dann können Sie auf der gleichen Seite Discs mit "Rainbow" Tischen bestellen. Im Moment gibt es drei Pakete: LN / NTLM, MD5 und SHA1 - $ 200 je. Wir werden die Tische selbst erzeugen. Um dies zu tun, musst du das Programm rtgen benutzen, das Teil von RainbowCrack ist. Es werden folgende Eingabeparameter benötigt:

  • Hash_algorithmus - Hash-Algorithmus (LM, NTLM, MD5 oder SHA1);
  • Charset - einer der Zeichensätze, die in der Datei charset.txt enthalten sind;
  • Plaintextlenmin und plaintextlenmax - die minimale und maximale Länge des Passwortes;
  • Tableindex, chainlen, chainnum und partindex sind die "magischen Zahlen", die im Artikel von Philippe Oeschlin beschrieben wurden

Betrachten wir die letzten Parameter genauer:

  1. Table_index - der Index der "Regenbogen" -Tabelle, die beim Aufteilen der Tabelle in mehrere Dateien verwendet werden kann. Ich habe 0 verwendet, da mein Tisch aus nur einer Datei bestand.
  2. Chain_len - die Anzahl der einzigartigen Passwörter in der Kette.
  3. Chain_num - die Anzahl der Ketten in der Tabelle.
  4. Part_index ist der Parameter, der den Anfang der Kette bestimmt. Die Schöpfer des Programms werden gebeten, nur diese Nummer als den Parameter zu verwenden (ich verwendete 0). Jetzt lauf die Generation des Regenbogens für MD5:
rtgen.exe md5 loweralpha-numeric 1 7 0 2000 97505489 0

In diesem Fall erstellen wir eine Tabelle von Passwörtern, die aus Ziffern und Großbuchstaben des lateinischen Alphabets bestehen und eine Länge von ein bis sieben Zeichen haben. Auf meinem Eee PC mit dem Intel Atom N450 Prozessor dauerte dieser Prozess fast zwei Tage :) . Als Ergebnis bekam ich die Datei md5loweralpha-numeric # 1-702000? 975054890.rt in der Größe von 1,5 GB.

Als nächstes muss die resultierende Tabelle sortiert werden, um die Suche nach der gewünschten Kette zu optimieren. Um dies zu tun, führen Sie rtsort.exe aus:

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

Wir warten auf ein paar Minuten und der Tisch ist fertig! Jetzt kannst du das Passwort selbst brechen. Zuerst werden wir versuchen, das Passwort für einen Hash zu finden: d8578edf8458ce06fbc5bb76a58c5ca4. Führen Sie rcrack_gui.exe aus und wählen Sie im Menü Datei die Option Hinzufügen ... aus. Im erscheinenden Fenster einen Hash eingeben und auf OK klicken. Wählen Sie nun die Datei mit dem Regenbogen-Tisch aus. Um dies zu tun, verwenden Sie den Artikel Search Rainbow Tables ... im Rainbow Table Menü. In dem Fenster, das öffnet, um eine Datei auszuwählen, nach der Datei mit der Tabelle zu suchen, habe ich es md5_loweralpha-numeric # 1-7_0_2000x97505489_0.rt und dann auf Öffnen klicken. Ein paar Sekunden später ist das Passwort in unseren Händen! Ein ähnlicher Vorgang kann auf der Hash-Liste aus der Datei durchgeführt werden.

Все методы взлома MD5
Ich generiere einen Regenbogen Tisch

"Regenbogen" Tische vs. CPU vs. GPU

Ich denke, du hast bemerkt, wie schnell Ighashgpu in der Lage ist, MD5-Hashes durch rohe Gewalt zu knacken, und die Tatsache, dass RainbowCrack es noch schneller mit einem guten Regenbogen-Tisch macht. Ich habe beschlossen, die Geschwindigkeit dieser Programme zu vergleichen. Für die Reinheit des Experiments habe ich das MDCrack-Programm benutzt, das das Passwort auf die CPU bringt (und ist eines der besten unter den Programmen dieses Typs). Hier ist was für die GPU passiert (nVidia GeForce GT 220M), CPU (Intel Atom N450, zwei Kerne) und "Rainbow" Tische:

Длина пароля | 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

Wie Sie sehen können, ist die Geschwindigkeit der Suche mit der CPU viel weniger als mit einem GPU oder "Regenbogen" Tische. Darüber hinaus können die meisten spezialisierten Programme Ihnen erlauben, einen Cluster von Videokarten zu erstellen, so dass die Geschwindigkeit der Passwort-Enumeration viele Male erhöht. Ich glaube, Sie haben festgestellt, dass die Geschwindigkeit der Auswahl von 4- und 5-Zeichen Passwörter niedriger ist als die Geschwindigkeit der Auswahl eines Passwortes von sechs oder sieben Zeichen. Dies liegt daran, dass die Passwort-Suche erst nach dem Laden der Tabelle beginnt. Es stellt sich heraus, dass von sechzehn Sekunden im Durchschnitt dreizehn für das Herunterladen und drei - auf Hacken ein Hash ausgegeben wird.

Все методы взлома MD5
Schillernder Tisch von innen

Bit.ly/vEhdir - Hinzufügen eines neuen Hash-Algorithmus zu RainbowCrack mit der API.

Bit.ly/vTSB9K - Beschreibung des Formats der Regenbogentabelle.

Anstatt zu schließen

Am Ende möchte ich ein wenig über den Schutz Ihrer Passwörter sprechen. Verwenden Sie zunächst keine anfälligen Hash-Algorithmen wie MD5 oder SHA1. An dieser Stelle sollten Sie eine der SHA2- oder SHA3-Kryptographie-Hash-Funktionen verwenden (sobald Sie den entsprechenden Standard veröffentlichen). Zweitens verwenden Sie keine Hash-Funktionen direkt. Immer versuchen, "Salz" zu verwenden und verschiedene Algorithmen zu kombinieren. Und drittens wählen Sie komplexe willkürliche Passwörter mit einer Länge von mindestens acht Zeichen. Natürlich wird dies nicht schützen Sie vor Hacken 100%, aber zumindest komplizieren Leben für Eindringlinge.