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

Alle Methoden des Hackens von MD5

Nach Thema:


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

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

Der populärste solcher Algorithmus ist heute natürlich MD5.

Über Wege seines Bruches und es wird eine Rede geben.

Ein wenig über Kryptographie

Die moderne Kryptographie umfasst drei Richtungen: Verschlüsselung mit einem privaten Schlüssel, Verschlüsselung und Hashing mit öffentlichem Schlüssel. Heute werden wir darüber sprechen, was ist Hascherei und was es gegessen wird.

Im Allgemeinen versteht man unter Hashing die Umwandlung von Eingangsdaten beliebiger Länge in eine Ausgangsbitkette fester Länge. Meistens werden Hash-Funktionen bei der Benutzerauthentifizierung verwendet (die Datenbank speichert normalerweise einen Hash des Passworts anstelle des Passworts selbst) und zur Berechnung von Prüfsummen von Dateien, Datenpaketen und so weiter.

Einer der bekanntesten und am weitesten verbreiteten Hash-Algorithmen ist MD5.

Der Anfang

Der MD5-Algorithmus ist ein 128-Bit-Hash-Algorithmus. Dies bedeutet, dass ein 128-Bit-Hash für eine beliebige Menge von Daten berechnet wird, die an seinem Eingang ankommen. Dieser Algorithmus wurde 1991 von Professor Ronald Rivest vom Massachusetts Institute of Technology 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, vom Hash-Passwort bis hin zum Erstellen von digitalen Signaturen und SSL-Zertifikaten.

Die Tatsache, dass der MD5-Algorithmus geknackt werden kann, wurde erstmals 1993 erwähnt. Die Forscher Bert den Bauer und Anton Bossilaris zeigten, dass Pseudokollisionen im Algorithmus möglich sind. Drei Jahre später, 1996, veröffentlichte Hans Dobbertin einen Artikel, in dem er die Existenz von Kollisionen bewies und die theoretische Möglichkeit, MD5 zu hacken, beschrieb. Es wurde noch nicht gehackt, aber die Welt begann über die Notwendigkeit zu sprechen, auf zuverlässigere Hash-Algorithmen umzusteigen, zum Beispiel SHA1 (zum Zeitpunkt dieses Schreibens wurde bereits bewiesen, dass es Kollisionen in diesem Algorithmus gibt, daher empfehle ich SHA2) oder RIPEMD-160.

Erste Angriffe

Der direkte Bruch von MD5 begann am 1. März 2004. CertainKey Cryptosystems hat das MD5CRK-Projekt gestartet, ein verteiltes Kollisionssuchsystem. Das Ziel des Projekts war es, nach zwei Nachrichten mit identischen Hashcodes 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 erkannten, der es ermöglicht, Kollisionen mit analytischer Methode für mehr oder weniger akzeptable Zeit zu finden. Mit dieser Methode ist es möglich, Kollisionen in einem IBM p690 Cluster in nur einer Stunde zu erkennen (schade, dass ich kein solches Haus habe).

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

Am 1. März 2005 wurde die erste Anwendung dieser Schwachstelle in der Praxis demonstriert. Das Forschungsteam übermittelte zwei X.509-Zertifikate mit unterschiedlichen Schlüsselsätzen, jedoch mit identischen Prüfsummen. Im selben Jahr veröffentlichte Vlastimil Klima einen Algorithmus, mit dem Kollisionen auf einem normalen Laptop in wenigen Stunden erkannt werden können. 2006 ging er weiter. Am 18. März 2006 veröffentlichte der Forscher einen Algorithmus, der eine Kollision in einer Minute fand! Diese Methode wurde "Tunneling" genannt. Im Jahr 2008 wurde auf dem Chaos Communication Congress ein Artikel über die Methode zur Generierung von X.509 gefälschten Zertifikaten vorgestellt. Tatsächlich war dies der erste Fall von echten Kollisionen im MD5-Algorithmus.

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

