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 Kryptographie zu einem Teil unseres Lebens geworden ist. Internetdienste, soziale Netzwerke, mobile Geräte - sie alle speichern in ihren Datenbanken Benutzerkennwörter, die mit verschiedenen Algorithmen verschlüsselt sind.

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

Über Weisen seines Brechens und es wird eine Rede geben.

Ein wenig über Kryptographie

Moderne Kryptographie umfasst drei Richtungen: Verschlüsselung mit einem privaten Schlüssel, Verschlüsselung mit öffentlichen Schlüsseln und Hashing. Heute werden wir darüber sprechen, was Hashing ist und was es gegessen hat.

Unter Hashing wird im Allgemeinen die Umwandlung von Eingangsdaten beliebiger Länge in eine Ausgangsbitkette fester Länge verstanden. Meistens werden Hash-Funktionen im Prozess der Benutzerauthentifizierung verwendet (die Datenbank speichert normalerweise einen Hash des Kennworts anstelle des Kennworts selbst) und für die Berechnung von Prüfsummen von Dateien, Datenpaketen und so weiter.

Einer der bekanntesten und am weitesten verbreiteten Hashalgorithmen ist MD5.

Der Anfang

Der MD5-Algorithmus ist ein 128-Bit-Hash-Algorithmus. Dies bedeutet, dass es einen 128-Bit-Hash für eine beliebige Menge von Daten berechnet, 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 zuerst im April 1992 in RFC 1321 veröffentlicht. Danach wurde MD5 verwendet, um eine Vielzahl von Aufgaben zu lösen, von Hash-Passwörtern über CMS bis hin zur Erstellung 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 beschrieb, MD5 zu hacken. Es wurde noch nicht gehackt, aber die Welt begann über die Notwendigkeit zu sprechen, zu zuverlässigeren Hash-Algorithmen zu wechseln, zum Beispiel SHA1 (zum Zeitpunkt des Schreibens wurde bereits bewiesen, dass es Kollisionen in diesem Algorithmus gibt, so 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, ein verteiltes Kollisionssuchsystem, gestartet. Ziel des Projekts war es, nach zwei Nachrichten 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 Verwundbarkeit des Algorithmus entdeckten, der es ermöglicht, Kollisionen mit analytischen Methoden für mehr oder weniger akzeptable Zeit zu finden. Mit dieser Methode ist es möglich, Kollisionen innerhalb von nur einer Stunde auf einem IBM p690-Cluster zu erkennen (es ist schade, dass ich kein solches Haus habe).

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

Am 1. März 2005 wurde der erste Einsatz dieser Schwachstelle in der Praxis demonstriert. Das Forschungsteam hat zwei X.509-Zertifikate mit unterschiedlichen Schlüsselsätzen mit identischen Prüfsummen eingereicht. Im selben Jahr veröffentlichte Vlastimil Klima einen Algorithmus, der es ermöglicht, Kollisionen auf einem normalen Laptop in wenigen Stunden zu erkennen. 2006 fuhr er fort. 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, in dem Kollisionen im MD5-Algorithmus tatsächlich verwendet wurden.

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

Es wurde auch viel Arbeit geleistet, um das Brechen von Hashes zu beschleunigen. Im Jahr 2007 stellte Kevin Breeze ein Programm vor, das Sony PlayStation3 zum Hacken von MD5 verwendet. Er erzielte sehr gute Ergebnisse: 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 zur Suche nach Kollisionen, die es ermöglichte, ihre Geschwindigkeit mehrmals zu erhöhen, insbesondere wenn sie mit Hilfe von mehreren Grafikkarten gleichzeitig ausgeführt wurde.

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

Dies ist das Ende?

Im Jahr 2011 stimmte die IETF der Änderung von RFC 1321 (MD5) und RFC 2104 (HMAC-MD5) zu. So erschien das Dokument RFC 6151. Er erkennt den MD5-Verschlüsselungsalgorithmus als unsicher und empfiehlt, ihn nicht zu verwenden. Meiner Meinung nach hat dieses Dokument MD5 offiziell ein Ende gesetzt.

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

Übrigens hat NIST am 31. Oktober 2008 einen Wettbewerb unter Kryptographen angekündigt. Das Ziel des Wettbewerbs ist es, einen Hash-Algorithmus zu entwickeln, der die veralteten 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. Kommen wir zur Sache und sprechen direkt über das Hacken unseres Lieblingsalgorithmus. Nehmen wir an, wir hätten einen Hash eines Passwortes: 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 verteilt und arbeitet leise unter Windows. Um den Prozess des Hackens zu beschleunigen, verwendet Ighashgpu eine GPU, daher benötigen Sie mindestens eine nVidia- oder ATI-Grafikkarte mit CUDA / ATI Stream-Unterstützung.

Moderne Grafikprozessoren basieren auf einer etwas anderen Architektur als herkömmliche CPUs und sind daher viel effizienter bei der Verarbeitung von Grafikinformationen. Obwohl GPUs für 3D-Grafiken entwickelt wurden, 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 den Einbruch mit der Kommandozeile Windows:

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

Wir verwenden die obige Methode, um einen bestimmten Hash zu erzeugen, der vom MD5-Algorithmus generiert wird. Die maximale Länge eines möglichen Passwortes beträgt sieben Zeichen. Nach einiger Zeit wird das Passwort gefunden (qwerty). Jetzt versuchen wir einen weiteren Hash zu knacken, aber mit etwas anderen Bedingungen. Lassen Sie unseren Hash die Form d11fd4559815b2c3de1b685bb78a6283, aber enthält Buchstaben, Zahlen, Unterstreichung 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 angeben, der für Brute-Force verwendet wird, und der Parameter '-m' gibt die Passwortmaske an. In unserem Fall besteht die Maske aus sechs beliebigen Zeichen, gefolgt von einer Kombination aus "_admin". Die Wahl des Passwortes wird auch nicht schwierig sein.

Kollisionen - eine Kollision in der Kryptographie nennt man zwei verschiedene Eingangsdatenblöcke, die für die gleiche Hash-Funktion den gleichen Hash ergeben. 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 Kollisionen für jeden Hash-Algorithmus gibt. Die Wahrscheinlichkeit, dass Sie eine Kollision in einem "guten" Algorithmus finden können, neigt jedoch praktisch zu Null. Leider oder glücklicherweise können Hashalgorithmen wie jedes Programm Fehler enthalten. Viele Hash-Funktionen wurden entweder unterbrochen oder werden es bald sein. In diesem Fall bedeutet "brechen", eine Kollision in einer Zeit zu finden, die viel kleiner ist als die deklarierte Unendlichkeit.

Ighashgpu: Listen

Versuchen wir nun, 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 ighashgpu_results.txt-Datei im Ighashgpu-Ordner mit den geknackten Kennwörtern angezeigt:

f0b46ac8494b7761adb7203aa7776c2a:1rootxc00l
f2da202a5a215b66995de1f9327dbaa6:pwd12xc00l
c7f7a34bbe8f385faa89a04a9d94dacf:pwd34yc00l

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

Ighashgpu: Salz

Zum Schluss machen wir einen knackigen "gesalzenen" Hash. Angenommen, ein Hash wird mit dem folgenden Algorithmus generiert:

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

Als Ergebnis erhielten wir den folgenden Hash: 42151cf2ff27c5181bb36a8bcfafea7b. Ighashgpu ermöglicht es Ihnen, "Salz" im Parameter "-asalt" anzugeben:

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

Und wir haben das benötigte Passwort schnell und einfach wieder bekommen.

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 Charaktere 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 all diese Passwörter enthält, 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 sind einfach transzendent.

Einbruch von MD5 im Turbo-Modus

Hacking-Hashes durch eine vollständige Suche selbst auf der besten Hardware benötigen ziemlich viel Zeit, besonders wenn das Passwort mehr als acht Zeichen lang ist. Die einfachste Möglichkeit, die Geschwindigkeit des Kennwortabgleichs zu erhöhen, besteht darin, eine Datenbank mit allen Hashwerten für einen bestimmten Zeichensatz zu erstellen. In den 80er Jahren des vergangenen Jahrhunderts glaubten Hacker, dass sie mit leistungsfähigerer Hardware, 640 KByte Speicher und einer 10-MByte-Festplatte zur Realität werden und die Auswahl eines Passworts zu einer kleinen Angelegenheit werden wird. Eisen entwickelte sich jedoch, und der Traum blieb ein Traum. Die Situation änderte sich erst im August 2003, nachdem Philip Oeslin, Doktor der Computervernetzung an der Schweizerischen Technischen Hochschule in Lausanne, seine Arbeit über das Problem der Wahl des optimalen Zeit-zu-Zeit-Verhältnisses veröffentlicht hatte. Es beschrieb die Methode des Hackens von Hash-Funktionen mit Hilfe von "Regenbogen" -Tabellen.

Das Wesen der neuen Methode ist wie folgt. Zuerst müssen Sie ein beliebiges Kennwort auswählen, das dann gehashed und einer Reduzierungsfunktion unterzogen wird, die den Hash in ein beliebiges mögliches Kennwort konvertiert (z. B. können dies die ersten 64 Bits des ursprünglichen Hash sein). Als nächstes wird eine Kette von möglichen Passwörtern konstruiert, aus denen 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 Passwort in der Tabelle gibt, werden wir es hashen und das nächste mögliche Passwort berechnen. Die Operation wird wiederholt, bis ein Passwort in der Rainbow-Tabelle gefunden wird. Dieses Passwort repräsentiert das Ende eines der Strings. Um das ursprüngliche Kennwort zu finden, müssen Sie die gesamte Konversation erneut ausführen. Solch eine Operation benötigt nicht viel Zeit, abhängig vom Algorithmus der Kettenkonstruktion, ist es normalerweise ein paar Sekunden oder Minuten. Mit "Rainbow" -Tabellen können Sie den Speicherbedarf im Vergleich zur herkömmlichen Suche deutlich reduzieren. Der einzige Nachteil der beschriebenen Methode ist, dass es ziemlich lange dauert, um Tabellen zu erstellen.

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

Rainbow-Tabellen - "Rainbow" -Tabellen - Dies 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% 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 unter Windows als auch unter Linux funktioniert. Es unterstützt vier Hashalgorithmen: LN / NTLM, MD5 und SHA1. Das Programm erfordert keine Installation, einfach entpacken Sie es irgendwo auf der Festplatte. Nach dem Entpacken müssen Sie die "Regenbogen" -Tabellen für den MD5-Algorithmus finden. Hier ist alles nicht so einfach: Sie können sie entweder kostenlos herunterladen oder kaufen oder selbst erstellen. Eines der größten Archive mit kostenlosen Tabellen ist auf der Website des Free Rainbow Tables verfügbar.

Übrigens können Sie dem Projekt auch helfen, wenn Sie den Client von der Site herunterladen und einem verteilten internationalen Netzwerk beitreten, das "Rainbow" -Tabellen generiert. Zum Zeitpunkt der Erstellung dieses Artikels waren bereits 3 TB-Tabellen für die MD5-, SHA1-, LM- und NTLM-Algorithmen auf dieser Site verfügbar. Wenn Sie nicht die Möglichkeit haben, diese Menge an Informationen zusammenzuführen, können Sie auf der gleichen Website Disks mit "Rainbow" -Tabellen bestellen. Momentan gibt es drei Pakete: LN / NTLM, MD5 und SHA1 - jeweils 200 US-Dollar. Wir werden die Tabellen selbst generieren. Um dies zu tun, müssen Sie das Programm rtgen verwenden, das Teil von RainbowCrack ist. Es benötigt folgende Eingabeparameter:

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

Betrachten wir die letzten Parameter genauer:

  1. table_index - der Index der Tabelle "rainbow", der beim Aufteilen der Tabelle in mehrere Dateien verwendet werden kann. Ich benutzte 0, 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 Beginn 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 Kennwö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 Vorgang 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 auf ein paar Minuten und der Tisch ist fertig! Jetzt können Sie 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 den Befehl Hash hinzufügen ... aus. Geben Sie im angezeigten 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 Rainbow Tables suchen ... im Menü Rainbow Table. In dem Fenster, das sich öffnet, um eine Datei auszuwählen, suchen Sie nach der Datei mit der Tabelle, ich habe es md5_loweralpha-numeric # 1-7_0_2000x97505489_0.rt, dann klicken Sie auf Öffnen. Ein paar Sekunden später ist das Passwort in unseren Händen! Eine ähnliche Operation kann für die Hash-Liste aus der Datei ausgeführt werden.

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

"Rainbow" Tabellen im Vergleich CPU vs. GPU

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

Длина пароля | 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 geringer als mit einer GPU oder "Regenbogen" -Tabellen. Darüber hinaus können Sie mit den meisten spezialisierten Programmen einen Cluster von Grafikkarten erstellen, sodass die Geschwindigkeit der Kennwortaufzählung um ein Vielfaches zunimmt. Ich denke, Sie haben bemerkt, dass die Geschwindigkeit der Übereinstimmung der 4- und 5-stelligen Passwörter niedriger ist als die Geschwindigkeit der Auswahl eines Passworts von sechs oder sieben Zeichen. Dies liegt daran, dass die Passwortsuche erst beginnt, nachdem die Tabelle in den Speicher geladen wurde. Es stellt sich heraus, dass von sechzehn Sekunden im Durchschnitt dreizehn für das Herunterladen und drei für das Hacken eines Hashes ausgegeben werden.

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

bit.ly/vEhdir - Hinzufügen eines neuen Hashalgorithmus 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 keine verwundbaren Hash-Algorithmen wie MD5 oder SHA1. An dieser Stelle lohnt es sich, über die Verwendung einer kryptografischen SHA2- oder SHA3-Hash-Funktion nachzudenken (sobald der entsprechende Standard veröffentlicht ist). Zweitens: Verwenden Sie Hashing-Funktionen nicht 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. Das schützt Sie natürlich nicht vor 100% Hacking, sondern verkompliziert zumindest das Leben von Eindringlingen.