· 

Wie Hacker Passwörter knacken

1. Einführung

Passwörter werden niemals im Klartext gespeichert! Das Klartextpasswort "123456Sieben" wird durch einen Hash-Algorithmus geschickt und auf diese Weise verschlüsselt. Es gibt verschiedene Hash-Algorithmen wie MD5, MD6, SHA-1, SHA-256, Tiger128 und viele mehr.

  • MD5
    3f0ec065b32dcad12d8a146b41c3610c

  • MD6
    6ff2681b507d6f9803309ad2822f2eb95d732b27b1c7cb9d4b7e3d2f3b77d819

  • SHA-1
    d65f58eb6b87a153770ae3849959893e7bba0d5a

  • SHA-256
    f8e1e2278dbd9b78b1e952dd3b98e1fedfa5f6c248859f47eac14d047efec889

  • Tiger128
    06794c82cba00de942ee1900366d846a


2. Welche Daten werden wie gespeichert?

Als Beispiel für diesen Artikel betrachten wir das Mathe-Portal LETSROCKMATHE von Daniel Jung. Um dich in deinen Account einzuloggen, benötigst du deinen Benutzernamen und dein Passwort, das du im Klartext in das dafür vorgesehene Feld einträgst. Allerdings wird die Eingabe während des Schreibens unkenntlich gemacht, sodass niemand dein Passwort sehen kann.

Bei der Registrierung gibst du ebenfalls einen Benutzernamen an und denkst dir ein Passwort aus. Sobald du auf Registrieren klickst, werden diese Informationen an die Datenbank von LETSROCKMATHE im Backend gesendet. In der Datenbank werden alle Informationen, die du zuvor eingegeben hast, gespeichert. Die E-Mail-Adresse wird im Klartext hinterlegt.


3. Hash-Funktionen

Doch was ist mit dem Passwort? Wie bereits erwähnt, werden Passwörter niemals im Klartext in einer Datenbank gespeichert. Das Passwort wird als Input in eine sogenannte Hash-Funktion gegeben. Das Ergebnis einer Hash-Funktion entsteht eine verschlüsselte Form des Passworts (der sogenannte Passwort-Hash). Diese verschlüsselte Form wirkt nur zufällig zusammengewürfelt, doch in Wahrheit ist sie das Produkt der Funktionsweise des verwendeten Hash-Algorithmus. Dieser Passwort-Hash wird in der Datenbank von LETSROCKMATHE gespeichert und nicht das Klartextpasswort. Du brauchst dir also keine Sorgen zu machen, dass beispielsweise ein Administrator dein Passwort sehen kann. Er sieht, wenn überhaupt, nur den Passwort-Hash.


4. Szenario

Stelle dir vor, dass eine Hacker-Welle über Deutschland fegt und auch Daniel Jungs Portal in Mitleidenschaft gezogen wird. Angenommen die Datenbank, in der deine E-Mail-Adresse und dein Passwort gespeichert sind, fallen in die Hände der Hacker. Dann sind sie trotzdem nicht in der Lage, sich in deinen LETSROCKMATHE Account einzuloggen, da die Eingabe des Passwort-Hashes in das Passwort-Feld keinen Zugang zum System ermöglicht. Warum nicht? Die E-Mail-Adresse ist zwar korrekt und lesbar, doch nun wird der eingegebene Passwort-Hash als Input in die Hash-Funktion gegeben und als Ergebnis erhältst du einen anderen Passwort-Hash, der nicht in der Datenbank vorhanden ist. Nur die Eingabe des Klartextpassworts, das die Hacker nicht haben, führt zum Ziel.


5. Brute-Force-Attacke

Können die Hacker dein Passwort aus dem gestohlenen Hashwert ableiten? Theoretisch gesehen ja, aber praktisch gesehen nein. Eine Hash-Funktion ist eine sogenannte Einwegfunktion, d. h. die Berechnung des Passwort-Hashs aus dem Klartextpasswort ist leicht machbar, doch das Klartextpasswort aus dem Passwort-Hash zu ermitteln ist nahezu unmöglich, da es dafür einfach zu viele Möglichkeiten gibt. Für einen MD5-Hash wären das z. B.

\(32^{16}=1\text{ }208\text{ }925\text{ }819\text{ }614\text{ }629\text{ }174\text{ }706\text{ }176\)

Möglichkeiten, wobei 32 die Länge eines MD5-Hashes und 16 (0-9 und A-F) die Anzahl der Zeichen pro Stelle im Hash ist. Dein Passwort ist somit theoretisch sicher, praktisch jedoch nicht, da ein Rechner alle Möglichkeiten ausprobieren könnte, in dem er für jede erdenkliche Zeichenfolge z. B. den MD5-Hash berechnet. Dieses Vorgehen bezeichnet man als Brute-Force-Attacke. Um alle Kombinationen abzudecken würde man allerdings (selbst bei Akquirierung aller auf dem Planeten zur Verfügung gestellten Rechenkapazitäten) im Worst-Case mehrere Generationen brauchen, um an dein Passwort zu kommen.


6. Rainbow Tables

In der Praxis müssen die Hacker also hoffen, dass du ein schwaches Passwort gewählt hast. Warum? Wenn du ein schwaches Passwort wie z. B. "123456Sieben" wählst, ist die Wahrscheinlichkeit groß, dass dieses oder andere häufig genutzte Standard-Passwörter in öffentlich zugänglichen Rainbow-Tables (Regenbogentabellen) stehen, die Klartextpasswörter samt ihren Hashes enthalten. Die Hacker müssen dann lediglich nach dem gestohlenen Passwort-Hash suchen und finden dabei das dazugehörige Klartext-Passwort. Wenn dein Passwort aber z. B. "@!992knm@@Wh20O!!wkk2_21" lautet,  kannst du davon ausgehen, dass dieser Eintrag aufgrund seiner Komplexität in noch keiner Rainbow-Table steht. Du bist also auch selbst in der Pflicht dich um die Sicherheit deines Passworts zu bemühen. Hierbei helfen dir auch Seiten wie How Secure Is My Password oder Passwort-Check.


7. Wordlist

Ein weiterer Angriffsvektor besteht im Nutzen einer sogenannten Wordlist. Hierbei handelt es sich um ein Text-File, das sehr viele Passwörter im Klartext enthält. Die Hacker schreiben sich dann ein Programm, das für jedes der Passwörter in der Wordlist den Passwort-Hash berechnet und mit dem gestohlenen Hash vergleicht. Wenn man weitere Informationen über das Opfer hat (Name, Alter, Hobbies etc.), dann kann man eine personalisierte Wordlist erstellen, die Passwörter und Passwortbestandteile enthält, die wiederum sehr wahrscheinlich vom ihm verwendet wurden.


8. Passwörter salzen

Sicherheitsexperten schlagen aufgrund der potentiellen Angriffsvektoren vor, die Passwörter vor dem Hashen zu salzen. Dabei wird eine (oft zufällig) gewählte Zeichenkette (das Salz) vor dem Hashen an das Passwort gehängt. Wenn der Benutzer Elliot Alderson heißt, könnte das Salz z. B. die Zeichenkette "Elliot.Alderson" sein. In Kombination mit dem Passwort "123456Sieben" würde dann nicht "123456Sieben", sondern "Elliot.Alderson123456Sieben" gehasht werden, wozu es vermutlich noch keinen Eintrag in einer Rainbow-Table gibt. Die Wahl des Vor- und Nachnamens als Salz ist reine Willkür. Jedes Unternehmen hat seinen eigenen Algorithmus zum Salzen. In SAP-Systemen wird bspw. der Benutzername als Salz verwendet.