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

Alle MD5-Hacking-Methoden

Nach Thema:


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

Es ist kein Geheimnis, dass die Kryptographie fest in unser Leben eingedrungen ist. Internetdienste, soziale Netzwerke, mobile Geräte - alle speichern Benutzerpasswörter, die mit verschiedenen Algorithmen verschlüsselt wurden, in ihren Datenbanken.

Der derzeit beliebteste Algorithmus ist natürlich MD5.

Auf die Methoden des Hackens und wird eingegangen.

Ein bisschen über Kryptographie

Die moderne Kryptografie umfasst drei Bereiche: Verschlüsselung mit privatem Schlüssel, Verschlüsselung mit öffentlichem Schlüssel und Hashing. Heute werden wir darüber sprechen, was Haschisch ist und womit es gegessen wird.

Unter Hashing wird im Allgemeinen die Umwandlung von Eingabedaten beliebiger Länge in eine Ausgabebitfolge fester Länge verstanden. In den meisten Fällen werden Hash-Funktionen bei der Benutzerauthentifizierung (ein Passwort-Hash wird normalerweise in der Datenbank anstelle des Passworts selbst gespeichert) und bei der Berechnung von Prüfsummen für Dateien, Datenpakete usw. verwendet.

Einer der bekanntesten und am weitesten verbreiteten Hashalgorithmen ist MD5.

Starten Sie

Der MD5-Algorithmus ist ein 128-Bit-Hashing-Algorithmus. Dies bedeutet, dass ein 128-Bit-Hash für einen beliebigen Datensatz berechnet wird, der an seinem Eingang ankommt. 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 bei RFC 1321 veröffentlicht. Danach wurde MD5 verwendet, um verschiedene Aufgaben zu lösen, vom Hashing von Passwörtern in CMS bis zur Erstellung von digitalen Signaturen und SSL-Zertifikaten.

Die Tatsache, dass der MD5-Algorithmus gehackt werden kann, wurde erstmals 1993 angesprochen. Die Forscher Bert den Boer und Anton Bossilaris zeigten, dass im Algorithmus Pseudokollisionen möglich sind. Drei Jahre später, 1996, veröffentlichte Hans Dobbertin einen Artikel, in dem er die Existenz von Kollisionen nachwies und die theoretische Möglichkeit des Hackens von MD5 beschrieb. Es war noch kein Hack, aber die Welt begann über die Notwendigkeit zu sprechen, auf zuverlässigere Hashalgorithmen wie SHA1 (zum Zeitpunkt des Schreibens war bereits bewiesen, dass dieser Algorithmus Kollisionen enthält, daher empfehle ich die Verwendung von SHA2) oder RIPEMD-160 umzusteigen.

Erste Angriffe

Die sofortige Spaltung von MD5 begann am 1. März 2004. CertainKey Cryptosystems hat MD5CRK, ein verteiltes Kollisionserkennungssystem, auf den Markt gebracht. Ziel des Projekts war es, zwei Nachrichten mit identischen Hash-Codes zu finden. Das Projekt endete am 24. August 2004, als vier unabhängige Forscher - Wang Xiaoyun, Feng Denguo, Lai Xuejia und Yu Hongbo - die Sicherheitslücke des Algorithmus entdeckten, die es ermöglicht, Kollisionen mithilfe einer Analysemethode in mehr oder weniger angemessener Zeit zu finden. Mit dieser Methode können Kollisionen auf dem IBM p690-Cluster in nur einer Stunde identifiziert werden (schade, dass ich kein solches Zuhause habe).

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

