Einleitung
In diesem Lab lernen Sie den grundlegenden Prozess des Knackens eines passwortgeschützten ZIP-Archivs. Dies ist eine gängige Aufgabe in der digitalen Forensik und im Penetration Testing. Sie werden eine Kombination von Kommandozeilen-Tools, die in Linux verfügbar sind, verwenden, um dies zu erreichen. Der Prozess umfasst die Erstellung einer geschützten Beispieldatei, die Extraktion ihres Passwort-Hashes und die anschließende Verwendung eines leistungsstarken Passwort-Wiederherstellungstools, Hashcat, um den Hash zu knacken und das ursprüngliche Passwort zu enthüllen.
Am Ende dieses Labs werden Sie vertraut sein mit:
- Erstellen von verschlüsselten ZIP-Dateien.
- Verwenden von
zip2johnzur Extraktion von Passwort-Hashes. - Vorbereiten von Hashes für die Verwendung mit Hashcat.
- Ausführen eines Wörterbuchangriffs mit Hashcat zur Wiederherstellung eines Passworts.
Erstellen einer passwortgeschützten ZIP-Datei
In diesem Schritt erstellen Sie eine passwortgeschützte ZIP-Datei. Diese dient als unser Ziel für die Passwort-Knack-Übung. Wir verwenden den Standardbefehl zip mit der Option -e, was für "encrypt" (verschlüsseln) steht.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden. Wir haben bereits eine Datei namens secret.txt für Sie im Rahmen des Setup-Prozesses erstellt.
Führen Sie nun den folgenden Befehl aus, um ein verschlüsseltes ZIP-Archiv namens secret.zip aus der Datei secret.txt zu erstellen.
zip -e secret.zip secret.txt
Das System wird Sie auffordern, ein Passwort einzugeben und zu bestätigen. Verwenden Sie für dieses Lab das Passwort labex. Geben Sie labex ein, drücken Sie Enter und geben Sie es dann erneut zur Bestätigung ein.
Enter password:
Verify password:
adding: secret.txt (stored 0%)
Nachdem der Befehl abgeschlossen ist, können Sie mit dem Befehl ls überprüfen, ob die Datei secret.zip in Ihrem aktuellen Verzeichnis erstellt wurde.
ls -l
Sie sollten secret.zip in der Ausgabe sehen.
-rw-r--r-- 1 labex labex 218 May 20 10:00 secret.zip
-rw-r--r-- 1 labex labex 23 May 20 10:00 secret.txt
-rw-r--r-- 1 labex labex 32 May 20 10:00 wordlist.txt
Verwenden von zip2john zum Extrahieren des Hashes aus der ZIP-Datei
In diesem Schritt verwenden Sie das Dienstprogramm zip2john, um den Passwort-Hash aus der Datei secret.zip zu extrahieren. Passwort-Knack-Tools wie Hashcat arbeiten nicht direkt mit der verschlüsselten Datei; sie arbeiten mit deren Hash. zip2john ist ein Tool aus der John the Ripper-Suite, das speziell für diesen Zweck entwickelt wurde.
Führen Sie den folgenden Befehl aus, um secret.zip zu verarbeiten und den resultierenden Hash in einer neuen Datei namens zip_hash.txt zu speichern.
zip2john secret.zip > zip_hash.txt
Dieser Befehl erzeugt keine direkte Ausgabe auf dem Terminal, da wir sie in die Datei zip_hash.txt umgeleitet haben. Um den extrahierten Hash anzuzeigen, können Sie den Inhalt der neuen Datei mit dem Befehl cat anzeigen.
cat zip_hash.txt
Die Ausgabe wird ähnlich wie die folgende aussehen. Diese Zeichenkette enthält alle Informationen, die zum Knacken des Passworts benötigt werden.
secret.zip:$pkzip2$1*1*2*0*8*24*7b4f4718*0*28*0*8*24*7b4f*53a9*$/pkzip2$
Formatieren des Hashes für die Hashcat-Kompatibilität
In diesem Schritt formatieren Sie den extrahierten Hash, um ihn mit Hashcat kompatibel zu machen. Die Ausgabe von zip2john enthält den ursprünglichen Dateinamen (secret.zip:) als Präfix für die Hash-Zeichenkette. Hashcat benötigt nur die reinen Hash-Daten.
Betrachten wir erneut den Inhalt von zip_hash.txt:
secret.zip:$pkzip2$1*1*2*0*8*24*...
Wir müssen den Teil secret.zip: entfernen. Eine einfache Methode hierfür ist der Befehl cut, der Text basierend auf einem Trennzeichen aufteilen kann. Wir verwenden den Doppelpunkt (:) als Trennzeichen und wählen das zweite Feld aus.
Führen Sie den folgenden Befehl aus, um den Hash zu extrahieren und in einer neuen Datei namens hashcat_ready.txt zu speichern.
cut -d':' -f2 zip_hash.txt > hashcat_ready.txt
cut: Der Befehl zum Schneiden von Teilen von Zeilen.-d':': Gibt an, dass das Trennzeichen ein Doppelpunkt ist.-f2: Gibt an, dass wir das zweite Feld wünschen.
Zeigen Sie nun den Inhalt der neuen Datei an, um zu bestätigen, dass sie nur den Hash enthält.
cat hashcat_ready.txt
Die Ausgabe sollte die Hash-Zeichenkette ohne das Dateinamen-Präfix sein.
$pkzip2$1*1*2*0*8*24*7b4f4718*0*28*0*8*24*7b4f*53a9*$/pkzip2$
Diese Datei ist nun bereit für die Verwendung mit Hashcat.
Auswahl des richtigen Hashcat-Modus für PKZIP
In diesem Schritt lernen Sie, wie Sie den richtigen Hash-Modus für Hashcat identifizieren. Hashcat unterstützt das Knacken von Hunderten verschiedener Hash-Typen, und Sie müssen mithilfe einer Modusnummer angeben, welchen Typ Sie bereitstellen.
Der von uns extrahierte Hash beginnt mit $pkzip2$. Dies weist auf die verwendete Art der ZIP-Verschlüsselung hin. Wir können die Hilfe-Dokumentation von Hashcat nach Modi durchsuchen, die sich auf "PKZIP" beziehen, um die richtige Nummer zu finden.
Verwenden Sie den folgenden Befehl, um in der Hilfeausgabe von Hashcat nach "pkzip" zu suchen.
hashcat --help | grep -i "pkzip"
Die Ausgabe listet mehrere Hash-Modi auf, die sich auf verschiedene Versionen der PKZIP-Verschlüsselung beziehen.
17200 | PKZIP (legacy) | Archives
17210 | PKZIP (legacy) (Compressed) | Archives
17220 | PKZIP (legacy) (Mixed) | Archives
17225 | PKZIP (legacy) (Mixed + Compressed) | Archives
20500 | PKZIP Master Key | Archives
20510 | PKZIP Master Key (Compressed) | Archives
Unser Hash, der aus einem einfachen passwortgeschützten ZIP generiert wurde, entspricht dem Typ "PKZIP (legacy)". Wie Sie aus der Ausgabe ersehen können, ist die Modusnummer dafür 17200. Wir werden diesen Modus im nächsten Schritt verwenden, um unseren Angriff zu starten.
Starten eines Angriffs zur Wiederherstellung des ZIP-Passworts
In diesem Schritt starten Sie den Passwort-Knack-Angriff mit Hashcat. Wir werden einen "Straight"- oder Wörterbuchangriff durchführen, bei dem Hashcat jedes Passwort aus einer vorgegebenen Liste ausprobiert. Wir haben bereits eine einfache Liste namens wordlist.txt vorbereitet.
Die Befehlsstruktur für Hashcat lautet wie folgt:
hashcat [optionen] <hash_datei> <wortlisten_datei>
Basierend auf unseren vorherigen Schritten lautet der vollständige Befehl:
hashcat -m 17200 -a 0 hashcat_ready.txt wordlist.txt
Lassen Sie uns den Befehl aufschlüsseln:
-m 17200: Gibt den Hash-Modus für PKZIP (legacy) an, den wir im vorherigen Schritt identifiziert haben.-a 0: Gibt den Angriffsmodus an.0steht für einen Straight (Wörterbuch)-Angriff.hashcat_ready.txt: Die Datei, die unseren Ziel-Hash enthält.wordlist.txt: Die Datei, die die Liste potenzieller Passwörter enthält.
Führen Sie den Befehl aus. Hashcat wird starten, sein Backend initialisieren und den Angriff beginnen.
hashcat (v6.2.6) starting
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: PKZIP (legacy)
Hash.Target......: $pkzip2$1*1*2*0*8*24*7b4f4718*0*28*0*8*24*7b4f*53a9*$/pkzip2$
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 248.2 kH/s (0.10ms) @ Accel:128 Loops:128 Thr:1
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 3/4 (75.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: labex -> zzzzzzz
Hardware.Mon.#1..: Temp: 48c
$pkzip2$1*1*2*0*8*24*7b4f4718*0*28*0*8*24*7b4f*53a9*$/pkzip2$:labex
Started: ...
Stopped: ...
Hashcat hat das Passwort sehr schnell gefunden, da unsere Wortliste klein war. Die letzte Zeile der Ausgabe zeigt den Hash gefolgt von dem wiederhergestellten Passwort: labex.
Herzlichen Glückwunsch, Sie haben erfolgreich das Passwort für das ZIP-Archiv geknackt!
Zusammenfassung
In diesem Lab haben Sie den gesamten Workflow zum Knacken eines passwortgeschützten ZIP-Archivs mit gängigen Kommandozeilen-Tools erfolgreich abgeschlossen.
Sie haben gelernt, wie Sie:
- Eine verschlüsselte ZIP-Datei mit dem Befehl
ziperstellen. - Den Passwort-Hash aus der ZIP-Datei mit
zip2johnextrahieren. - Den extrahierten Hash so formatieren, dass er mit
Hashcatkompatibel ist. - Den korrekten Hash-Typ-Modus für Ihr Ziel in
Hashcatidentifizieren. - Einen Wörterbuchangriff mit
Hashcatstarten, um das Passwort erfolgreich wiederherzustellen.
Diese Fähigkeiten bilden ein grundlegendes Verständnis von Techniken zur Passwortwiederherstellung, die in Bereichen der Cybersicherheit wie digitale Forensik und ethisches Hacking von entscheidender Bedeutung sind. Obwohl wir zu Bildungszwecken ein einfaches Passwort und eine kleine Wortliste verwendet haben, gelten dieselben Prinzipien auch für komplexere reale Szenarien.


