Hashcat Brain für verteiltes Cracking nutzen

Kali LinuxBeginner
Jetzt üben

Einleitung

Hashcat ist ein weltweit bekanntes Werkzeug zur Passwortwiederherstellung, das für seine Geschwindigkeit und Vielseitigkeit geschätzt wird. Bei der Durchführung von groß angelegten Passwort-Cracking-Operationen ist es üblich, mehrere Systeme zu verwenden, um dieselbe Liste von Hashes anzugreifen. Dieser verteilte Ansatz kann zu Ineffizienzen führen, da verschiedene Systeme möglicherweise Zeit damit verschwenden, dieselben Passwortkandidaten auszuprobieren.

Um dieses Problem zu lösen, hat Hashcat die "Brain"-Funktion eingeführt. Das Hashcat Brain fungiert als zentraler Server, der eine Aufzeichnung jedes versuchten Passwortkandidaten führt. Bevor ein Client ein Passwort ausprobiert, fragt er das Brain ab. Wenn das Passwort bereits zuvor versucht wurde, überspringt der Client es und spart so wertvolle Zeit und Ressourcen.

In diesem Lab lernen Sie, wie Sie:

  • Einen Hashcat Brain Server starten.
  • Einen Hashcat Client mit dem Server verbinden.
  • Einen Passwortangriff durchführen und beobachten, wie das Brain redundante Arbeit verhindert.

Das Konzept des Hashcat Brain verstehen

In diesem Schritt werden wir kurz das Kernkonzept des Hashcat Brain und das Problem, das es lösen soll, behandeln. Dieser Schritt ist rein konzeptionell, und es sind keine Befehle erforderlich.

In einem typischen Passwort-Cracking-Szenario haben Sie eine Liste von Hashes und eine Liste potenzieller Passwörter (eine Wortliste). Hashcat versucht jedes Passwort aus der Wortliste gegen die Hashes. Stellen Sie sich nun vor, Sie haben zwei separate Computer (oder Clients), die an derselben Aufgabe arbeiten.

Das Problem: Ohne Koordination könnten sowohl Client A als auch Client B zu unterschiedlichen Zeiten dasselbe Passwort, wie z. B. "123456", ausprobieren. Dies ist eine Verschwendung von Rechenleistung, da die Arbeit dupliziert wird.

Die Lösung (Hashcat Brain): Das Hashcat Brain fungiert als intelligenter zentraler Server. Der Arbeitsablauf sieht wie folgt aus:

  1. Ein Client (z. B. Client A) möchte das Passwort "123456" ausprobieren.
  2. Er sendet zuerst eine Anfrage an den Brain Server: "Wurde '123456' bereits ausprobiert?"
  3. Der Brain Server prüft seine Datenbank. Wenn es das erste Mal ist, antwortet er: "Nein, wurde es nicht."
  4. Client A testet das Passwort. Nachdem er fertig ist, informiert er den Brain Server: "Ich habe '123456' jetzt getestet." Der Brain Server zeichnet dies auf.
  5. Wenn später Client B "123456" ausprobieren möchte, fragt er den Brain Server. Der Server wird nun antworten: "Ja, es wurde ausprobiert."
  6. Client B überspringt dieses Passwort sofort und geht zum nächsten über, wodurch Zeit und Strom gespart werden.

Dieser Mechanismus stellt sicher, dass jeder Passwortkandidat im gesamten verteilten Netzwerk nur einmal getestet wird, was die Effizienz von groß angelegten Angriffen drastisch verbessert.

Den Hashcat Brain Server starten

In diesem Schritt starten Sie den Hashcat Brain Server. Dieser Server lauscht auf Verbindungen von Hashcat-Clients und verwaltet die Datenbank der ausprobierten Passwörter.

Für dieses Lab werden wir den Server und den Client auf derselben Maschine ausführen, aber sie werden über das Netzwerk kommunizieren, als wären sie auf separaten Systemen.

Der Befehl zum Starten des Servers ist hashcat mit dem Flag --brain-server. Wir werden auch einen Port angeben, auf dem er lauschen soll. Aus Sicherheitsgründen kann Hashcat automatisch ein Passwort für den Server generieren.

Zuerst erstellen wir ein Verzeichnis für unsere Brain-Dateien innerhalb unseres Projektordners.

mkdir -p ~/project/brain

Führen Sie nun den folgenden Befehl in Ihrem Terminal aus, um den Server zu starten. Er wird auf Port 7890 lauschen und seine Daten im Verzeichnis ~/project/brain/ speichern.

Hinweis: Dieser Befehl wird Ihr aktuelles Terminal belegen. Für die nächsten Schritte müssen Sie einen neuen Terminal-Tab öffnen, indem Sie auf das +-Symbol im Terminal-Panel klicken.

hashcat --brain-server --brain-port 7890 --brain-session-path ~/project/brain/

Nachdem Sie den Befehl ausgeführt haben, sehen Sie eine Ausgabe, die anzeigt, dass der Server läuft. Achten Sie genau auf die Zeile, die mit Password..: beginnt, da dies das automatisch generierte Passwort ist, das Sie für die Verbindung des Clients benötigen.

Starting brain server on 0.0.0.0:7890...

Password..: 82b5d1a3e... (a long hex string)

Accepting clients...

Lassen Sie dieses Terminal laufen. Schließen Sie es nicht. Öffnen Sie ein neues Terminal für die folgenden Schritte.

Das Brain Server Passwort abrufen

In diesem Schritt lernen Sie, wie Sie das Passwort des Brain Servers aus seiner Session-Datei abrufen. Während das Passwort beim Starten des Servers im Terminal angezeigt wurde, wird es auch in einer Datei gespeichert, um einen einfachen Zugriff zu ermöglichen, was in automatisierten Umgebungen nützlich ist.

