Einleitung
Hashcat ist ein weltweit bekanntes Werkzeug zur Passwortwiederherstellung, das die immense Rechenleistung von GPUs nutzen kann, um Hashes mit unglaublicher Geschwindigkeit zu knacken. Um jedoch das Beste aus Ihrer Hardware herauszuholen, müssen Sie wissen, wie Sie sie richtig konfigurieren und abstimmen. Falsche Einstellungen können zu suboptimaler Leistung oder sogar zu Hardware-Instabilität führen.
In diesem Lab lernen Sie, wie Sie verschiedene OpenCL-bezogene Flags von Hashcat verwenden, um die Leistung Ihrer GPU zu verwalten und zu optimieren. Sie üben das Auflisten verfügbarer Geräte, die Auswahl einer bestimmten GPU für eine Aufgabe, die Implementierung von thermischen Schutzmaßnahmen und das Experimentieren mit Optionen zur Leistungsoptimierung. Diese Fähigkeiten sind unerlässlich für jeden, der Hashcat effektiv und sicher nutzen möchte.
Verfügbare OpenCL-Geräte mit --opencl-devices auflisten
In diesem Schritt lernen Sie, wie Sie die Rechengeräte identifizieren, die Hashcat verwenden kann. Bevor Sie einer GPU oder CPU eine Aufgabe zuweisen können, müssen Sie wissen, wie das System diese erkennt. Hashcat bietet zu diesem Zweck ein spezielles Flag.
Das Flag --opencl-devices fragt das OpenCL (Open Computing Language)-Framework des Systems ab und listet alle kompatiblen Geräte auf, wie z. B. GPUs und CPUs. Jedes Gerät erhält eine eindeutige ID, die Sie in späteren Schritten verwenden werden, um es gezielt anzusprechen.
Führen Sie den folgenden Befehl in Ihrem Terminal aus, um alle verfügbaren OpenCL-Geräte aufzulisten:
hashcat --opencl-devices
Sie sehen eine Ausgabe, die der folgenden ähnelt. Die genauen Details, insbesondere die Gerätenamen und Plattforminformationen, variieren je nach Hardware der Laborumgebung.
hashcat (v6.2.6) starting
OpenCL Info:
Platform ID #1
Vendor : The pocl project
Name : Portable Computing Language
Version : OpenCL 3.0 PoCL 3.1+g3a94695b, LLVM 14.0.0, RELOC, SLEEF, DISTRO, POCL_DEBUG
Device ID #1
Type : CPU
Vendor ID : 1024
Vendor : GenuineIntel
Name : 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
Version : OpenCL 3.0 PoCL 3.1+g3a94695b, LLVM 14.0.0, RELOC, SLEEF, DISTRO, POCL_DEBUG
Processor(s) : 8
Clock : 3000
...
Platform ID #2
Vendor : NVIDIA Corporation
Name : NVIDIA CUDA
Version : OpenCL 3.0 CUDA 12.2.142
Device ID #2
Type : GPU
Vendor ID : 4318
Vendor : NVIDIA Corporation
Name : NVIDIA T4
Version : OpenCL 3.0 CUDA
Processor(s) : 40
Clock : 1590
...
Beachten Sie die Device ID für jeden Eintrag. In diesem Beispiel ist Device ID #2 die NVIDIA T4 GPU, die sich ideal für das Knacken von Hashes eignet.
Eine bestimmte GPU zum Knacken mit -d auswählen
In diesem Schritt lernen Sie, wie Sie Hashcat anweisen, ein bestimmtes Gerät für eine Knackaufgabe zu verwenden. Dies ist besonders nützlich in Systemen mit mehreren GPUs oder wenn Sie die CPU nicht verwenden möchten, die für diese Art von Arbeit im Allgemeinen viel langsamer ist.
Das Flag -d (oder --devices) ermöglicht es Ihnen, anzugeben, welche Geräte-ID(s) verwendet werden sollen. Die richtige ID finden Sie in der Ausgabe des Befehls im vorherigen Schritt.
Wir werden nun eine einfache Knackaufgabe durchführen, die auf die GPU abzielt. Wir verwenden die Dateien hash.txt und wordlist.txt, die in Ihrem Verzeichnis ~/project vorbereitet wurden. Der Befehl gibt den Hash-Typ (-m 0 für MD5), den Angriffsmodus (-a 0 für einen Wörterbuchangriff) und das Zielgerät an. Unter der Annahme, dass die GPU Device ID #2 aus unserem vorherigen Beispiel ist, würde der Befehl wie folgt lauten:
hashcat -m 0 -a 0 ~/project/hash.txt ~/project/wordlist.txt -d 2
Wenn Ihre GPU eine andere ID hat, passen Sie die Nummer nach -d entsprechend an.
Nachdem Sie den Befehl ausgeführt haben, startet Hashcat den Angriff ausschließlich auf dem angegebenen Gerät und sollte das Passwort schnell finden.
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 5d41402abc4b2a76b9719d911017c592
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#2.........: 104.6 kH/s (0.00ms) @ Accel:128 Loops:128 Thr:1024 Vec:1
Recovered........: 1/1 (100.00%) Digests
Progress.........: 2/2 (100.00%)
Rejected.........: 0/2 (0.00%)
Restore.Point....: 1/2 (50.00%)
Restore.Sub.#2...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#2....: wrongpass -> password
Hardware.Mon.#2..: Temp: 40c Fan: 30% Util: 13% Core:1410MHz Mem:5000MHz Bus:16
5d41402abc4b2a76b9719d911017c592:password
Started: ...
Stopped: ...
Die Ausgabe bestätigt, dass der Hash geknackt wurde und das Passwort password lautet.
Das Flag --gpu-temp-retain verstehen
In diesem Schritt lernen Sie eine entscheidende Sicherheitsfunktion zum Schutz Ihrer Hardware kennen. Der Betrieb einer GPU bei 100% Auslastung über längere Zeiträume erzeugt eine erhebliche Wärmemenge. Wenn dies nicht verwaltet wird, können hohe Temperaturen zu Thermal Throttling (bei dem die GPU zur Abkühlung langsamer wird) oder sogar zu dauerhaften Schäden führen.
Das Flag --gpu-temp-retain weist Hashcat an, die Temperatur der GPU zu überwachen und die Arbeitslast automatisch anzupassen, um sie auf oder unter einem angegebenen Celsius-Wert zu halten. Dies ist eine ausgezeichnete Möglichkeit, Stabilität und Langlebigkeit Ihrer Hardware während langer Knack-Sitzungen zu gewährleisten.
Lassen Sie uns denselben Angriff wie zuvor ausführen, aber diesmal fügen wir das Flag hinzu, um die GPU-Temperatur auf oder unter 85°C zu halten. Dies ist eine generell sichere Temperatur für die meisten GPUs unter Last.
hashcat -m 0 -a 0 ~/project/hash.txt ~/project/wordlist.txt -d 2 --gpu-temp-retain=85
Da unsere Knackaufgabe sehr kurz ist, werden Sie die Temperaturverwaltung nicht in Aktion sehen. Der Befehl wird jedoch akzeptiert und Hashcat aktiviert die Funktion. Bei einer mehrstündigen oder mehrtägigen Knackaufgabe würde dieses Flag im Hintergrund aktiv arbeiten und möglicherweise die Geschwindigkeit leicht reduzieren, um die thermale Sicherheit zu gewährleisten.
Die Ausgabe ist dieselbe wie im vorherigen Schritt, da das Passwort fast sofort gefunden wird. Die wichtigste Erkenntnis ist zu wissen, wie diese Schutzfunktion angewendet wird.
Session..........: hashcat
Status...........: Cracked
...
5d41402abc4b2a76b9719d911017c592:password
...
Experimentieren Sie mit --opencl-vector-width, um die optimale Einstellung zu finden
In diesem Schritt erkunden Sie eine Option zur Leistungsoptimierung. Das Flag --opencl-vector-width steuert, wie viele "Threads" oder Arbeitselemente für die Verarbeitung in einer einzigen Instruktion gebündelt werden. Dies ist auch als SIMD-Breite (Single Instruction, Multiple Data) bekannt.
Der optimale Wert für diese Einstellung hängt stark von der spezifischen GPU-Architektur und der Art des zu knackenden Hashes ab. Der einzige Weg, die beste Einstellung zu finden, ist das Experimentieren. Zulässige Werte sind typischerweise Zweierpotenzen, wie z. B. 1, 2, 4, 8 oder 16.
Um die Auswirkung dieses Flags zu testen, können wir den integrierten Benchmark-Modus von Hashcat (-b) verwenden. Führen wir einen Benchmark für MD5 (-m 0) aus und setzen die Vektorbreite auf 4.
hashcat -m 0 -b --opencl-vector-width 4
Hashcat führt einen Benchmark aus und zeigt die Geschwindigkeit für jedes Gerät an. Achten Sie auf die Zeile Speed für Ihre GPU.
...
Hashtype: MD5
Speed.#2.........: 480.3 MH/s (94.38ms) @ Accel:256 Loops:1024 Thr:256 Vec:4
...
Versuchen Sie nun, den Benchmark erneut mit einer anderen Vektorbreite auszuführen, zum Beispiel 8:
hashcat -m 0 -b --opencl-vector-width 8
Vergleichen Sie die Speed aus dieser Ausführung mit der vorherigen. Durch das Testen verschiedener Werte können Sie die optimale Vektorbreite für Ihre spezifische Hardware- und Hash-Kombination ermitteln und so Ihre Knack-Leistung maximieren. Für dieses Labor reicht es aus, einfach mit dem Befehl zu experimentieren.
GPU-Temperatur und Lüftergeschwindigkeit während eines Angriffs überwachen
In diesem letzten Schritt lernen Sie, wie Sie die Vitalparameter Ihrer GPU in Echtzeit überwachen, während Hashcat läuft. Dies ist unerlässlich, um Leistungsprobleme zu diagnostizieren und sicherzustellen, dass Ihre thermischen Einstellungen wie erwartet funktionieren.
Wir werden das Dienstprogramm nvidia-smi (NVIDIA System Management Interface) verwenden, ein leistungsstarkes Befehlszeilentool zur Verwaltung und Überwachung von NVIDIA-GPUs. Um die Statistiken live aktualisieren zu sehen, führen wir es mit dem Befehl watch aus.
Zuerst müssen Sie ein zweites Terminalfenster öffnen. Dies können Sie tun, indem Sie auf das "+" Symbol in der Terminal-Tab-Leiste am unteren Bildschirmrand klicken.
Führen Sie in Ihrem neuen (zweiten) Terminal den folgenden Befehl aus. Er führt nvidia-smi jede Sekunde aus und aktualisiert den Bildschirm mit den neuesten Daten.
watch -n 1 nvidia-smi
Sie sehen ein Dashboard, das den Namen der GPU, die Temperatur, die Lüftergeschwindigkeit, den Stromverbrauch und die Speicherauslastung anzeigt.
Kehren Sie nun zu Ihrem ursprünglichen (ersten) Terminal zurück. Starten Sie einen intensiven Benchmark, um die GPU stark zu belasten. Wir verwenden das Flag -w 4 (Workload-Profil 4, für "Insane"), um die Last zu maximieren.
hashcat -m 0 -b -w 4
Wechseln Sie zurück zu Ihrem zweiten Terminal, das watch ausführt. Sie sollten sehen, wie die Werte Temp, Pwr und GPU-Util deutlich ansteigen, während die GPU hart am Benchmark arbeitet. Dies gibt Ihnen eine Live-Ansicht des Status Ihrer Hardware.
Wenn Sie mit der Beobachtung fertig sind, drücken Sie Ctrl+C im ersten Terminal, um den Hashcat-Benchmark zu stoppen, und drücken Sie dann Ctrl+C im zweiten Terminal, um den watch-Befehl zu stoppen.
Zusammenfassung
In diesem Labor haben Sie praktische Erfahrungen mit mehreren wichtigen Hashcat-Flags zur Verwaltung und Optimierung der GPU-Leistung gesammelt.
Sie haben gelernt, wie Sie:
- Alle verfügbaren OpenCL-kompatiblen Geräte mit
--opencl-devicesauflisten. - Eine bestimmte GPU für eine Aufgabe mit dem Flag
-dauswählen. - Ihre Hardware vor Überhitzung schützen, indem Sie mit
--gpu-temp-retainein thermisches Limit festlegen. - Mit dem Flag
--opencl-vector-widthim Benchmark-Modus experimentieren, um optimale Leistungseinstellungen zu finden. - Die Echtzeit-Statistiken Ihrer GPU während einer hohen Auslastung mit
nvidia-smiundwatchüberwachen.
Die Beherrschung dieser Befehle ermöglicht es Ihnen, vom einfachen Benutzer zum fortgeschrittenen Anwender zu werden, der in der Lage ist, die Knack-Geschwindigkeit zu maximieren und gleichzeitig die Sicherheit und Stabilität Ihrer Hardware zu gewährleisten.


