Hashcat Befehlsstruktur verstehen

Kali LinuxBeginner
Jetzt üben

Einleitung

Hashcat ist ein leistungsstarkes und vielseitiges Werkzeug zur Passwortwiederherstellung. Um es effektiv nutzen zu können, müssen Sie zunächst seine Kommandozeilenstruktur verstehen. Ein einzelner Hashcat-Befehl besteht aus mehreren Schlüsselkomponenten, die dem Programm genau mitteilen, was geknackt werden soll und wie es erfolgen soll.

In diesem Lab lernen Sie die grundlegende Struktur eines Hashcat-Befehls kennen. Wir werden einen vollständigen, funktionsfähigen Befehl Stück für Stück aufbauen und dabei die fünf wesentlichen Komponenten abdecken: die ausführbare Datei (executable), den Hash-Typ (hash type), den Angriffsmodus (attack mode), die Eingabe-Hash-Datei (input hash file) und die Eingabe-Wortliste (input wordlist). Am Ende werden Sie in der Lage sein, grundlegende Hashcat-Befehle für dictionary-basierte Angriffe zu erstellen.

Identifizieren der Kernkomponenten eines Hashcat-Befehls

In diesem Schritt identifizieren wir die grundlegende Syntax eines Hashcat-Befehls. Das Verständnis dieser Struktur ist der erste Schritt zur Nutzung des Werkzeugs.

Ein typischer Hashcat-Befehl folgt diesem Muster:

hashcat [options] hashfile [wordlist/mask]

Lassen Sie uns diese Komponenten aufschlüsseln:

  • hashcat: Dies ist der Name des ausführbaren Programms selbst.
  • [options]: Dies sind Flags, die das Verhalten des Programms modifizieren. Die wichtigsten Optionen sind -m für den Hash-Typ und -a für den Angriffsmodus, die wir in den nächsten Schritten behandeln werden.
  • hashfile: Dies ist der Pfad zur Datei, die den Hash oder die Hashes enthält, die Sie knacken möchten.
  • [wordlist/mask]: Dies ist der Pfad zu einer Eingabedatei, z. B. einer Wortliste für einen Wörterbuchangriff oder einem Maskenmuster für einen Brute-Force-Angriff.

Um zu beginnen, sehen wir uns das integrierte Hilfemenü an, um ein Gefühl für das Werkzeug zu bekommen. Dieser Befehl listet alle verfügbaren Optionen und Informationen auf.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

hashcat --help

Sie sehen eine lange Ausgabe, die alle Funktionen von Hashcat detailliert beschreibt. Wir werden in den kommenden Schritten auf diese Informationen zurückgreifen.

hashcat (v6.2.6) starting in help mode

Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...

...
-a,  --attack-mode              | Num    | Attack-mode, see references below.
-m,  --hash-type                | Num    | Hash-type, see references below.
...

Nachdem wir nun die grundlegende Struktur verstanden haben, können wir mit dem Erstellen unseres Befehls beginnen.

Den Hash-Typ mit dem Flag -m angeben

In diesem Schritt lernen Sie, wie Sie den Ziel-Hash-Typ angeben. Hashcat unterstützt Hunderte von verschiedenen Hashing-Algorithmen, und Sie müssen ihm mitteilen, welchen Sie zu knacken versuchen. Dies geschieht mit dem Flag -m, gefolgt von einem numerischen Code.

Unsere Laborumgebung hat eine Datei namens hashes.txt vorbereitet, die einen MD5-Hash enthält. Um den richtigen Code für MD5 zu finden, können Sie die Ausgabe von hashcat --help durchsuchen.

Verwenden Sie den Befehl grep, um den Hilfetext nach "MD5" zu filtern:

hashcat --help | grep MD5

Die Ausgabe zeigt Ihnen alle Hash-Typen, die mit MD5 zusammenhängen, zusammen mit ihren entsprechenden Codes.

      0 | MD5                                            | Raw Hash, Salted and/or Iterated
   10 | md5($pass.$salt)                                 | Raw Hash, Salted and/or Iterated
   20 | md5($salt.$pass)                                 | Raw Hash, Salted and/or Iterated
...

Wie Sie sehen können, ist der Code für einen Standard-MD5-Hash 0. Nun können wir dies zu unserem Befehl hinzufügen. Der Befehl sieht derzeit so aus:

hashcat -m 0 ...

Im nächsten Schritt werden wir den Angriffsmodus angeben.

Den Angriffsmodus mit dem Flag -a angeben

In diesem Schritt lernen Sie, wie Sie den Angriffsmodus mit dem Flag -a einstellen. Der Angriffsmodus teilt Hashcat mit, welche Methode zum Knacken des Passworts verwendet werden soll.

Hashcat bietet mehrere Angriffsmodi, aber die gebräuchlichsten sind:

  • 0: Straight (Dictionary-Angriff) - Vergleicht Hashes mit einer Liste von Wörtern.
  • 1: Combination - Kombiniert Wörter aus zwei verschiedenen Wörterbüchern.
  • 3: Brute-force (Masken-Angriff) - Probiert jede mögliche Zeichenkombination basierend auf einem definierten Muster (Maske) aus.

