Passwortmanager-Tresore knacken: KeePass, 1Password, Bitwarden, LastPass
Hash aus einem KeePass-, 1Password-, Bitwarden- oder LastPass-Tresor extrahieren, dem richtigen hashcat-Modus zuordnen und knacken, ohne eine GPU-Woche zu verschwenden.
Ein Passwortmanager-Tresor basiert auf genau einer Annahme: Das Master-Passwort ist das Einzige, was einen Angreifer von allem darin trennt. Genau deshalb schicken KeePass, 1Password, Bitwarden und LastPass das Master-Passwort durch einen absichtlich langsamen Schlüsselableitungsschritt, bevor überhaupt irgendetwas entsperrt wird — und deshalb ähnelt das Knacken eines solchen Tresors, mit rechtmäßigem Zugriff auf die Datei, eher einem Angriff auf bcrypt als auf rohes MD5.
Zuerst den Hash extrahieren
Keines dieser Tresorformate lässt sich direkt an hashcat übergeben. Jedes hat einen eigenen John-the-Ripper-Extraktor, der die Schlüsselableitungsparameter und einen Prüfwert aus der Tresordatei holt:
keepass2john vault.kdbx > keepass.hash
python3 1password2john.py vault.opvault > 1password.hash
python3 bitwarden2john.py data.json > bitwarden.hash
python3 lastpass2john.py export.json > lastpass.hash
Jeder Extraktor gibt eine einzelne Zeile mit einem formatspezifischen Präfix aus — $keepass$, $cloudkeychain$, $bitwarden$, oder bei LastPass schlicht hash:iterationen:email. Dieses Präfix ist der Identifikationsschritt, genau wie ein $zip2$- oder $RAR3$-Präfix zeigt, welchen Archiv-Hash man vor sich hat. hashcat akzeptiert die extrahierte Zeile direkt.
Den richtigen Modus wählen
| Produkt | Präfix | hashcat-Modus | Hinweise |
|---|---|---|---|
| KeePass 1/2 (ohne Keyfile) | $keepass$*1*... / $keepass$*2*... | 13400 | AES- oder Twofish-Master-Key |
| KeePass 1/2 (mit Keyfile) | $keepass$*... | 29700 | Datenbank benötigt zusätzlich ein Keyfile |
| 1Password, Agile Keychain (vor 2015) | — | 6600 | PBKDF2-HMAC-SHA1, älteres Tresorformat |
| 1Password, Cloud Keychain | $cloudkeychain$ | 8200 | PBKDF2-HMAC-SHA512, OPVault-basiertes Format |
| Bitwarden | $bitwarden$2*... | 23400 | PBKDF2-HMAC-SHA256, Iterationszahl im Hash eingebettet |
| LastPass | hash:iterationen:email | 6800 | PBKDF2-HMAC-SHA256, E-Mail ist Teil des Salts |
Ein falscher Modus lässt hashcat die Zeile entweder mit einem Längen- oder Token-Fehler komplett ablehnen, oder er läuft still gegen den falschen Algorithmus und findet nie eine Übereinstimmung. Im Zweifel gilt das Präfix der extrahierten Zeile als Wahrheit, nicht die Dateiendung.
1Password hat drei Generationen, nicht eine
Hier bleiben die meisten hängen. 1Password hat sein zugrunde liegendes Tresorformat zweimal gewechselt: Agile Keychain (Modus 6600, seit 2015 veraltet), Cloud Keychain / OPVault (Modus 8200, PBKDF2-HMAC-SHA512) und die aktuelle 1Password-8-App, die hashcat separat als Modus 31800 unterstützt. Wird 1password2john.py gegen den falschen Export ausgeführt, oder gegen einen 1Password-8-Tresor, während ein OPVault-artiger Hash erwartet wird, entsteht eine Zeile, die hashcat nicht parsen kann. Prüfe vor der Moduswahl, welche App-Version den Export erzeugt hat.
Die Argon2-Besonderheit bei KeePass
Seit Version 2.35 lässt KeePass statt der klassischen AES-Schlüsseltransformation auch Argon2 als Master-Key-KDF zu. Modus 13400 wurde um die AES/Twofish-Transformation herum gebaut; meldet keepass2john in den extrahierten Parametern einen Argon2-basierten KDF, solltest du vor der Annahme, dass Modus 13400 passt, die --example-hashes-Ausgabe deiner hashcat-Version prüfen — die Unterstützung neuerer KeePass-KDF-Varianten hinkte dem AES-Fall historisch hinterher.
Warum rockyou allein nicht reicht
Jedes Format in dieser Tabelle führt absichtlich zehn- bis hunderttausende PBKDF2-Runden (oder das KeePass-Äquivalent) pro Versuch aus. Das ist dasselbe Designziel wie bei bcrypts Kostenfaktor: den Milliarden-pro-Sekunde-Vorteil einer GPU auf bestenfalls ein paar Tausend Versuche pro Sekunde zu drücken. Bitwarden bettet seine Iterationszahl sogar direkt in den extrahierten Hash ein, sodass man genau ablesen kann, wie teuer jeder Versuch ist, bevor man überhaupt startet.
hashcat -m 23400 -a 0 bitwarden.hash gezielt.txt -r rules/best64.rule
Bei diesem Durchsatz ist ein generischer Wortlisten-plus-Regeln-Lauf gegen ein starkes Master-Passwort eine mehrwöchige Aufgabe. Bring stattdessen eine kurze, treffsichere Liste mit — wiederverwendete Passwörter aus zielbezogenen Breach-Daten, Namens-/Datums-/Haustier-Muster, Variationen von allem, was man über die Zielperson bereits weiß — dieselbe Zieldisziplin wie in Wortlisten und Regeln, die wirklich funktionieren.
Was Verteidiger tatsächlich tun sollten
Nutze ein langes, einzigartiges Master-Passwort — Länge zählt gegen einen PBKDF2-artigen KDF deutlich mehr als Komplexität, weil die Iterationszahl die rohe Rategeschwindigkeit bereits neutralisiert. Aktiviere die Zwei-Faktor-Entsperrung, wo die App sie anbietet (1Passwords Secret Key, Bitwardens 2FA), denn das fügt einen Wert hinzu, den ein Angreifer nicht allein aus der Tresordatei ableiten kann. Und wer die Tresore eines Teams verwaltet, sollte Exportdateien und Backups von jedem kompromittierbaren Endgerät oder Cloud-Share fernhalten — der Schlüsselableitungsschritt muss nur einmal laufen, sobald ein Angreifer die Datei bereits besitzt.