Hacking von Passwörtern mithilfe von MD5 Hashes

MD5 Hashes galten lange als sicherer Weg, Passwörter zu speichern. Heute sind sie das Gegenteil: Moderne Hardware berechnet Milliarden Werte pro Sekunde, und für gängige Passwörter existieren fertige Tabellen. Dieser Beitrag zeigt, wie ein Angriff abläuft – und was Sie stattdessen verwenden.

MD5 ist ein Hash-Algorithmus, der verwendet wird, um einen Hash-Wert aus einem Passwort zu generieren, um es sicher zu speichern. Ein Hacker kann jedoch versuchen, an das ursprüngliche Passwort zu gelangen, indem er eine Tabelle mit vorab berechneten Hash-Werten erstellt und diese mit den Hash-Werten vergleicht, die er von einer gehackten Datenbank erhält.

Schritt 1: Erstellung einer Hashes-Tabelle

Ein Hacker kann eine Hashes-Tabelle erstellen, indem er eine Liste mit möglichen Passwörtern generiert und jedes dieser Passwörter mit dem MD5-Algorithmus hasht. Diese Liste mit möglichen Passwörtern kann aus bekannten Passwort-Listen, Wörterbüchern oder sogar benutzerdefinierten Passwort-Listen bestehen. Der Hacker kann dann eine Software verwenden, um jedes Passwort in der Liste zu hashen und das Ergebnis in eine Tabelle einzufügen.

Schritt 2: Vergleich mit gehackten Hash-Werten

Wenn ein Hacker Zugang zu einer gehackten Datenbank mit gespeicherten Passwort-Hash-Werten hat, kann er jeden einzelnen Hash-Wert in der Tabelle mit den gespeicherten Hash-Werten vergleichen. Sobald eine Übereinstimmung gefunden wird, kann der Hacker das entsprechende Passwort aus der Tabelle abrufen und es verwenden, um auf geschützte Ressourcen zuzugreifen.

Schritt 3: Verwendung des gefundenen Passworts

Nachdem ein Hacker ein Passwort gefunden hat, kann er es verwenden, um auf geschützte Ressourcen zuzugreifen. Dies kann ein Benutzerkonto sein, auf das er nicht berechtigt ist, oder ein sensibles System, das er angreifen möchte.

Fazit

Es ist wichtig zu beachten, dass MD5 heute als unsicher gilt und nicht mehr für die Speicherung von Passwörtern verwendet werden sollte. Stattdessen sollten Unternehmen moderne und sichere Hash-Algorithmen wie bcrypt, scrypt oder Argon2 verwenden, um Passwörter zu schützen. Außerdem sollten starke und einzigartige Passwörter verwendet werden, die nicht leicht zu erraten sind. Es ist auch wichtig, dass Benutzer ihre Passwörter regelmäßig ändern und sicher aufbewahren, indem sie sie nicht auf schriftlichem Weg oder in unsicheren Systemen speichern.

Ein weiterer wichtiger Faktor ist die Verwendung von Zwei-Faktor-Authentifizierung (2FA), bei der ein Benutzer neben seinem Passwort auch einen weiteren Faktor, wie einen Sicherheitsschlüssel oder eine SMS, verwenden muss, um auf sein Konto zuzugreifen. Dies fügt eine weitere Schutzebene hinzu und macht es für Hacker schwieriger, auf geschützte Ressourcen zuzugreifen.

Abschließend sollte jedes Unternehmen regelmäßige Sicherheitsüberprüfungen durchführen, um sicherzustellen, dass ihre Systeme und Daten vor Angriffen geschützt sind. Dies kann durch die Überwachung von Netzwerken und die Überprüfung von Log-Dateien erfolgen. Unternehmen sollten auch die Dienste eines erfahrenen Sicherheitsexperten in Anspruch nehmen, um ihre Sicherheit zu verbessern und potenzielle Schwachstellen zu identifizieren und zu beheben.

Schutzmethoden, die es gibt, bei der Programmierung von PHP Anwendungen

Nachfolgen eine kleine Liste von Schutzmethoden, damit ein Hacker nicht mit einer MD5-Hashes Tabelle ein Passwort ermitteln kann:

  • Verwenden Sie einen langen Salt: Ein Salt ist ein Schlüssel, den Sie einem Passwort hinzufügen, bevor Sie es auf eine MD5-Hash-Funktion anwenden. Dadurch wird sichergestellt, dass jedes Passwort, das Sie verschlüsseln, einzigartig ist.

  • Verwenden Sie einen strengen Hash-Algorithmus: Verwenden Sie einen starken Hash-Algorithmus wie SHA-256 oder besser, um Ihre Passwörter zu verschlüsseln. Diese Algorithmen sind viel sicherer als MD5 und schützen Ihre Passwörter vor Brute-Force-Angriffen.

  • Verwenden Sie eine starke Hashing-Funktion: Verwenden Sie eine starke Hashing-Funktion wie bcrypt oder PBKDF2, um Ihre Passwörter zu verschlüsseln. Diese Funktionen sind sehr viel sicherer als MD5 und schützen Ihre Passwörter vor Angriffen.

  • Nutzen Sie eine sichere Passwort-Policy: Erstellen Sie eine sichere Passwort-Policy, die Anforderungen an den Komplexitätsgrad und die Länge der Passwörter festlegt. Dadurch wird sichergestellt, dass Hacker nicht in der Lage sind, leicht zu erratende Passwörter zu ermitteln.

  • Verwenden Sie eine Zwei-Faktor-Authentifizierung: Mit einer Zwei-Faktor-Authentifizierung werden Benutzern zusätzliche Sicherheitsmaßnahmen abverlangt, bevor sie auf ein Konto zugreifen können. Diese können unter anderem ein zusätzlicher Code, der per SMS an das Telefon des Benutzers gesendet wird, oder ein biometrisches Erkennungssystem sein.

Was Sie statt MD5 Hashes verwenden sollten

PHP bringt für Passwörter eigene Funktionen mit: password_hash erzeugt einen Wert mit einem modernen, absichtlich langsamen Verfahren und einem individuellen Zufallswert. password_verify prüft eine Eingabe dagegen. Beides zusammen macht Wörterbuchangriffe unwirtschaftlich, weil jeder Versuch messbar Zeit kostet.

Wichtig ist der Unterschied der Einsatzgebiete: Für Prüfsummen von Dateien sind schnelle Verfahren richtig, für Passwörter genau falsch. Bestehende MD5 Hashes lassen sich beim nächsten erfolgreichen Login des Nutzers still auf das neue Verfahren umstellen.

Rechtlicher Hinweis

Die Darstellung dient dem Verständnis der Schwachstelle und damit dem Schutz eigener Anwendungen. Der Zugriff auf Passwörter fremder Systeme ist strafbar.

Häufige Fragen zu MD5 Hashes

Sind MD5 Hashes umkehrbar? Nicht direkt. Angreifer probieren jedoch massenhaft Werte durch oder nutzen vorberechnete Tabellen.

Hilft ein Zufallswert je Passwort? Er entwertet fertige Tabellen, aber MD5 bleibt zu schnell. Nutzen Sie password_hash.

Wofür ist MD5 noch brauchbar? Für Prüfsummen, etwa um zu erkennen, ob eine Datei unverändert ist.

Wie stelle ich alte Passwörter um? Beim nächsten Login prüfen, neu mit password_hash speichern und den alten Wert löschen.

Jetzt eigene Funktionen für die Passwortprüfung schreiben – so liegt die Logik an einer Stelle. Grundlagen liefern Typen in PHP und IF-Anweisungen.