Brute-Force-Masken-Angriff in Hashcat ausführen

Kali LinuxBeginner
Jetzt üben

Einleitung

Willkommen zu diesem Lab über die Durchführung eines Maskenangriffs mit Hashcat. Hashcat ist ein leistungsstarkes und vielseitiges Werkzeug zur Passwortwiederherstellung, das in der Cybersicherheit weit verbreitet ist, um die Passwortstärke zu testen und verlorene Passwörter wiederherzustellen.

Ein Standard-Brute-Force-Angriff versucht, ein Passwort zu erraten, indem alle möglichen Zeichenkombinationen ausprobiert werden, was unglaublich langsam sein kann. Ein Maskenangriff ist eine intelligentere und effizientere Art von Brute-Force-Angriff. Er wird verwendet, wenn Sie einige Informationen über die Struktur des Passworts haben, wie z. B. seine Länge oder die Arten von Zeichen, die an bestimmten Positionen verwendet werden (z. B. "beginnt mit einem Großbuchstaben, endet mit zwei Zahlen").

In diesem Lab lernen Sie, wie Sie die Struktur eines Passworts mithilfe einer Maske definieren und Hashcat verwenden, um einen Beispiel-SHA1-Hash zu knacken, was die Leistungsfähigkeit und Effizienz dieses gezielten Ansatzes demonstriert.

Das Konzept eines Maskenangriffs verstehen

In diesem Schritt lernen Sie das grundlegende Konzept eines Maskenangriffs kennen. Wie in der Einleitung erwähnt, ist dieser Angriff eine spezialisierte Form eines Brute-Force-Angriffs.

Stellen Sie sich vor, Sie müssen ein Passwort knacken, haben aber ein paar Hinweise:

  • Sie wissen, dass das Passwort genau 6 Zeichen lang ist.
  • Sie wissen, dass das erste Zeichen ein Großbuchstabe ist.
  • Sie wissen, dass die letzten beiden Zeichen Ziffern sind.

Ein Standard-Brute-Force-Angriff würde Zeit damit verschwenden, Kombinationen wie "aaaaaa" oder "123456" auszuprobieren. Ein Maskenangriff hingegen ermöglicht es Ihnen, eine "Maske" oder eine Vorlage zu definieren, die dem Knackwerkzeug mitteilt, nur Kombinationen auszuprobieren, die Ihrem bekannten Muster entsprechen. Für das obige Beispiel würde die Maske [Großbuchstabe][Beliebig][Beliebig][Beliebig][Ziffer][Ziffer] angeben.

Dies reduziert die Anzahl der Möglichkeiten drastisch und macht den Knackprozess erheblich schneller und effizienter. Im nächsten Schritt lernen Sie die spezifische Syntax kennen, die Hashcat zum Erstellen dieser leistungsstarken Masken verwendet. Dieser Schritt ist rein konzeptionell, und es sind keine Befehle erforderlich.

Eingebaute Zeichensätze wie ?l ?u ?d ?s kennenlernen

In diesem Schritt lernen Sie die eingebauten Zeichensätze von Hashcat kennen, die die Bausteine einer Maske bilden.