Viel Arbeit wurde auch gemacht, um das Knacken von Hashes zu beschleunigen. Im Jahr 2007 stellte Kevin Breeze ein Programm vor, das Sony PlayStation3 zum Hacken von MD5 einsetzt. Es gelang ihm, sehr gute Ergebnisse zu erzielen: 1,4 Milliarden MD5-Hashes wurden in nur einer Sekunde generiert! 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, insbesondere wenn es mit Hilfe mehrerer Videokarten gleichzeitig ausgefü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 aufgrund der fehlenden Stabilität dieses Algorithmus für die Suche nach Kollisionen inakzeptabel.

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, diesen nicht zu verwenden. Meiner Meinung nach hat MD5 dieses Dokument offiziell beendet.

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

Übrigens hat NIST am 31. Oktober 2008 einen Wettbewerb unter den Kryptographen angekündigt. Das Ziel des Wettbewerbs ist es, einen Hash-Algorithmus zu entwickeln, der das obsolete SHA1 und SHA2 ersetzt. Im Moment sind die Finalisten bereits definiert - das sind BLAKE, Gostl, JH, Keccak und Skein.

Ighashgpu: Hacking mit GPU

Aber genug Theorie. Lasst uns mit dem Geschäft beginnen und direkt über das Hacken unseres bevorzugten Algorithmus sprechen. Angenommen, wir hatten einen Hash einer Art Passwort: d8578edf8458ce06fbc5bb76a58c5ca4.

Um diesen Hash zu knacken, schlage ich vor, das Programm Ighashgpu zu verwenden, das von www.golubev.com heruntergeladen oder auf unserer Festplatte gefunden werden kann. Das Dienstprogramm wird komplett kostenlos zur Verfügung gestellt und arbeitet leise unter Windows. Um den Prozess des Hackens zu beschleunigen, verwendet Ighashgpu eine GPU, so dass Sie mindestens eine nVidia- oder ATI-Grafikkarte mit CUDA / ATI Stream-Unterstützung benötigen.

Moderne Grafikprozessoren basieren auf einer etwas anderen Architektur als herkömmliche CPUs und sind daher wesentlich effizienter in der Verarbeitung von Grafikinformationen. Obwohl GPUs für den Umgang mit 3D-Grafiken ausgelegt sind, gab es in den letzten Jahren einen Trend zu ihrer Verwendung für herkömmliche Berechnungen. Beginnen Sie mit dem Programm zu arbeiten, ist nicht einfach, aber sehr einfach: entpacken Sie das Archiv an einen beliebigen Ort auf der Festplatte und starten Sie Einbruch über die Befehlszeile Windows:

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

Wir verwenden die obige Methode, um einen spezifischen Hash zu knacken, der vom MD5-Algorithmus generiert wurde. Die maximale Länge eines möglichen Passworts beträgt sieben Zeichen. Nach einiger Zeit wird das Passwort gefunden (qwerty). Jetzt versuchen wir einen anderen Hash zu knacken, aber mit etwas anderen Bedingungen. Unser Hash hat die Form d11fd4559815b2c3de1b685bb78a6283, enthält aber Buchstaben, Zahlen, Unterstriche und das Suffix "_admin". In diesem Fall können wir die Passwortsuche 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 für die Brute Force verwendeten Zeichensatz angeben und der Parameter '-m' legt die Passwortmaske fest. In unserem Fall besteht die Maske aus sechs beliebigen Zeichen, gefolgt von einer Kombination aus "_admin". Die Wahl des Passworts wird auch nicht schwierig sein.

Kollisionen - eine Kollision in der Kryptographie heißt zwei verschiedene Eingabedatenblöcke, die für dieselbe Hash-Funktion denselben Hash liefern. Jede Ausgabefunktion erzeugt eine Folge von Bits einer bestimmten Länge, die nicht von der Größe der Originaldaten abhängt. Daraus folgt, dass es für jeden Hash-Algorithmus Kollisionen gibt. Die Wahrscheinlichkeit, dass Sie in einem "guten" Algorithmus eine Kollision finden können, ist jedoch praktisch null. Leider oder zum Glück, Hash-Algorithmen können Fehler enthalten, wie jedes Programm. Viele Hashfunktionen sind entweder gebrochen oder werden bald sein. In diesem Fall bedeutet "Brechen" eine Kollision in einer Zeit zu finden, die viel geringer als die deklarierte Unendlichkeit ist.