Am 1. März 2005 wurde der erste Einsatz dieser Sicherheitsanfälligkeit in der Praxis demonstriert. Ein Forscherteam präsentierte zwei X.509-Zertifikate mit unterschiedlichen Schlüsselsätzen, aber identischen Prüfsummen. Im selben Jahr veröffentlichte Vlastimil Klima einen Algorithmus zur Erkennung von Kollisionen auf einem normalen Laptop in wenigen Stunden. 2006 ging er weiter. Am 18. März 2006 enthüllte der Forscher einen Algorithmus, der Kollisionen in einer Minute findet! Diese Methode wird "Tunneling" genannt. Im Jahr 2008 wurde auf der Konferenz des Chaos Communication Congress ein Artikel zum Generieren von gefälschten X.509-Zertifikaten vorgestellt. Tatsächlich war dies der erste Fall, in dem Kollisionen im MD5-Algorithmus tatsächlich verwendet wurden.

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

Es wurde auch viel Arbeit geleistet, um das Hacking der Hashes zu beschleunigen. 2007 stellte Kevin Breeze ein Programm vor, das die Sony PlayStation3 zum Knacken 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, wurde auf BlackHat USA ein Artikel über die Verwendung der GPU zur Suche nach Kollisionen veröffentlicht, der es ermöglichte, die Geschwindigkeit mehrmals zu erhöhen, insbesondere wenn mehrere Grafikkarten gleichzeitig verwendet wurden.

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 nicht akzeptabel.

Dies ist das Ende?

Im Jahr 2011 stimmte die IETF der Änderung von RFC 1321 (MD5) und RFC 2104 (HMAC-MD5) zu. So entstand RFC 6151. Es erkennt den MD5-Verschlüsselungsalgorithmus als unsicher und rät von dessen Verwendung ab. Meiner Meinung nach hat dieses Dokument MD5 offiziell ein Ende gesetzt.

Trotz der Tatsache, dass der MD5-Algorithmus offiziell als unsicher anerkannt wurde, gibt es Tausende, wenn nicht Zehntausende von Anwendungen, die ihn zum Speichern von Passwörtern, für elektronisch-digitale Signaturen und zum Berechnen von Prüfsummen von Dateien verwenden.

Übrigens hat NIST am 31. Oktober 2008 einen Wettbewerb unter Kryptographen ausgeschrieben. Ziel des Wettbewerbs ist die Entwicklung eines Hashing-Algorithmus zum Ersetzen von veraltetem SHA1 und SHA2. Im Moment stehen die Finalisten bereits fest - das sind BLAKE, Gostl, JH, Keccak und Skein.

Ighashgpu: GPU-Hacking

Aber genug Theorie. Kommen wir zur Sache und sprechen wir direkt über das Hacken unseres Lieblingsalgorithmus. Angenommen, wir hatten einen Passwort-Hash: d8578edf8458ce06fbc5bb76a58c5ca4.

Um diesen Hash zu brechen, schlage ich die Verwendung des Programms Ighashgpu vor, das von www.golubev.com heruntergeladen oder auf unserer Festplatte gefunden werden kann. Das Dienstprogramm wird völlig kostenlos verteilt und läuft unter Windows leise. Um den Prozess des Brechens eines Hashs 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, sodass sie Grafikinformationen wesentlich effizienter verarbeiten. Obwohl GPUs für dreidimensionale Grafiken ausgelegt sind, gab es in den letzten Jahren die Tendenz, sie für gewöhnliche Computer zu verwenden. Der Einstieg in das Programm ist nicht einfach, aber sehr einfach: Entpacken Sie das Archiv an eine beliebige Stelle auf der Festplatte und starten Sie das Hacken über die Windows-Befehlszeile:

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

Wir verwenden die obige Methode, um in einen bestimmten Hash aufzubrechen, der mit dem MD5-Algorithmus generiert wurde. Die maximal mögliche Kennwortlänge beträgt sieben Zeichen. Nach einiger Zeit wird das Passwort gefunden (qwerty). Versuchen wir nun, einen anderen Hash zu knacken, allerdings unter etwas anderen Bedingungen. Unser Hash hat die Form d11fd4559815b2c3de1b685bb78a6283 und enthält Buchstaben, Zahlen, Unterstriche und das Suffix "_admin". In diesem Fall können wir die Programmaufgabe mit Brute Force by Mask vereinfachen:

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