Für dieses Labor werden wir einen Straight (Dictionary)-Angriff durchführen, daher verwenden wir den Angriffsmodus 0. Die Liste aller Angriffsmodi finden Sie im Hilfemenü.

Verwenden wir erneut grep, um den Abschnitt "Attack-Modes" zu finden:

hashcat --help | grep "Attack-Modes" -A 10

Das Flag -A 10 weist grep an, die 10 Zeilen nach dem Treffer anzuzeigen, wodurch Sie die vollständige Liste erhalten.

- [ Attack-Modes ] -

  ## | Mode
 ===+======
  0 | Straight
  1 | Combination
  3 | Brute-force
  6 | Hybrid dict + mask
  7 | Hybrid mask + dict

Wir haben nun unseren Angriffsmodus identifiziert. Fügen wir ihn unserem Befehl hinzu, der nun wie folgt lautet:

hashcat -m 0 -a 0 ...

Als Nächstes geben wir die Datei an, die den zu knackenden Hash enthält.

Bereitstellen der Eingabe-Hash-Datei

In diesem Schritt geben Sie die Eingabedatei an, die den zu knackenden Hash enthält. Dieses Argument kommt nach den Optionen.

Das Setup-Skript für dieses Labor hat bereits eine Datei namens hashes.txt in Ihrem aktuellen Verzeichnis (~/project) erstellt. Diese Datei enthält einen einzelnen MD5-Hash.

Lassen Sie uns den Inhalt dieser Datei mit dem Befehl cat anzeigen:

cat hashes.txt

Sie sollten die folgende Ausgabe sehen:

5f4dcc3b5aa765d61d8327deb882cf99

Dies ist der Hash, den wir knacken werden. Um ihn zu unserem Befehl hinzuzufügen, platzieren wir einfach den Dateinamen nach den Optionen. Unser Befehl sieht nun wie folgt aus:

hashcat -m 0 -a 0 hashes.txt ...

Das letzte Teil ist die Bereitstellung der Wortliste für unseren Dictionary-Angriff.

Bereitstellen der Eingabe-Wortliste oder Maske

In diesem letzten Schritt stellen Sie die letzte erforderliche Komponente für unseren Dictionary-Angriff bereit: die Wortliste. Eine Wortliste ist eine einfache Textdatei, bei der jede Zeile ein potenzielles Passwort ist.

Die Laborumgebung enthält eine einfache Wortliste namens wordlist.txt. Lassen Sie uns deren Inhalt untersuchen:

cat wordlist.txt

Die Ausgabe wird sein:

test
hello
password
123456

Diese Wortliste wird von Hashcat verwendet, um gegen den Hash zu testen. Die Wortlistendatei ist das letzte Argument in unserem Befehl.

Nun setzen wir den vollständigen Befehl zusammen und führen ihn aus:

hashcat -m 0 -a 0 hashes.txt wordlist.txt

Hashcat wird starten. Da unser Hash und unsere Wortliste sehr einfach sind, wird es fast sofort beendet. Die Ausgabe zeigt den Status der Knack-Sitzung an.

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 5f4dcc3b5aa765d61d8327deb882cf99
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:   496.9 kH/s (0.00ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 4/4 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: test -> 123456
Hardware.Mon.#1..: Util: 99%
...

Die Zeile Status...........: Cracked bestätigt den Erfolg. Um das geknackte Passwort zu sehen, können Sie denselben Befehl erneut mit dem Flag --show ausführen.

hashcat -m 0 -a 0 hashes.txt wordlist.txt --show

Die Ausgabe zeigt deutlich den Hash und sein entsprechendes Klartext-Passwort an:

5f4dcc3b5aa765d61d8327deb882cf99:password

Herzlichen Glückwunsch, Sie haben erfolgreich einen vollständigen Hashcat-Befehl erstellt und ausgeführt!

Zusammenfassung

In diesem Labor haben Sie die grundlegende Befehlsstruktur von Hashcat gelernt, indem Sie einen Befehl von Grund auf neu erstellt haben. Sie haben erfolgreich einen MD5-Hash mit einem Dictionary-Angriff geknackt.

Sie verstehen nun die fünf Kernkomponenten eines einfachen Hashcat-Befehls:

  1. Executable: hashcat
  2. Hash-Typ: Angegeben mit -m (z. B. -m 0 für MD5).
  3. Angriffsmodus: Angegeben mit -a (z. B. -a 0 für einen Dictionary-Angriff).
  4. Hash-Datei: Die Datei, die die Ziel-Hashes enthält (z. B. hashes.txt).
  5. Wortliste/Maske: Die Eingabe für den Angriff (z. B. wordlist.txt).

Die von Ihnen erlernte endgültige Befehlsstruktur lautet: hashcat -m <hash_type> -a <attack_mode> <hash_file> <wordlist>. Dieses Wissen bietet eine solide Grundlage für die Erkundung fortgeschrittenerer Hashcat-Funktionen.