Office-Dokumente (DOCX, XLSX, PPTX) mit John the Ripper knacken

Kali LinuxBeginner
Jetzt üben

Einleitung

In diesem Lab werden Sie den Prozess des Knackens von passwortgeschützten Microsoft Office-Dokumenten (DOCX, XLSX, PPTX) mit dem leistungsstarken Passwort-Cracking-Tool John the Ripper untersuchen. Wir werden office2john.py verwenden, um den Passwort-Hash aus den Office-Dateien zu extrahieren und diesen Hash dann an John the Ripper zum Knacken weiterzuleiten. Dieses Lab demonstriert die Schritte, die in einem praktischen Szenario involviert sind, und hilft Ihnen, die Sicherheitsimplikationen schwacher Passwörter auf Office-Dokumente zu verstehen.

Erstellen einer passwortgeschützten DOCX-Datei

In diesem Schritt erstellen Sie eine einfache DOCX-Datei und schützen sie mit einem Passwort. Diese Datei wird dann in den folgenden Schritten verwendet, um ihren Passwort-Hash zu extrahieren und zu knacken.

Zuerst installieren wir libreoffice-writer, um die DOCX-Datei zu erstellen.

sudo apt install -y libreoffice-writer

Nach der Installation öffnen Sie LibreOffice Writer.

libreoffice --writer &

Ein neues LibreOffice Writer-Fenster wird geöffnet.

  1. Geben Sie etwas Text ein, z. B. "This is a test document."
  2. Gehen Sie zu Datei -> Speichern unter....
  3. Navigieren Sie im Dialogfeld Speichern unter zu /home/labex/project/.
  4. Geben Sie secret.docx als Dateinamen ein.
  5. Aktivieren Sie das Kontrollkästchen Mit Passwort speichern.
  6. Klicken Sie auf Speichern.
  7. Geben Sie im Dialogfeld Passwort festlegen password123 sowohl in das Feld Passwort eingeben als auch in das Feld Passwort bestätigen ein.
  8. Klicken Sie auf OK.
  9. Schließen Sie LibreOffice Writer.

Überprüfen Sie, ob die Datei secret.docx in Ihrem Verzeichnis ~/project vorhanden ist.

ls -l ~/project/secret.docx

-rw-r--r-- 1 labex labex XXXX Month XX XX:XX /home/labex/project/secret.docx

Hash aus DOCX mit office2john extrahieren

In diesem Schritt verwenden Sie das Skript office2john.py, das Teil der John the Ripper-Suite ist, um den Passwort-Hash aus der von Ihnen erstellten Datei secret.docx zu extrahieren. Dieser Hash ist es, den John the Ripper zu knacken versuchen wird.

Zuerst lokalisieren Sie das Skript office2john.py. Es befindet sich normalerweise im Verzeichnis /usr/share/john/.

find /usr/share/john/ -name office2john.py

/usr/share/john/office2john.py

Verwenden Sie nun office2john.py, um den Hash aus secret.docx zu extrahieren und ihn in einer Datei namens hash.txt zu speichern.

python3 /usr/share/john/office2john.py ~/project/secret.docx > ~/project/hash.txt

Zeigen Sie den Inhalt von hash.txt an, um den extrahierten Hash zu sehen.

cat ~/project/hash.txt

secret.docx:$office$*2007*100000*256*16*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX*XXXXXXXXXXXXXXX

Die Ausgabe zeigt eine lange Zeichenkette, die mit secret.docx:$office$... beginnt, was der Hash Ihres Passworts ist.

DOCX-Hash mit John the Ripper knacken

Nachdem Sie den Hash extrahiert haben, verwenden Sie John the Ripper, um ihn zu knacken. Für diese Demonstration verwenden wir eine einfache Wortliste, da unser Passwort "password123" ist, was ein gängiges Wort ist.

John the Ripper wird mit einer Standard-Wortliste geliefert, die sich unter /usr/share/john/password.lst befindet. Lassen Sie uns diese Wortliste verwenden.

john --wordlist=/usr/share/john/password.lst ~/project/hash.txt

John the Ripper beginnt mit der Verarbeitung des Hashes. Wenn das Passwort in der Wortliste enthalten ist, wird es schnell gefunden.


Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013/2016 [MD5/SHA1/SHA256/SHA512 RC4/AES])
Will run till all hashes are cracked, by default
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (secret.docx)
1g 0:00:00:00 DONE (20XX-XX-XX XX:XX) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Session completed.

Nach dem Knacken können Sie die geknackten Passwörter mit der Option --show anzeigen.

john --show ~/project/hash.txt

secret.docx:password123

1 password hash cracked, 0 left

Diese Ausgabe bestätigt, dass John the Ripper das Passwort für secret.docx erfolgreich als password123 geknackt hat.

Wiederholung für XLSX- und PPTX-Dateien

In diesem Schritt wenden Sie denselben Prozess auf XLSX- (Excel) und PPTX- (PowerPoint) Dateien an, um zu demonstrieren, dass office2john.py und John the Ripper bei verschiedenen Office-Dokumenttypen ähnlich funktionieren.

Installieren Sie zuerst libreoffice-calc und libreoffice-impress.

sudo apt install -y libreoffice-calc libreoffice-impress