Hier können Sie mit dem Parameter '-u' die bei der Suche verwendeten Zeichen festlegen und mit dem Parameter '-m' die Passwortmaske festlegen. In unserem Fall besteht die Maske aus sechs beliebigen Zeichen, gefolgt von der Kombination "_admin". Die Passwortauswahl ist auch nicht schwierig.

Kollisionen - Eine Kollision in der Kryptographie bezieht sich auf zwei verschiedene Eingabedatenblöcke, die für dieselbe Hash-Funktion denselben Hash ergeben. Jede Ausgabefunktion gibt eine Folge von Bits einer bestimmten Länge an, die nicht von der Größe der Originaldaten abhängt. Daraus folgt, dass für jeden Hashing-Algorithmus Kollisionen existieren. Die Wahrscheinlichkeit, dass Sie im "guten" Algorithmus eine Kollision finden, geht jedoch fast gegen Null. Leider oder glücklicherweise können Hashing-Algorithmen wie jedes andere Programm Fehler enthalten. Viele Hash-Funktionen sind entweder defekt oder werden es bald sein. In diesem Fall bedeutet "Zusammenbrechen", dass eine Kollision in einer Zeit gefunden wird, die viel kürzer als die angegebene Unendlichkeit ist.

Ighashgpu: Listen

Versuchen wir nun, mehrere Passwörter gleichzeitig zu knacken. Angenommen, wir haben eine Passwort-Passwort-Datenbank in unseren Händen. Es ist bekannt, dass jedes Passwort mit c00l Zeichen 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

Nach Abschluss des Programms wird die Datei ighashgpu_results.txt mit den gehackten Passwörtern im Ordner Ighashgpu 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 zum Schluss den "gesalzenen" Hasch knacken. Angenommen, der Hash wird mit dem folgenden 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 Passwort schnell und einfach wiederbekommen.

Unterhaltsame Mathematik - Für ein 8-stelliges Passwort, das aus den ersten 126 ASCII-Zeichen besteht, stehen 63.527.879.748.485.376 mögliche Kombinationen zur Verfügung. Bei 254 Zeichen erhöht sich die Anzahl der möglichen Kombinationen auf 17 324 859 956 700 833 536, was bereits 2,7 Milliarden Mal mehr ist als bei Menschen auf unserem Planeten. Wenn Sie eine Textdatei mit all diesen Passwö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 sind einfach transzendent.

Hacking MD5 im Turbo-Modus

Das Hacken von Hashes durch Busting selbst auf der besten Hardware nimmt viel Zeit in Anspruch, insbesondere wenn das Kennwort mehr als acht Zeichen umfasst. Die einfachste Möglichkeit, die Geschwindigkeit des Erratens von Kennwörtern zu erhöhen, besteht darin, eine Datenbank mit allen Hashes für einen bestimmten Zeichensatz zu erstellen. In den 80er Jahren des letzten Jahrhunderts glaubten Hacker, dass bei einer leistungsstärkeren Hardware, 640 KB Arbeitsspeicher und einer 10 MB großen Festplatte eine solche Basis Realität werden und die Auswahl eines Passworts zu einer winzigen Angelegenheit werden würde. Eisen entwickelte sich jedoch, und der Traum blieb ein Traum. Die Situation änderte sich erst im August 2003, nachdem Philip Oashlin, Ph.D. in Computernetzwerken vom Schweizerischen Institut für Technologie in Lausanne, seine Arbeit über das Problem der Wahl des optimalen Verhältnisses zwischen Ort und Zeit veröffentlicht hatte. Es wurde die Methode zum Hacken von Hash-Funktionen mithilfe von "Rainbow" -Tabellen beschrieben.

