Unterschied zwischen einer Brute-Force-Attacke und Rainbow table?

3 Antworten

Bruteforce heißt, Du (oder eher dein Programm) probiert alles mögliche durch.

Beliebt sind hier zum Beispiel Passwörter. Und hier werden dann "Wörterbücher" benutzt um alle möglichen Passwörter zu generieren und dann gegen das System zu probieren.

Ein Rainbowtable ist da etwas anderes.

Du musst dazu wissen, dass Passwörter gerne gehasht gespeichert werden und nicht im Klartext. Einfach gesagt ist eine Hash-Funktion eine Funktion die auf einen anderen Wert abbildet. Dabei ist diese Abbildung aber nicht eindeutig. Also unterschiedliche Werte bilden auf den selben Hash ab.

Was bei dem Hash aber möglich ist, ist dass man das Passwort überprüfen kann, ohne das eigentliche Passwort im Klartext speichern zu müssen. Ein Angreifer muss also ein Passwort benutzten, welches zu dem gespeicherten Hash-Wert führt.

Und da kommen Rainbow-Tables ins Spiel. Statt Passwörter durchzuprobieren, bis man den gespeicherten Hash erwischt, klaut man den Hash-Wert und guckt dazu in eine vorher generierte Tabelle, welches "Passwort" zu dem Hash passt. Du musst wissen, die Hash-Funktionen lassen sich nicht einfach umkehren. "Passwort" wird zu einem Hash "X", aber den Hash "X" kann man nicht einfach zurück auf das "Passwort" rechnen. In der Tabelle steht aber nun der Hash "X" und daneben das Passwort. Schon kennt das Angreifer das Passwort. Die Realität ist da noch etwas komplexer, aber das ist die Grundlage davon.

Eine ganz einfache Hash-Funktion wäre zum Bespiel Modulo. Damit können Zahlen auf einen sehr kleinen Bereich von Zahlen abgebildet werden:

1%3 = 1

2%3 = 2

3%3 = 0

4%3 = 1

5%3 = 2

...

Wie Du siehst haben wir alle natürlichen Zahlen auf nur 0, 1 und 2 abgebildet/gehasht.

Für Passwörter werden dann komplexere Funktionen wie zum Beispiel MD5 benutzt.

Aber am Beispiel Modulo weißt Du nun wie eine Rainbowtable dafür aussieht, nämlich:

Hash | "Klartext"

1 | 1

2 | 2

0 | 3

Damit wird dir klar, warum niemand so eine Funktion für Passwörter benutzt.

Beim MD5 sieht das dann so aus:

Für mein Passwort "MeinSuperPasswort"

erhalte ich den hash: 9c7c743276b3da7360910a5ea438ec16

Ein Angreifer müsste nun in seiner MD5-Hashtabelle nachsehen welches Passwort zu dem Hash führt. Das wird ziemlich sicher nicht mein Passwort sein, aber eine Zeichenfolge, die eben zu dem Hash führt.

Bei solchen Rainbowtables reden wir übrigens von größen von einigen hundert GigaByte, bis hin zu einige TeraByte.

Diese Tabellen müssen erst mal generiert werden, was zeitaufwändig ist. Danach kann man sie aber "verbreiten" und beliebig oft nutzen. Belegen halt "viel" Platz.

Klar soweit?

Gruß

Beides ist ein Bruteforce-Angriff.

Bei einem Bruteforce-Angriff werden Passwörter generiert, gehasht und dann verglichen.

Beim einem Wöterbuch-Angriff wird eine Liste von vordifinierten Wörtern gehasht und vergleichen.

Eine Rainbowtable beinhaltet die Passwörter und Hashes - daher muss man damit nur noch vergleichen. Im Grunde trennt man Hashing und Vergleich ein 2 Schritte. Beim erstellen der Table werden die Hashwerte errechnet und mit dem Passwort zusammen abgelegt. Später beim knacken ist man dann schneller.

Je nach dem wie komplex die Hash-Berechnung ist kann man einiges an Zeit sparen vor allem bei Hashes wie SHA* oder MD5 oder dergleichen.

Bei einem WLAN wo der WLAN-Name (SSID) in die Hash-Berechnung mit einfließt sind Rainbowtables nur bedingt hilfreich.

Noch schneller sind Wörterbuch-Angriff mit der GPU. Grafikkarten sind viel viel schneller bei Hashberechnungen als die CPU.

Woher ich das weiß:Beruf – Pentesting (seit 2015)

Nee, bei Brute-Force probierste alle möglichen Kombination nacheinander aus.

Ne Rainbow-Table enthält für einen bestimmten Hash-Algorithmus alle (/viele) möglichen Passwörter und den Hash. Wenn du dann den Hash des Passworts dort nachschaust, kannst du das Passwort im Klartext ablesen.

Brute-Force klappt natürlich nur, wenn das System unbegrenzt Versuche ohne künstliche Wartezeit zulässt.

Rainbow-Tables machen nur Sinn, wenn das Passwort nicht gesalzen ist (also zusammen mit einer geheimen Zufallszahl gehasht wurde).

Und wenn ich eine Liste (also ein Dictionary) dazu nehme, um die Zahl der erfolglosen Versuche gering zu halten, ist das dann noch eine Brute-Force-Attacke?

0
@CostumLine

Das nennt sich dann "Wörterbuchattacke" und ist wieder was anderes.
Wenn auch einer der effektiveren Methoden, wenn man die Wörterbücher aus gewissen Quellen erwirbt.

0

Was möchtest Du wissen?