Die Bedeutung von Passwort-Cracking bei Penetrationstests
Beim ethischen Hacking und bei Penetrationstests spielt das Aufbrechen von Passwörtern eine entscheidende Rolle, um sich Zugang zu einem System oder Server zu verschaffen.
In der Regel werden Passwörter in Systemen und Datenbanken nicht im Klartext gespeichert.
Stattdessen werden Passwörter gehasht, bevor sie in der Datenbank abgelegt werden. Während des Verifizierungsprozesses wird dann dieser Hash verglichen.
Je nach verwendeter Verschlüsselungsmethode speichern unterschiedliche Systeme Passwort-Hashes auf verschiedene Weisen. Hat man jedoch erst einmal diese Hashes, kann man jedes Passwort relativ leicht knacken.
Dieser Artikel erklärt, wie man Passwort-Hashes mithilfe des praktischen und leistungsfähigen Kommandozeilen-Tools Hashcat aufbrechen kann.
Legen wir los.
Doch zunächst…
Was ist eine Hash-Funktion?
Hashing ist der Prozess, bei dem ein normaler Eingabetext mithilfe einer mathematischen Funktion, bekannt als Hash-Funktion, in eine Textzeichenfolge fester Größe umgewandelt wird. Unabhängig von der Länge eines Textes kann dieser mit Hilfe eines Algorithmus in eine zufällige Kombination aus Zahlen und Buchstaben umgewandelt werden.
- Der Input bezieht sich auf die Nachricht, die gehasht werden soll.
- Die Hash-Funktion ist der verwendete Verschlüsselungsalgorithmus, beispielsweise MD5 oder SHA-256, der eine Zeichenfolge in einen Hash-Wert umwandelt.
- Der Hashwert ist schlussendlich das Ergebnis.
Was ist Hashcat?
Hashcat ist ein schnelles Tool zur Passwortwiederherstellung, das entwickelt wurde, um hochkomplexe Passwörter in kurzer Zeit zu knacken. Das Programm ist in der Lage, sowohl Wörterbuch- als auch Brute-Force-Angriffe durchzuführen.
Hashcat ist in zwei Varianten verfügbar: CPU-basiert und GPU-basiert (Graphical Processing Unit). Das GPU-basierte Tool kann Hashes in kürzerer Zeit knacken als die CPU-Variante. Die notwendigen GPU-Treiberanforderungen sind auf der offiziellen Website einsehbar.
Funktionen
- Kostenlos und Open Source
- Implementierung von mehr als 200 Hash-Typ-Variationen möglich
- Unterstützt verschiedene Betriebssysteme wie Linux, Windows und macOS
- Multi-Plattform-Unterstützung (CPU und GPU) vorhanden
- Gleichzeitiges Knacken mehrerer Hashes möglich
- Unterstützung von Hex-Salt- und Hex-Charset-Dateien sowie automatische Leistungsoptimierung
- Integrierte Benchmarking-Funktion vorhanden
- Unterstützung von verteilten Cracking-Netzwerken mittels Overlays möglich
Weitere Funktionen können auf der zugehörigen Website eingesehen werden.
Installation von Hashcat
Zunächst sollte sichergestellt werden, dass das Linux-System mit den aktuellen Programmen und Tools aktualisiert ist.
Dazu öffnet man ein Terminal und gibt folgenden Befehl ein:
$ sudo apt update && sudo apt upgrade
Hashcat ist normalerweise in Kali Linux vorinstalliert und kann im Bereich „Passwort-Cracking“ gefunden werden. Wenn es jedoch manuell in einer anderen Linux-Distribution installiert werden muss, lautet der entsprechende Befehl:
$ sudo apt-get install hashcat
Verwendung des Tools
Um mit Hashcat zu beginnen, werden zunächst einige Passwort-Hashes benötigt. Falls keine Hashes zum Knacken vorliegen, können diese zuerst erstellt werden.
Zum Erstellen von Hashes über die Kommandozeile, kann das folgende Format verwendet werden:
echo -n "input" | algorithm | tr -d "-">>outputfiename
Beispielsweise wurden hier einige Wörter mit dem MD5-Algorithmus in Hashes umgewandelt:
┌──(rootkali)-[/home/writer/Desktop] └─# echo -n "wdzwdz" | md5sum | tr -d "-">>crackhash.txt echo -n "password123" | md5sum | tr -d "-">>crackhash.txt echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt
Die Ergebnisse werden dann in der Datei `crackhash.txt` gespeichert.
Nun werden die in der Datei gespeicherten Hashes überprüft:
┌──(rootkali)-[/home/writer/Desktop] └─# cat crackhash.txt 066d45208667198296e0688629e28b14 482c811da5d5b4bcd497ffeaa98491e3 72a2bc267579aae943326d17e14a8048 2192d208d304b75bcd00b29bc8de5024 caae8dd682acb088ed63e2d492fe1e13
Es gilt also, einige Hashes aufzubrechen. Das gezeigte Verfahren eignet sich zur Erstellung von Hashes mit einem Algorithmus nach Wahl.
Im nächsten Schritt wird das Hashcat-Tool auf dem Linux-Rechner gestartet. Mit folgendem Befehl kann Hashcat verwendet werden:
$ hashcat --help
Daraufhin werden alle Optionen angezeigt, die zur Ausführung des Tools erforderlich sind. Im Terminal finden sich Informationen zu allen Angriffs- und Hash-Modi.
Die allgemeine Form des Befehls ist:
$ hashcat -a num -m num hashfile wordlistfile
Hierbei steht „num“ für einen bestimmten Angriffs- und Hash-Modus. Durch Scrollen im Terminal lassen sich die genauen Zahlen für jeden Angriffs- und Hash-Modus finden. Beispielsweise ist die Zahl für MD4 0 und für den SHA256-Algorithmus 1740.
Als Wortliste wird die „rockyou wordlist“ verwendet, die sich im Pfad `/usr/share/wordlists` befindet.
Alternativ kann der Befehl `locate` verwendet werden, um den Pfad der Wortliste zu finden.
┌──(rootkali)-[/home/writer] └─# locate rockyou.txt
Um die Hashes mit der Wortlistendatei zu knacken, wird schliesslich folgender Befehl verwendet:
$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt
Nach Ausführung des Befehls kann es zu einem Laufzeitfehler (Token-Längen-Ausnahmefehler) kommen, der leicht behoben werden kann.
Zur Fehlerbehebung sollten alle Hashes einzeln in separate Dateien gespeichert werden. Dieser Fehler tritt häufig bei niedriger CPU- oder GPU-Geschwindigkeit auf. Bei einem Hochgeschwindigkeitsrechner können alle Hashes gleichzeitig als eine einzige Datei geknackt werden.
Nach der Fehlerbehebung sieht das Ergebnis wie folgt aus:
┌──(rootkali)-[/home/writer/Desktop] └─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt hashcat (v6.1.1) starting... OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project] ============================================================================================================================= * Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Dictionary cache built: * Filename..: rockyou.txt * Passwords.: 14344405 * Bytes.....: 139921671 * Keyspace..: 14344398 * Runtime...: 1 sec 8276b0e763d7c9044d255e025fe0c212: [email protected] Session..........: hashcat Status...........: Cracked Hash.Name........: MD5 Hash.Target......: 8276b0e763d7c9044d255e025fe0c212 Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs) Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs) Guess.Base.......: File (rockyou.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8 Recovered........: 1/1 (100.00%) Digests Progress.........: 4096/14344398 (0.03%) Rejected.........: 0/4096 (0.00%) Restore.Point....: 0/14344398 (0.00%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1 Candidates.#1....: 123456 -> pampam Started: Sun Dec 12 08:06:13 2021 Stopped: Sun Dec 12 08:06:16 2021
Den Details des Wörterbuch-Caches kann entnommen werden, dass der Hash erfolgreich geknackt und das Passwort offengelegt wurde.
Fazit
Ich hoffe, Sie haben ein besseres Verständnis für die Verwendung von Hashcat zum Knacken von Passwörtern erlangt.
Möglicherweise sind Sie auch an den verschiedenen Brute-Force-Tools für Penetrationstests und einigen der besten Pentesting-Tools interessiert.