Das Wesen der neuen Methode ist wie folgt. Zuerst müssen Sie ein beliebiges Passwort auswählen, das dann gehasht und von einer Reduktionsfunktion beeinflusst wird, die den Hash in ein mögliches Passwort umwandelt (zum Beispiel können es die ersten 64 Bit des ursprünglichen Hash sein). Als nächstes wird eine Kette von möglichen Passwörtern erstellt, aus denen das erste und das letzte Element ausgewählt werden. Sie werden in einer Tabelle aufgezeichnet. Wenden Sie zum Wiederherstellen des Kennworts die Reduktionsfunktion auf den Quell-Hash an und suchen Sie in der Tabelle nach dem resultierenden möglichen Kennwort. Wenn die Tabelle kein solches Kennwort enthält, wird es gehasht und das nächstmögliche Kennwort berechnet. Der Vorgang wird solange wiederholt, bis das Passwort in der "Regenbogen" -Tabelle gefunden wurde. Dieses Passwort ist das Ende einer der Ketten. Um das ursprüngliche Kennwort zu finden, müssen Sie die gesamte Kette erneut ausführen. Ein solcher Vorgang benötigt nicht viel Zeit, je nach Kettenkonstruktionsalgorithmus sind es normalerweise einige Sekunden oder Minuten. Regenbogentabellen können den Speicherbedarf im Vergleich zur herkömmlichen Suche erheblich reduzieren. Der einzige Nachteil der beschriebenen Methode ist, dass das Erstellen der Tabellen ziemlich viel Zeit in Anspruch nimmt.

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

Regenbogentabellen - "Regenbogentabellen" sind ein spezielles Wörterbuch, das Kennwortketten enthält und es Ihnen ermöglicht, ein Kennwort innerhalb weniger Sekunden oder Minuten mit einer Wahrscheinlichkeit von 85–99% zu ermitteln.

"Regenbogen" hacken

Zuerst müssen Sie sich für das Programm entscheiden. Persönlich mag ich RainbowCrack, das kostenlos ist und sowohl unter Windows als auch unter Linux funktioniert. Es werden vier Hash-Algorithmen unterstützt: LN / NTLM, MD5 und SHA1. Das Programm muss nicht installiert werden, sondern muss nur irgendwo auf der Festplatte entpackt werden. Nach dem Auspacken müssen die Regenbogentabellen für den MD5-Algorithmus gefunden werden. Hier ist nicht alles so einfach: Sie können sie entweder kostenlos herunterladen, kaufen oder selbst generieren. Eines der größten Archive mit freien Tischen ist auf der Projektsite von Free Rainbow Tables verfügbar.

Übrigens können Sie dem Projekt auch helfen, wenn Sie einen Client von der Site herunterladen und sich einem verteilten internationalen Netzwerk anschließen, das Regenbogentabellen generiert. Zum Zeitpunkt des Schreibens waren auf dieser Site bereits 3 TB-Tabellen für MD5-, SHA1-, LM- und NTLM-Algorithmen verfügbar. Wenn Sie nicht die Möglichkeit haben, diese Menge an Informationen zusammenzuführen, können Sie auf derselben Site Datenträger mit "Regenbogentabellen" bestellen. Derzeit gibt es drei Pakete: LN / NTLM, MD5 und SHA1 - für jeweils 200 USD. Wir werden die Tabellen selbst generieren. Dazu müssen Sie das in RainbowCrack enthaltene Programm rtgen verwenden. Es werden folgende Eingabeparameter verwendet:

  • hash_algorithm - Hashing-Algorithmus (LM, NTLM, MD5 oder SHA1);
  • Zeichensatz ist einer der Zeichensätze in der Datei charset.txt.
  • plaintextlenmin und plaintextlenmax - die minimale und maximale Passwortlänge;
  • tableindex, chainlen, chainnum und partindex - "magische Zahlen", beschrieben im Artikel von Philip Oashlin