Ighashgpu: Listen

Jetzt versuchen wir, mehrere Passwörter gleichzeitig 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, wird die Datei ighashgpu_results.txt im Ordner Ighashgpu mit den geknoteten Kennwörtern angezeigt:

f0b46ac8494b7761adb7203aa7776c2a:1rootxc00l
f2da202a5a215b66995de1f9327dbaa6:pwd12xc00l
c7f7a34bbe8f385faa89a04a9d94dacf:pwd34yc00l

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

Ighashgpu: Salz

Lassen Sie uns schließlich den "gesalzenen" Hash knacken. Angenommen, ein Hash wird mit folgendem Algorithmus generiert:

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

Als Ergebnis haben wir den folgenden Hash erhalten: 42151cf2ff27c5181bb36a8bcfafea7b. Mit Ighashgpu können Sie "salt" im Parameter "-asalt" angeben:

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

Und wir haben das erforderliche Passwort einfach und schnell wieder.

Unterhaltsame Mathematik - Für das 8-stellige Passwort, bestehend aus den ersten 126 ASCII-Zeichen, stehen 63 527 879 748 485 376 mögliche Kombinationen zur Verfügung. Für 254 Zeichen erhöht sich die Zahl der möglichen Kombinationen auf 17 324 859 956 700 833 536, was 2,7 Milliarden Mal mehr ist als die Menschen auf unserem Planeten. Wenn Sie eine Textdatei mit all diesen Kennwörtern erstellen, werden Millionen von Terabyte benötigt. Natürlich ist dies in der modernen Welt möglich, aber die Kosten für die Speicherung einer solchen Datei werden einfach transzendental sein.

Einbruch von MD5 im Turbo-Modus

Hacking-Hashes durch eine vollständige Suche selbst auf der besten Hardware benötigen ziemlich viel Zeit, insbesondere wenn das Passwort mehr als acht Zeichen lang ist. Der einfachste Weg, um die Geschwindigkeit des Passwortvergleichs zu erhöhen, besteht darin, eine Datenbank mit allen Hashwerten für einen bestimmten Zeichensatz zu erstellen. In den 80ern des letzten Jahrhunderts glaubten Hacker, dass eine solche Basis, wenn sie leistungsfähigere Hardware, 640 KByte Speicher und eine 10 MByte Festplatte haben, Realität wird und die Auswahl eines beliebigen Passworts zu einer winzigen Angelegenheit wird. Jedoch entwickelte sich Eisen, und der Traum blieb ein Traum. Die Situation änderte sich erst im August 2003, nachdem Philip Oeslin, Ph.D. in Computernetzwerken der ETH Lausanne, seine Arbeit über das Problem der Wahl des optimalen Zeit-zu-Zeit-Verhältnisses veröffentlicht hatte. Es beschreibt die Methode des Hacks von Hash-Funktionen mit Hilfe von "Rainbow" -Tabellen.

