Passwort-Hashes angreifen mit John the Ripper

John the Ripper ist eines der bekanntesten und leistungsfähigsten Tools, um Passwörter bzw. Hashes zu decodieren und damit zu knacken. John, oder JtR, unterliegt der GPL und ist damit eine freie Software. Es kann unter www.openwall.com/john für Linux oder macOS heruntergeladen werden. Für Windows steht vom selben Entwicklerteam die Software Hash Suite zur Verfügung. Da John the Ripper auf Kali Linux bereits vorinstalliert ist, nutzen wir es zu Demonstrationszwecken dort.

Tipp: Falls Sie darauf angewiesen sind, Passwörter via Brute Force zu ermitteln, sollten Sie dies auf möglichst leistungsfähiger Hardware machen – eine VM bietet sich in einem solchen Fall nicht unbedingt an. John the Ripper benötigt für seine Arbeit insbesondere CPU-Leistung. Das gilt grundsätzlich für alle Brute-Force-Angriffe. In der Praxis werden hier oft Cluster oder die Cloud genutzt. Aber auch Wörterbuchangriffe brauchen viel Ressourcen.

John the Ripper anwenden

Wollen wir doch mal sehen, welche Passwörter die Benutzer unseres Debian-Linux-Servers nutzen. Die Art und Weise, wie Sie die relevanten Einträge aus der Datei /etc/shadow vom Linux-Server zu Kali Linux exportieren, ist an dieser Stelle erst einmal nicht wichtig – Sie können dies per PuTTY (SSH) bzw. SCP tun, einen Webserver einsetzen, über die gemeinsame Zwischenablage der virtuellen Maschinen die Daten übertragen oder einen anderen Weg Ihrer Wahl nutzen.

In unserem Szenario heißt die lokale Datei linux-server-hashes.txt. Sie enthält vier Einträge, die wir eins zu eins aus der Datei /etc/shadow vom Linux-Server extrahiert haben.

Die relevanten Einträge aus /etc/shadow zusammengefasst

Uns interessieren nur diejenigen Einträge, die einen Passwort-Hash enthalten. Das betrifft die Benutzer root, alice, bob und trent. John the Ripper ist ein schlaues Tool und erkennt viele Hash-Algorithmen automatisch. Der einfachste Weg, es zu starten, ist naheliegend: john <Passwort-Datei>. John the Ripper tut seine Arbeit still. Möchten Sie den aktuellen Status sehen, drücken Sie eine beliebige Taste – außer (Q) und (Strg)+(C), da diese John beenden.

In der Abbildung sehen Sie, wie John the Ripper von selbst den Hash-Algorithmus sha512crypt ermittelt. Sie erhalten auch gleich den Hinweis, dass Sie mit –format=<Hash-Typ> den Hash-Algorithmus direkt angeben können. Mit john –list=formats lassen Sie sich alle unterstützten Formate anzeigen. Obligatorisch wird diese Angabe, wenn Sie mehrere Formate in einer Hash-Datei zusammengefasst haben.

Achtung: Sollte Yescript verwendet werden, muss format=crypt angegeben werden.

John the Ripper bei der Arbeit

In dieser Form aufgerufen, läuft John the Ripper im Modus »single crack«. Das bedeutet, der Benutzername wird im ersten Schritt als Passwort zugrunde gelegt, mittels der bereits bekannten Regeln mutiert (engl. to mangle) und als Passwort getestet. Dies können Sie in der Abbildung in den ersten Zeilen der Status-Ausgabe sehr schön sehen.

Anschließend nutzt John the Ripper seine Default-Passwort-Liste /usr/ share/john/password.lst. Sie enthält jedoch nur etwas über 3000 Einträge und ist daher nicht sehr erfolgversprechend.

Im dritten Schritt startet John eine Brute-Force-Attacke.

Einfache Passwörter wird John mit dieser Methode früher oder später finden. Doch lassen Sie uns dem Glück ein wenig auf die Sprünge helfen. Dazu erstellen wir eine eigene, sehr einfache Passwortliste, die die Passwörter unserer Benutzer enthält – allerdings falsch geschrieben.

Eine manuell erstellte Passwortliste

Im nächsten Schritt können Sie nun mit –wordlist= die Passwortliste einbinden und mit dem Parameter –rules über die bereits bekannten Wordlist-Rules in /etc/john/john.conf so mutieren, dass sie die richtigen Passwörter enthält. Dieses Mal geben wir auch brav das Format der Verschlüsselung an.

John the Ripper ermittelt die Passwörter durch einen Dictionary-Angriff

An dieser Stelle können Sie auch erkennen, dass Alice und Bob tatsächlich dasselbe Passwort verwenden, obwohl der Hashwert aufgrund des Salts komplett unterschiedlich ist.

Tipp: Gefundene Passwörter vor jedem Versuch löschen

Sollten Sie zuvor bereits Passwörter mit John ermittelt haben, werden diese im Home-Verzeichnis des Benutzers (hier: root) unter .john/john.pot gespeichert. Die gefundenen Passwörter zeigt john –show linux-server-hashes.txt. Im Labor sollten Sie vor jedem neuen Versuch diese Datei löschen, da John the Ripper die bereits gefundenen Passwörter bei einem erneuten Durchlauf nicht anzeigt.


Hacking Praxis Guide

Dieser Artikel ist ein Auszug aus dem Buch „Hacking“ von Eric Amberg und Daniel Schmid. Alle Infos zum Buch, das Inhaltsverzeichnis und eine kostenlose Leseprobe findet ihr bei uns im Shop.

Kommentar verfassen