Betrachten Sie die letzten Parameter genauer:

  1. table_index ist der Index der Regenbogentabelle, der beim Aufteilen der Tabelle in mehrere Dateien verwendet werden kann. Ich habe 0 verwendet, weil meine Tabelle nur aus einer Datei bestand.
  2. chain_len - Die Anzahl der eindeutigen Kennwö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 definiert. Die Ersteller des Programms werden gebeten, nur eine Zahl als diesen Parameter zu verwenden (ich habe 0 verwendet). Jetzt starten wir die Erzeugung der "Regenbogen" -Tabelle für MD5:
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 besteht und eine Länge von 1 bis 7 Zeichen hat. Auf meinem Eee-PC mit einem Intel Atom N450-Prozessor dauerte dieser Vorgang fast zwei Tage :) . Am Ende erhielt 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 von uns benötigten 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 die Passwörter selbst knacken. Versuchen wir zunächst, 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. Geben Sie im angezeigten Fenster den Hash ein und klicken Sie auf OK. Wählen Sie nun die Datei mit der "Regenbogen" -Tabelle aus. Verwenden Sie dazu den Eintrag Regenbogentabellen durchsuchen ... im Menü Regenbogentabelle. In dem Fenster, das sich öffnet, um eine Datei auszuwählen, suchen Sie nach einer Datei mit einer Tabelle. Ich habe diese md5_loweralpha-numeric # 1-7_0_2000x97505489_0.rt und klicken Sie dann auf Öffnen. Nach ein paar Sekunden ist das Passwort in unseren Händen! Eine ähnliche Operation kann für die Liste der Hashes aus einer Datei ausgeführt werden.

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

Regenbogentische vs. CPU vs. GPU

Ich glaube, Sie haben darauf geachtet, wie schnell Ighashgpu in der Lage ist, MD5-Hashes durch umfassende Suche zu durchbrechen, und dass RainbowCrack es mit einem guten Regenbogentisch noch schneller macht. Ich habe beschlossen, die Geschwindigkeit dieser Programme zu vergleichen. Für die Reinheit des Experiments habe ich das MDCrack-Programm verwendet, das ein Kennwort für die CPU ausführt (und eines der besten Programme dieses Typs ist). Hier ist das Ergebnis für die GPU (nVidia GeForce GT 220M), die CPU (Intel Atom N450, zwei Kerne) und die Regenbogentabellen:

Длина пароля | 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 Suchgeschwindigkeit bei Verwendung der CPU viel geringer als bei Verwendung einer GPU oder einer "Regenbogen" -Tabelle. Darüber hinaus können Sie mit den meisten Spezialprogrammen eine Gruppe von Grafikkarten erstellen, wodurch sich die Geschwindigkeit, mit der das Kennwort durchsucht wird, um ein Vielfaches erhöht. Ich denke, Sie haben festgestellt, dass die Geschwindigkeit, mit der 4- und 5-stellige Passwörter abgerufen werden, geringer ist als die Geschwindigkeit, mit der ein Passwort mit sechs oder sieben Zeichen abgerufen wird. Dies liegt daran, dass die Passwortsuche erst beginnt, nachdem die Tabelle in den Speicher geladen wurde. Es stellt sich heraus, dass von durchschnittlich sechzehn Sekunden dreizehn für das Herunterladen und drei für das Brechen eines Hashs aufgewendet werden.

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

bit.ly/vEhdir - Fügt RainbowCrack mithilfe der API einen neuen Hash-Algorithmus hinzu.

bit.ly/vTSB9K - eine Beschreibung des Formats der "Regenbogen" -Tabelle.

Anstelle des Abschlusses

Zum Schluss möchte ich ein wenig über den Schutz Ihrer Passwörter sprechen. Verwenden Sie zunächst keine anfälligen Hashing-Algorithmen wie MD5 oder SHA1. Momentan lohnt es sich, über die Verwendung einer der kryptografischen Hash-Funktionen SHA2 oder SHA3 nachzudenken (sobald der entsprechende Standard veröffentlicht ist). Zweitens, verwenden Sie Hashing-Funktionen nicht direkt. Versuchen Sie immer, "salt" 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. Dies schützt Sie natürlich nicht zu 100% vor Hackerangriffen, verkompliziert aber zumindest das Leben von Eindringlingen.