Hashcat verwendet spezielle Platzhalter, sogenannte "Charsets", um den Zeichentyp an jeder Position einer Passwortmaske zu definieren. Dies sind die gängigsten eingebauten Charsets:

  • ?l: Steht für alle Kleinbuchstaben (a bis z).
  • ?u: Steht für alle Großbuchstaben (A bis Z).
  • ?d: Steht für alle Ziffern (0 bis 9).
  • ?s: Steht für alle gängigen Sonderzeichen (z. B. !@#$%^&*).
  • ?a: Steht für alle oben genannten (?l?u?d?s).

Wenn wir beispielsweise wissen, dass ein Passwort 4 Zeichen lang ist und aus einem Großbuchstaben, gefolgt von zwei Kleinbuchstaben und dann einer Ziffer besteht, wäre die Maske ?u?l?l?d. Dies würde Kandidaten wie Pass9, Word1, Test0 usw. generieren.

Sie können diese Definitionen im Hilfemenü von Hashcat einsehen. Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die Masken betreffenden Hilfsinformationen anzuzeigen:

hashcat --help | grep "?l"

Sie sehen einen Abschnitt, der die eingebauten Zeichensätze auflistet, was die obigen Informationen bestätigt.

?l | abcdefghijklmnopqrstuvwxyz              | Kleinbuchstaben

Erstellen eines Beispiel-SHA1-Hashs eines bekannten Musters

In diesem Schritt erstellen Sie einen Ziel-SHA1-Hash für ein Passwort, das wir in den folgenden Schritten knacken werden. Um einen Passwortangriff durchzuführen, benötigen wir zunächst einen Hash, den wir angreifen können.

Wählen wir ein Passwort, das einem klaren Muster entspricht: LabX99!. Dieses Passwort hat folgende Struktur:

    1. Zeichen: Großbuchstabe (L)
    1. Zeichen: Kleinbuchstabe (a)
    1. Zeichen: Kleinbuchstabe (b)
    1. Zeichen: Großbuchstabe (X)
    1. Zeichen: Ziffer (9)
    1. Zeichen: Ziffer (9)
    1. Zeichen: Sonderzeichen (!)

Lassen Sie uns zuerst den SHA1-Hash für dieses Passwort generieren. Das Flag -n im echo-Befehl ist sehr wichtig, da es verhindert, dass ein Zeilenumbruchzeichen zur Zeichenkette hinzugefügt wird, was den resultierenden Hash verändern würde.

Führen Sie diesen Befehl in Ihrem Terminal aus:

echo -n "LabX99!" | sha1sum

Die Ausgabe ist der SHA1-Hash gefolgt von einem Bindestrich:

0e6cc6531a1a5545942a38a9339571934219c5b0  -

Speichern Sie diesen Hash nun in einer Datei namens target_hash.txt. Diese Datei wird die Eingabe für Hashcat sein.

echo "0e6cc6531a1a5545942a38a9339571934219c5b0" > target_hash.txt

Sie können mit cat target_hash.txt überprüfen, ob die Datei korrekt erstellt wurde.

Erstellen eines Masken-Angriffs-Befehls für ein Passwort fester Länge

In diesem Schritt erstellen Sie den vollständigen Hashcat-Befehl, um den Masken-Angriff basierend auf den uns vorliegenden Informationen durchzuführen.

Ein Hashcat-Befehl für einen Masken-Angriff besteht aus mehreren Schlüsselkomponenten:

  • -m <mode>: Dieses Flag gibt den Hash-Typ an. Jeder Hash-Algorithmus (wie MD5, SHA1, bcrypt) hat eine eindeutige Modusnummer.
  • -a <attack_mode>: Dieses Flag legt den Angriffsmodus fest. Für einen Masken-Angriff ist der Modus immer 3.
  • hash_file: Der Pfad zur Datei, die den/die zu knackenden Hash(es) enthält.
  • mask: Die Maske, die die Passwortstruktur definiert.

Zuerst müssen wir den richtigen Modus für SHA1 finden. Dies können Sie durch Durchsuchen der Hilfeausgabe von Hashcat ermitteln:

hashcat --help | grep "SHA1"

Sie sehen eine Liste von Hash-Typen. Der Modus für einen Standard-SHA1-Hash ist 100.

  100 | SHA1                                           | Raw Hash

Als Nächstes erstellen wir die Maske für unser Passwort LabX99!. Basierend auf der identifizierten Struktur und den gelernten Charsets:

  • L -> ?u
  • ab -> ?l?l
  • X -> ?u
  • 99 -> ?d?d
  • ! -> ?s

Wenn wir diese kombinieren, erhalten wir die endgültige Maske ?u?l?l?u?d?d?s.

Nun können wir den vollständigen Befehl zusammenstellen. Wir fügen auch das Flag --force hinzu, das Hashcat anweist, auch dann auszuführen, wenn eine nicht optimale Umgebung erkannt wird (z. B. die Ausführung auf einer CPU in einer VM), was für dieses Labor notwendig ist.

Die endgültige Befehlsstruktur lautet: hashcat -m 100 -a 3 target_hash.txt ?u?l?l?u?d?d?s --force. Dies werden wir im nächsten Schritt ausführen.

Ausführen des Masken-Angriffs und Überprüfen des Ergebnisses

In diesem Schritt führen Sie den Masken-Angriffs-Befehl aus und überprüfen, ob Hashcat das Passwort erfolgreich geknackt hat.

Sie haben den Befehl bereits erstellt. Führen Sie ihn nun in Ihrem Terminal aus, um den Angriff zu starten:

hashcat -m 100 -a 3 target_hash.txt ?u?l?l?u?d?d?s --force

Hashcat wird starten. Es werden möglicherweise einige Warnungen angezeigt, die Sie ignorieren können, da wir --force verwendet haben. Der Angriff beginnt, und da unsere Maske sehr spezifisch ist, sollte er fast sofort abgeschlossen sein. Die Ausgabe zeigt den Sitzungsstatus an, und Sie sollten den endgültigen Status als Cracked sehen.

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: SHA1
Hash.Target......: 0e6cc6531a1a5545942a38a9339571934219c5b0
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Mask.......: ?u?l?l?u?d?d?s [7]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:   192.9 kH/s (0.01ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 11881376/11881376 (100.00%)
Rejected.........: 0/11881376 (0.00%)
Restore.Point....: 456976/456976 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1
Candidates.#1....: LuvX98! -> LuvX99#
Hardware.Mon.#1..: Temp: 46c
...

Sobald ein Passwort geknackt ist, speichert Hashcat es in einer Datei namens "potfile" (hashcat.potfile). Um das geknackte Passwort anzuzeigen, können Sie das Flag --show mit den ursprünglichen Befehlsargumenten verwenden.

Führen Sie diesen Befehl aus, um das Ergebnis anzuzeigen:

hashcat -m 100 target_hash.txt --show

Die Ausgabe zeigt den Hash und das geknackte Klartextpasswort, getrennt durch einen Doppelpunkt:

0e6cc6531a1a5545942a38a9339571934219c5b0:LabX99!

Herzlichen Glückwunsch, Sie haben erfolgreich einen Masken-Angriff durchgeführt!

Zusammenfassung

In diesem Labor haben Sie erfolgreich einen Brute-Force-Masken-Angriff mit Hashcat durchgeführt.

Sie haben gelernt, wie Sie:

  • Das Kernkonzept eines Masken-Angriffs als gezielte Brute-Force-Methode verstehen.
  • Die integrierten Zeichensätze von Hashcat (?l, ?u, ?d, ?s) verwenden, um die Struktur eines Passworts zu definieren.
  • Einen SHA1-Hash für ein Zielpasswort generieren.
  • Einen vollständigen Hashcat-Befehl mit dem korrekten Hash-Modus, Angriffsmodus und der Maske erstellen.
  • Den Angriff ausführen und das geknackte Passwort mit der Option --show anzeigen.

Masken-Angriffe sind eine grundlegende Technik beim Passwort-Cracking und bei der Sicherheitsüberprüfung. Sie zeigen, wie selbst eine geringe Menge an Informationen über das Muster eines Passworts den benötigten Zeit- und Arbeitsaufwand zur Entschlüsselung drastisch reduzieren kann.