Einleitung
Beim Penetration Testing und bei Sicherheitsaudits ist es üblich, mehrere Passwort-Cracking-Techniken gegen eine Reihe von Hashes auszuprobieren. Das manuelle Ausführen jedes Befehls kann zeitaufwendig und ineffizient sein. Bash-Scripting bietet eine leistungsstarke Möglichkeit, diesen Prozess zu automatisieren und eine Kette von Angriffen zu erstellen, die sequenziell ausgeführt werden, bis das Passwort gefunden ist.
In diesem Lab erstellen Sie ein Bash-Skript, um eine Reihe von Angriffen mit hashcat, einem beliebten und leistungsstarken Werkzeug zur Passwortwiederherstellung, zu automatisieren. Sie lernen, wie Sie ein Skript strukturieren, um zuerst einen Wörterbuchangriff (dictionary attack), gefolgt von einem regelbasierten Angriff (rule-based attack) und schließlich einem Maskenangriff (mask attack) zu versuchen. Diese praktische Erfahrung führt Sie in die Grundlagen der Automatisierung im Cybersecurity-Kontext ein.
Nach Abschluss dieses Labs werden Sie in der Lage sein:
- Ein Bash-Skript zu erstellen und ausführbar zu machen.
- Eine Sequenz von
hashcat-Befehlen zu einem Skript hinzuzufügen. - Verschiedene
hashcat-Angriffsmodi zu verstehen und zu implementieren. - Ein Skript auszuführen, um einen Workflow zu automatisieren.
Erstellen einer neuen Bash-Skriptdatei
In diesem Schritt erstellen Sie eine leere Bash-Skriptdatei, fügen die notwendige Shebang-Zeile hinzu und machen sie ausführbar. Ein Bash-Skript ist eine reine Textdatei, die eine Reihe von Befehlen enthält. Die Shebang-Zeile (#!/bin/bash) am Anfang des Skripts teilt dem System mit, welcher Interpreter zum Ausführen der Befehle in der Datei verwendet werden soll.
Erstellen Sie zuerst eine neue Datei namens attack.sh im Verzeichnis ~/project mit dem Befehl touch.
touch attack.sh
Öffnen Sie als Nächstes die Datei mit dem Texteditor nano, um die Shebang-Zeile hinzuzufügen.
nano attack.sh
Fügen Sie im nano-Editor die folgende Zeile am Anfang der Datei hinzu. Dies deklariert die Datei als Bash-Skript.
#!/bin/bash
Drücken Sie Ctrl+X, dann Y und Enter, um die Datei zu speichern und nano zu beenden.
Schließlich müssen Sie dem Skript Ausführungsberechtigungen erteilen, damit Sie es als Programm ausführen können. Verwenden Sie dazu den Befehl chmod mit dem Flag +x.
chmod +x attack.sh
Sie können die Berechtigungen mit ls -l überprüfen. Sie sollten ein 'x' im Berechtigungsblock für attack.sh sehen.
ls -l attack.sh
Erwartete Ausgabe:
-rwxr-xr-x 1 labex labex 12 May 20 10:00 attack.sh
Hinzufügen eines Hashcat-Befehls für einen Wörterbuchangriff
In diesem Schritt fügen Sie den ersten Befehl zu Ihrem Skript hinzu: einen Wörterbuchangriff. Dies ist eine der gebräuchlichsten und effektivsten Methoden zum Knacken von Passwörtern. Sie funktioniert, indem jedes Wort aus einer gegebenen Liste (dem Wörterbuch) als potenzielles Passwort ausprobiert wird.
Wir werden hashcat verwenden, um diesen Angriff durchzuführen. Die Laborumgebung wurde mit einer Hash-Datei hashes.txt und einer Wortliste wordlist.txt vorkonfiguriert.
Öffnen Sie Ihr attack.sh-Skript erneut mit nano.
nano attack.sh
Fügen Sie den folgenden hashcat-Befehl unterhalb der Zeile #!/bin/bash hinzu.
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist.txt
Lassen Sie uns diesen Befehl aufschlüsseln:
hashcat: Das Programm, das wir ausführen.-m 0: Gibt den Hash-Typ an.0entspricht MD5.-a 0: Gibt den Angriffsmodus an.0entspricht einem direkten Wörterbuchangriff (straight dictionary attack)./home/labex/project/hashes.txt: Die Datei, die den/die zu knackenden Hash(es) enthält./home/labex/project/wordlist.txt: Die Wörterbuchdatei, die für den Angriff verwendet werden soll.
Ihre Datei attack.sh sollte nun wie folgt aussehen:
#!/bin/bash
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist.txt
Drücken Sie Ctrl+X, dann Y und Enter, um zu speichern und zu beenden. Vorerst bauen wir nur das Skript und führen es erst im letzten Schritt aus.
Hinzufügen eines zweiten Befehls für einen regelbasierten Angriff
In diesem Schritt fügen Sie dem Skript einen zweiten Angriff hinzu. Wenn der Wörterbuchangriff fehlschlägt, ist ein regelbasierter Angriff oft der nächste logische Schritt. Dieser Angriff nimmt eine Wortliste und wendet eine Reihe von Regeln auf jedes Wort an, um neue Passwortkandidaten zu generieren. Zum Beispiel könnte eine Regel "123" an jedes Wort anhängen oder den ersten Buchstaben großschreiben.
Wir haben für diese Demonstration eine separate Wortliste wordlist_for_rule.txt und eine einfache Regeldatei rules.txt vorbereitet.
Öffnen Sie attack.sh erneut mit nano.
nano attack.sh
Fügen Sie den folgenden Befehl in einer neuen Zeile nach dem Befehl für den Wörterbuchangriff hinzu.
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist_for_rule.txt -r /home/labex/project/rules.txt
Der neue Teil dieses Befehls ist:
-r /home/labex/project/rules.txt: Dieses Flag weisthashcatan, die in der angegebenen Datei definierten Regeln anzuwenden.
Ihr attack.sh-Skript sollte nun zwei hashcat-Befehle enthalten:
#!/bin/bash
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist.txt
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist_for_rule.txt -r /home/labex/project/rules.txt
Drücken Sie Ctrl+X, Y und Enter, um die Änderungen zu speichern. Das Skript wird diese Befehle nun sequenziell ausführen, wenn es gestartet wird.
Hinzufügen eines dritten Befehls für einen Maskenangriff
In diesem Schritt fügen Sie die letzte Angriffsmethode zu Ihrem Skript hinzu: einen Maskenangriff. Diese Methode ist auch als Brute-Force-Angriff bekannt und ist nützlich, wenn Sie etwas über die Struktur des Passworts wissen, wie z. B. seine Länge oder die Arten von Zeichen, die es enthält.
Die Maske definiert die Struktur. Zum Beispiel steht ?l für einen Kleinbuchstaben, ?u für einen Großbuchstaben, ?d für eine Ziffer und ?s für ein Sonderzeichen.
Öffnen Sie attack.sh ein letztes Mal mit nano.
nano attack.sh
Fügen Sie den folgenden Befehl für den Maskenangriff in einer neuen Zeile am Ende des Skripts hinzu. Diese Maske ?l?l?l?l?l?l?l?l wird alle Kombinationen von 8-stelligen Kleinbuchstaben-Passwörtern ausprobieren.
hashcat -m 0 -a 3 /home/labex/project/hashes.txt ?l?l?l?l?l?l?l?l
Die wichtigsten Teile dieses Befehls sind:
-a 3: Dies setzt den Angriffsmodus auf3, was dem Maskenangriff entspricht.?l?l?l?l?l?l?l?l: Dies ist die Maske selbst, die die zu testende Passwortstruktur definiert.
Ihr vollständiges attack.sh-Skript sollte nun wie folgt aussehen:
#!/bin/bash
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist.txt
hashcat -m 0 -a 0 /home/labex/project/hashes.txt /home/labex/project/wordlist_for_rule.txt -r /home/labex/project/rules.txt
hashcat -m 0 -a 3 /home/labex/project/hashes.txt ?l?l?l?l?l?l?l?l
Speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, Y und Enter drücken. Ihr Skript für automatisierte Angriffe ist nun fertiggestellt.
Ausführen des Skripts zur automatischen Ausführung der Angriffskette
In diesem letzten Schritt führen Sie das erstellte Skript aus. Wenn Sie ./attack.sh ausführen, führt die Shell die darin enthaltenen Befehle nacheinander aus. hashcat ist intelligent; sobald es einen Hash geknackt hat, speichert es das Ergebnis in einer "potfile" (~/.local/share/hashcat/hashcat.potfile) und versucht nicht erneut, ihn zu knacken.
Führen Sie das Skript nun in Ihrem Terminal aus.
./attack.sh
Das Skript startet den ersten hashcat-Befehl. Da unsere wordlist.txt das richtige Passwort ("password") enthält, wird der erste Angriff erfolgreich sein. Sie sehen die Ausgabe von hashcat, während es initialisiert und ausgeführt wird.
Ein erfolgreicher Durchlauf zeigt den Status Cracked (Geknackt). Da das Passwort im ersten Schritt gefunden wird, fügt hashcat es der potfile hinzu. Die nachfolgenden Befehle im Skript werden ausgeführt, aber hashcat erkennt, dass der Hash bereits geknackt ist, und überspringt ihn.
Um das geknackte Passwort anzuzeigen, können Sie die Option --show von hashcat verwenden.
hashcat -m 0 --show /home/labex/project/hashes.txt
Dieser Befehl prüft die potfile auf geknackte Hashes, die der Eingabedatei entsprechen, und zeigt sie an.
Erwartete Ausgabe:
5f4dcc3b5aa765d61d8327deb882cf99:password
Herzlichen Glückwunsch! Sie haben erfolgreich ein Bash-Skript erstellt und ausgeführt, um eine Kette von Passwort-Cracking-Angriffen zu automatisieren.
Zusammenfassung
In diesem Lab haben Sie die Grundlagen der Automatisierung von Sicherheitsaufgaben mit Bash-Skripting gelernt. Sie haben erfolgreich ein Skript erstellt, das mehrere hashcat-Passwort-Cracking-Techniken miteinander verknüpft.
Sie begannen mit der Erstellung einer neuen Bash-Skriptdatei und machten diese ausführbar. Anschließend fügten Sie schrittweise Befehle für einen Wörterbuchangriff, einen regelbasierten Angriff und einen Maskenangriff hinzu. Schließlich führten Sie das Skript aus, um es in Aktion zu sehen, und beobachteten, wie hashcat das Passwort in der ersten Phase effizient findet und das Ergebnis aufzeichnet.
Die wichtigsten Fähigkeiten, die Sie geübt haben, sind:
- Erstellung grundlegender Bash-Skripte (
touch,chmod, Shebang). - Verwendung von
hashcatfür verschiedene Angriffsmodi (-a 0,-a 3). - Implementierung von Wörterbuch-, regelbasierten und Maskenangriffen.
- Automatisierung einer Befehlssequenz zur Erstellung eines effizienten Workflows.
Dieser Ansatz des Skriptings und der Automatisierung ist eine Kernkompetenz in der Cybersicherheit, der Systemadministration und vielen anderen IT-Bereichen, der es Ihnen ermöglicht, komplexe, sich wiederholende Aufgaben mit einem einzigen Befehl auszuführen.



