Passwortgeschützte Office- und PDF-Dateien mit hashcat knacken
Extrahiere den Hash aus einem verschlüsselten Word-, Excel- oder PDF-Dokument mit office2john / pdf2john und wähle den richtigen hashcat-Modus — 9400 bis 10700 — um das Passwort wiederherzustellen.
Ein .docx, das mit „Bearbeitung einschränken" gesperrt ist, und ein PDF, das schon vor dem Öffnen in Acrobat ein Passwort verlangt, wirken wie zwei verschiedene Probleme. Darunter steckt dasselbe Problem: ein Verschlüsselungsschlüssel, der aus einem Passwort abgeleitet wird, mit einer Schlüsselableitungsfunktion, die bei jedem Versuch neu berechnet werden muss. Den richtigen Hash extrahieren, den richtigen hashcat-Modus wählen — dann fallen beide demselben Wortlisten-und-Regeln-Workflow zum Opfer, den du auch sonst überall einsetzt.
Schritt eins: den Hash aus der Datei holen
Weder hashcat noch John the Ripper lesen .docx, .xlsx oder .pdf direkt. Zuerst extrahierst du die Verschlüsselungsparameter mit dem passenden *2john-Skript aus der Jumbo-Distribution von John the Ripper (im Verzeichnis run/):
python3 office2john.py geschuetzt.docx > office.hash
python3 pdf2john.py geschuetzt.pdf > pdf.hash
Beide geben eine Zeile im Format name:hash aus. Entferne das Dateinamen-Präfix, bevor du sie an hashcat übergibst — John akzeptiert die Zeile dagegen unverändert:
cut -d: -f2- office.hash > office_hashcat.txt
Den Office-Modus wählen
Office-Hashes beschreiben sich selbst: Die Zeichenkette beginnt mit $office$*2007*, $office$*2010* oder $office$*2013*, Raten entfällt also:
| Office-Version | Hash-Präfix | hashcat-Modus | Ableitung |
|---|---|---|---|
| 2007 | $office$*2007* | -m 9400 | SHA-1, 50.000 Iterationen |
| 2010 | $office$*2010* | -m 9500 | SHA-1, 100.000 Iterationen |
| 2013 / 2016 / 2019 / 365 | $office$*2013* | -m 9600 | SHA-512, 100.000 Iterationen |
hashcat -m 9600 office_hashcat.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
John erkennt alle drei automatisch unter einem Format:
john --format=office office.hash --wordlist=rockyou.txt
2013 ist die Version, für die man Zeit einplanen sollte. Office wechselte von SHA-1 zu SHA-512 und behielt die 100.000 Iterationen bei — das landet auf einer starken GPU im Bereich von wenigen Hunderttausend Versuchen pro Sekunde, ähnliches Terrain wie bcrypt, weit entfernt von den Milliarden pro Sekunde bei rohem NTLM.
Den PDF-Modus wählen
Die PDF-Verschlüsselung entwickelte sich über die Acrobat-Versionen hinweg unterschiedlich, und hashcat teilt sie in mehrere Modi auf. Die beiden Enden der Bandbreite sind auf dieser Seite abgedeckt:
| PDF-Revision | hashcat-Modus | Hinweise |
|---|---|---|
| 1.1–1.3 (Acrobat 2–4) | -m 10400 | RC4 mit 40 oder 128 Bit, keine KDF pro Versuch — schnell |
| 1.4–1.6 (Acrobat 5–8) | -m 10500 | RC4 oder AES-128, eine einzelne MD5-Runde |
| 1.7 Level 3 (Acrobat 9) | -m 10600 | AES-128, SHA-256 |
| 1.7 Level 8 (Acrobat 10–11) | -m 10700 | AES-256, SHA-256 x 64 Runden — der langsame |
pdf2john.py schreibt die Revision direkt in die $pdf$-Zeichenkette, du liest den Modus also am Hash ab, statt ihn aus der Datei zu erraten:
hashcat -m 10700 pdf_hashcat.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
John deckt auch hier die ganze Familie unter einem Format ab:
john --format=pdf pdf.hash --wordlist=rockyou.txt
Ein altes PDF (10400) lässt sich fast mit roher Hash-Geschwindigkeit knacken. Ein modernes AES-256-PDF (10700) ist absichtlich langsam — derselbe Design-Kompromiss wie bei sha512crypt oder DCC2: Die Iterationszahl existiert genau deshalb, um Brute-Force teuer zu machen, also zahlt sich eine gezielte Wortliste hier weit mehr aus als ein blinder Maskenangriff. Wenn du die passende Wortliste und Regeln wählen noch nicht gelesen hast, fang dort an, bevor du Stunden mit der falschen Liste verbrennst.
Die PDF-Falle: zwei Passwörter, eine Datei
Ein PDF kann unabhängig voneinander ein Benutzerpasswort (nötig, um das Dokument überhaupt zu öffnen) und ein Eigentümerpasswort (nötig, um Berechtigungen wie Drucken oder Kopieren zu ändern) tragen. Viele „geschützte" PDFs setzen nur ein Eigentümerpasswort und lassen das Benutzerpasswort leer — die Datei öffnet sich dann ohne jede Abfrage, obwohl pdf2john.py bereitwillig einen Hash extrahiert und hashcat ihn ebenso bereitwillig knackt. Bevor du GPU-Zeit investierst, versuch einfach, die Datei mit leerem Passwort zu öffnen. Öffnet sie sich, brauchst du eigentlich gar kein Knacken, sondern nur das Entfernen der Eigentümerpasswort-Beschränkungen — das erledigen die meisten PDF-Werkzeuge automatisch, sobald du das leere Benutzerpasswort angibst.
Wann sich die GPU-Zeit nicht lohnt
Wenn die Hash-Identifizierung ergibt, dass ein Dokument mit Office 2013 oder PDF 10700 geschützt ist und du keine andere Spur hast, behandle es wie einen starken sha512crypt-Hash: Eine kurze, gezielte Liste schlägt eine lange generische, und ein erschöpfender Maskenangriff jenseits von sechs oder sieben Zeichen ist auf handelsüblicher Hardware nicht realistisch. Kläre zuerst die Herkunft — siehe den richtigen hashcat-Modus finden, falls die extrahierte Zeichenkette keiner der obigen Tabellen eindeutig entspricht — und stecke deine Zeit dann in die Wortliste, nicht in den Schlüsselraum.