Die Session-Datei heißt standardmäßig hashcat.brain. Da wir mit --brain-session-path einen benutzerdefinierten Pfad angegeben haben, befindet sich unsere Datei unter ~/project/brain/hashcat.brain.

Verwenden Sie in Ihrem neuen Terminal-Tab den Befehl cat, um den Inhalt dieser Datei anzuzeigen. Dieser Inhalt ist das Server-Passwort.

cat ~/project/brain/hashcat.brain

Die Ausgabe ist eine lange Zeichenkette aus hexadezimalen Zeichen, das ist das Passwort.

82b5d1a3e4c9a0f7d6b3c1a9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1f0e9

Dieses Passwort wird von jedem Client benötigt, der sich mit Ihrem Brain Server verbinden möchte. In den nächsten Schritten verwenden wir einen Befehl, um dieses Passwort direkt aus der Datei zu lesen, um Fehler beim Kopieren und Einfügen zu vermeiden.

Einen Hashcat Client zur Verbindung mit dem Brain konfigurieren

In diesem Schritt konfigurieren Sie einen Hashcat Client, um den Brain Server zu verwenden. Dies geschieht durch Hinzufügen mehrerer --brain-*-Optionen zu einem Standard-hashcat-Befehl.

Wir werden einen "Dry-Run"-Befehl ausführen, um die Verbindung zu testen. Die Option --show in Hashcat wird verwendet, um zuvor geknackte Hashes anzuzeigen, aber in Kombination mit den Brain-Client-Optionen dient sie als gute Möglichkeit, die Verbindung zu überprüfen, ohne einen vollständigen Angriff zu starten.

Die erforderlichen Client-Optionen sind:

  • --brain-client: Weist Hashcat an, im Client-Modus zu arbeiten.
  • --brain-host: Die IP-Adresse des Servers. Wir verwenden 127.0.0.1, da er sich auf derselben Maschine befindet.
  • --brain-port: Der Port, auf dem der Server lauscht, nämlich 7890.
  • --brain-password: Das Passwort für den Server. Wir können die Befehlssubstitution $(cat ...) verwenden, um es direkt aus der Datei zu lesen.

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

hashcat --show -m 0 ~/project/hashes.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)

Dieser Befehl wird im Client-Terminal nicht viel Ausgabe erzeugen. Wenn Sie jedoch zurück zu Ihrem ersten Terminal-Tab wechseln (dem, auf dem der Server läuft), sollten Sie eine neue Zeile sehen, die besagt Client connected from 127.0.0.1. Dies bestätigt, dass der Client erfolgreich eine Verbindung zum Server hergestellt hat.

## Im Server-Terminal
Accepting clients...
Client connected from 127.0.0.1

Dies bestätigt, dass Ihre Client-Konfiguration korrekt ist.

Einen Angriff ausführen und die Brain-Kommunikation beobachten

In diesem Schritt führen Sie einen Wörterbuchangriff durch und beobachten den Hashcat Brain in Aktion. Wir verwenden die Dateien hashes.txt und wordlist.txt, die für Sie vorbereitet wurden.

Führen Sie zuerst den Angriff aus. Der Befehl ist ein Standard-Wörterbuchangriff (-a 0) für MD5-Hashes (-m 0), mit den hinzugefügten Brain-Client-Optionen.

Führen Sie dies in Ihrem Client-Terminal (dem zweiten Tab) aus:

hashcat -m 0 -a 0 ~/project/hashes.txt ~/project/wordlist.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)

Der Angriff wird ausgeführt, und Sie werden sehen, wie er schnell das Passwort findet.

...
5f4dcc3b5aa765d61d8327deb882cf99:password
...
Session..........: hashcat
Status...........: Cracked
...

Nun kommt der wichtige Teil. Führen Sie genau denselben Befehl erneut aus.

hashcat -m 0 -a 0 ~/project/hashes.txt ~/project/wordlist.txt --brain-client --brain-host=127.0.0.1 --brain-port=7890 --brain-password=$(cat ~/project/brain/hashcat.brain)

Beobachten Sie diesmal die Ausgabe. Der Angriff sollte fast sofort beendet sein. Achten Sie auf die Zeile Status.

...
Session..........: hashcat
Status...........: Exhausted
...

Der Status ist Exhausted (erschöpft), da der Brain-Client den Server nach jedem Passwort in wordlist.txt gefragt hat und der Server geantwortet hat: "Ja, all diese wurden bereits zuvor versucht." Der Client wusste dann, dass es keine Arbeit zu tun gab, und wurde sofort beendet. Dies demonstriert die Leistungsfähigkeit und Effizienz des Hashcat Brain.

Zusammenfassung

In diesem Lab haben Sie erfolgreich das Hashcat Brain erkundet, eine leistungsstarke Funktion zur Optimierung verteilter Passwort-Cracking-Operationen.

Sie haben gelernt:

  • Das Kernkonzept hinter Hashcat Brain und wie es redundante Arbeit verhindert.
  • Wie man einen Hashcat Brain Server startet und ein sicheres Passwort generieren lässt.
  • Wie man die Session-Datei des Servers findet, um das Passwort abzurufen.
  • Wie man einen Hashcat Client mit den notwendigen Flags konfiguriert, um sich mit dem Brain zu verbinden.
  • Wie man einen Angriff ausführt und das Brain in Aktion beobachtet, indem man sieht, wie es intelligent zuvor versuchte Passwörter überspringt.

Durch die Beherrschung des Hashcat Brain können Sie die Effizienz jeder groß angelegten oder langlaufenden Passwort-Wiederherstellungskampagne erheblich steigern und so Zeit und Rechenressourcen sparen.