Das Wesen der neuen Methode ist wie folgt. Zuerst müssen Sie ein beliebiges Passwort auswählen, das dann gehasht und einer Reduzierungsfunktion unterzogen wird, die den Hash in ein beliebiges Passwort umwandelt (zum Beispiel können es die ersten 64 Bits des ursprünglichen Hashs sein). Als nächstes wird eine Kette möglicher Passwörter konstruiert, aus der das erste und das letzte Element ausgewählt werden. Sie sind auf den Tisch geschrieben. Um das Passwort wiederherzustellen, wenden wir die Reduktionsfunktion auf den Quell-Hash an und suchen nach dem möglichen Passwort in der Tabelle. Wenn es kein solches Passwort in der Tabelle gibt, werden wir es hacken und das nächste mögliche Passwort berechnen. Die Operation wird wiederholt, bis in der Rainbow-Tabelle ein Passwort gefunden wurde. Dieses Passwort stellt das Ende einer der Zeichenfolgen dar. Um das ursprüngliche Passwort zu finden, müssen Sie die gesamte Konversation erneut ausführen. Eine solche Operation dauert nicht viel Zeit, abhängig vom Kettenkonstruktionsalgorithmus, dauert es normalerweise einige Sekunden oder Minuten. Mit "Rainbow" -Tabellen können Sie den Speicherverbrauch im Vergleich zur herkömmlichen Suche erheblich reduzieren. Der einzige Nachteil der beschriebenen Methode ist, dass es ziemlich lange dauert, Tabellen zu erstellen.

Lassen Sie uns nun von Worten zu Taten übergehen und versuchen, mit dieser Methode ein paar Passwort-Hashs zu knacken.

Rainbow-Tabellen - Rainbow-Tabellen - Dies ist eine spezielle Art von Wörterbuch, das eine Kette von Passwörtern enthält und es Ihnen ermöglicht, ein Passwort in wenigen Sekunden oder Minuten mit einer Wahrscheinlichkeit von 85-99% auszuwählen.

"Schillerndes" Hacken

Zuerst müssen Sie sich für das Programm entscheiden. Persönlich mag ich den RainbowCrack, der kostenlos ist und sowohl auf Windows als auch auf Linux funktioniert. Es unterstützt vier Hash-Algorithmen: LN / NTLM, MD5 und SHA1. Das Programm erfordert keine Installation, sondern entpacken Sie es irgendwo auf der Festplatte. Nach dem Entpacken müssen Sie die "Rainbow" -Tabellen für den MD5-Algorithmus finden. Hier ist alles nicht so einfach: Sie können sie entweder kostenlos herunterladen oder kaufen oder selbst erzeugen. Eines der größten Archive freier Tische ist auf der Projekt-Website von Free Rainbow Tables verfügbar.

Sie können das Projekt übrigens auch unterstützen, wenn Sie den Client von der Site 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 Algorithmen MD5, SHA1, LM und NTLM auf dieser Site verfügbar. Wenn Sie nicht die Möglichkeit haben, diese Menge an Informationen zusammenzuführen, können Sie auf derselben Website Discs mit "Rainbow" -Tabellen bestellen. Im Moment gibt es drei Pakete: LN / NTLM, MD5 und SHA1 - jeweils 200 US-Dollar. Wir werden die Tische selbst erstellen. Dazu müssen Sie das Programm rtgen verwenden, welches Teil von RainbowCrack ist. Es benötigt die folgenden Eingabeparameter:

  • hash_algorithm - Hash-Algorithmus (LM, NTLM, MD5 oder SHA1);
  • Zeichensatz - Einer der Zeichensätze in der Datei charset.txt;
  • plaintextlenmin und plaintextlenmax - die minimale und maximale Länge des Passworts;
  • tableindex, chainlen, chainnum und partindex sind die "magischen Zahlen", die in dem Artikel von Philip Oeschlin beschrieben sind

Betrachten wir die letzten Parameter genauer:

  1. table_index - der Index der "rainbow" -Tabelle, die verwendet werden kann, wenn die Tabelle in mehrere Dateien aufgeteilt wird. Ich habe 0 verwendet, da meine Tabelle nur aus einer Datei bestand.
  2. chain_len - Die Anzahl der eindeutigen 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 Ersteller des Programms werden gebeten, nur diese Nummer als diesen Parameter zu verwenden (ich habe 0 verwendet). Führen Sie nun die Generierung der Rainbow-Tabelle für MD5 aus:
rtgen.exe md5 loweralpha-numeric 1 7 0 2000 97505489 0