Erstellen einer passwortgeschützten XLSX-Datei:

  1. Öffnen Sie LibreOffice Calc:
    libreoffice --calc &
  2. Geben Sie etwas Text ein, z. B. "Spreadsheet data."
  3. Gehen Sie zu Datei -> Speichern unter....
  4. Navigieren Sie zu /home/labex/project/.
  5. Geben Sie secret.xlsx als Dateinamen ein.
  6. Aktivieren Sie Mit Passwort speichern.
  7. Klicken Sie auf Speichern.
  8. Legen Sie das Passwort auf password123 fest und bestätigen Sie.
  9. Klicken Sie auf OK und schließen Sie LibreOffice Calc.

Hash aus XLSX extrahieren:

python3 /usr/share/john/office2john.py ~/project/secret.xlsx >> ~/project/hash.txt

Erstellen einer passwortgeschützten PPTX-Datei:

  1. Öffnen Sie LibreOffice Impress:
    libreoffice --impress &
  2. Fügen Sie einen Titel hinzu, z. B. "Presentation Title."
  3. Gehen Sie zu Datei -> Speichern unter....
  4. Navigieren Sie zu /home/labex/project/.
  5. Geben Sie secret.pptx als Dateinamen ein.
  6. Aktivieren Sie Mit Passwort speichern.
  7. Klicken Sie auf Speichern.
  8. Legen Sie das Passwort auf password123 fest und bestätigen Sie.
  9. Klicken Sie auf OK und schließen Sie LibreOffice Impress.

Hash aus PPTX extrahieren:

python3 /usr/share/john/office2john.py ~/project/secret.pptx >> ~/project/hash.txt

Alle Hashes knacken:
Führen Sie nun John the Ripper auf der aktualisierten Datei hash.txt aus, die nun Hashes für DOCX, XLSX und PPTX enthält.

john --wordlist=/usr/share/john/password.lst ~/project/hash.txt

Using default input encoding: UTF-8
Loaded 3 password hashes (Office, 2007/2010/2013/2016 [MD5/SHA1/SHA256/SHA512 RC4/AES])
Will run till all hashes are cracked, by default
Press 'q' or Ctrl-C to abort, almost any other key for status
password123      (secret.xlsx)
password123      (secret.pptx)
password123      (secret.docx)
3g 0:00:00:00 DONE (20XX-XX-XX XX:XX) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Session completed.

Überprüfen Sie alle geknackten Passwörter:

john --show ~/project/hash.txt

secret.xlsx:password123
secret.pptx:password123
secret.docx:password123

3 password hashes cracked, 0 left

Verständnis der Office-Dokumentverschlüsselung

In diesem Schritt werden wir kurz die Verschlüsselungsmechanismen von Microsoft Office-Dokumenten und die Effektivität von Tools wie John the Ripper erläutern.

Moderne Microsoft Office-Dokumente (DOCX, XLSX, PPTX) verwenden XML-basierte Formate (Open XML). Wenn ein Passwort festgelegt wird, wird der Inhalt des Dokuments verschlüsselt. Der Verschlüsselungsprozess beinhaltet die Ableitung eines Verschlüsselungsschlüssels aus dem Passwort des Benutzers mithilfe einer Key Derivation Function (KDF) wie PBKDF2 (Password-Based Key Derivation Function 2).

office2john.py extrahiert die notwendigen Parameter aus der XML-Struktur des Office-Dokuments, wie z. B. das Salt, die Iterationsanzahl und den verschlüsselten Verifier-Hash. Diese Parameter bilden zusammen mit dem Hash-Typ (z. B. Office 2007/2010/2013/2016) die "Hash"-Zeichenkette, die John the Ripper versteht.

John the Ripper führt dann einen Brute-Force- oder Wörterbuchangriff durch. Für jedes Wort in seiner Wortliste (oder jede Kombination bei einem Brute-Force-Angriff) wendet er dieselbe KDF mit den extrahierten Parametern an, um einen Kandidatenschlüssel zu generieren. Wenn dieser Kandidatenschlüssel mit dem verschlüsselten Verifier-Hash übereinstimmt, wird das Passwort gefunden.

Die Stärke der Verschlüsselung hängt stark von der Komplexität und Länge des Passworts ab. Schwache oder gängige Passwörter wie "password123" können mit Wörterbuchangriffen leicht geknackt werden, wie in diesem Lab gezeigt. Starke Passwörter, die lang, zufällig und mit einer Mischung aus Zeichen sind, erhöhen die für das Knacken erforderliche Zeit und Rechenressourcen erheblich und machen sie dadurch wesentlich sicherer.

Diese Übung unterstreicht die Bedeutung der Verwendung starker, eindeutiger Passwörter für sensible Dokumente, um sie vor unbefugtem Zugriff zu schützen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie mit office2john.py Passwort-Hashes aus passwortgeschützten Microsoft Office-Dokumenten (DOCX, XLSX, PPTX) extrahieren. Anschließend haben Sie John the Ripper verwendet, um diese extrahierten Hashes zu knacken, und damit die Anfälligkeit von Dokumenten demonstriert, die mit schwachen Passwörtern geschützt sind. Diese praktische Erfahrung gab Einblicke in den Prozess des Passwortknackens und unterstrich die Bedeutung der Verwendung starker, komplexer Passwörter zur Sicherung Ihrer digitalen Vermögenswerte.