In diesem Fall erstellen wir eine Tabelle mit Passwörtern, die aus Ziffern und Großbuchstaben des lateinischen Alphabets besteht und eine Länge von ein bis sieben Zeichen hat. Dieser Prozess dauerte auf meinem Eee PC mit dem Intel Atom N450 Prozessor 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. Führen Sie dazu rtsort.exe aus:

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

Wir warten ein paar Minuten und der Tisch ist fertig! Jetzt können Sie das Passwort selbst brechen. Zuerst versuchen wir, das Passwort für einen Hash zu finden: d8578edf8458ce06fbc5bb76a58c5ca4. Führen Sie rcrack_gui.exe aus und klicken Sie im Menü Datei auf Hash hinzufügen .... Geben Sie im erscheinenden Fenster einen Hash ein und klicken Sie auf OK. Wählen Sie nun die Datei mit der Rainbow-Tabelle aus. Verwenden Sie dazu den Eintrag Regenbogen-Tabellen durchsuchen ... im Menü Regenbogen-Tabelle. Suchen Sie in dem sich öffnenden Fenster nach einer Datei, suchen Sie nach der Datei mit der Tabelle. Ich habe sie md5_loweralpha-numeric # 1-7_0_2000x97505489_0.rt, und klicken Sie dann auf Öffnen. Ein paar Sekunden später liegt das Passwort in unseren Händen! Eine ähnliche Operation kann auf der Hash-Liste aus der Datei ausgeführt werden.

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

"Rainbow" -Tabellen vs. CPU vs. GPU

Ich denke, Sie haben bemerkt, wie schnell Ighashgpu in der Lage ist, MD5-Hashes mit brutaler Gewalt zu knacken, und dass RainbowCrack es mit einem guten Rainbow-Tisch noch schneller macht. Ich beschloss, die Geschwindigkeit dieser Programme zu vergleichen. Für die Reinheit des Experiments verwendete ich das MDCrack-Programm, das das Passwort auf der CPU manipuliert (und eines der besten unter diesen Programmen ist). Hier ist was für die GPU (nVidia GeForce GT 220M), CPU (Intel Atom N450, zwei Kerne) und "Rainbow" Tabellen passiert:

Длина пароля | 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, ist die Geschwindigkeit der Suche mit der CPU viel geringer als bei Verwendung von GPU- oder "Rainbow" -Tabellen. Außerdem können Sie mit den meisten spezialisierten Programmen einen Cluster von Videokarten erstellen, sodass die Geschwindigkeit der Passwortauflistung um ein Vielfaches ansteigt. Ich denke, Sie haben bemerkt, dass die Geschwindigkeit, mit der Sie das 4- und 5-stellige Passwort anpassen, geringer ist als die Geschwindigkeit, mit der Sie ein Passwort mit sechs oder sieben Zeichen auswählen können. Dies liegt daran, dass die Passwortsuche erst gestartet wird, nachdem die Tabelle in den Speicher geladen wurde. Es stellt sich heraus, dass durchschnittlich 16 Sekunden im Durchschnitt dreizehn für das Herunterladen und drei für das Hacken eines Hash ausgegeben werden.

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

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

bit.ly/vTSB9K - Beschreibung des Formats der Rainbow-Tabelle.

Anstatt zu schließen

Am Ende möchte ich ein wenig über den Schutz Ihrer Passwörter sprechen. Verwenden Sie zunächst keine verwundbaren Hash-Algorithmen wie MD5 oder SHA1. An dieser Stelle ist es sinnvoll, eine der kryptographischen Hash-Funktionen SHA2 oder SHA3 zu verwenden (sobald der entsprechende Standard veröffentlicht ist). Zweitens, verwenden Sie keine Hash-Funktionen direkt. Versuchen Sie immer, "Salz" zu verwenden und verschiedene Algorithmen zu kombinieren. Und drittens, wählen Sie komplexe beliebige Passwörter mit einer Länge von mindestens acht Zeichen. Dies wird Sie natürlich nicht vor dem Hacken 100% schützen, aber zumindest das Leben von Eindringlingen erschweren.