Skip to content

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.

Veröffentlicht am 4 Min. Lesezeit

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

ProduktPräfixhashcat-ModusHinweise
KeePass 1/2 (ohne Keyfile)$keepass$*1*... / $keepass$*2*...13400AES- oder Twofish-Master-Key
KeePass 1/2 (mit Keyfile)$keepass$*...29700Datenbank benötigt zusätzlich ein Keyfile
1Password, Agile Keychain (vor 2015)—6600PBKDF2-HMAC-SHA1, älteres Tresorformat
1Password, Cloud Keychain$cloudkeychain$8200PBKDF2-HMAC-SHA512, OPVault-basiertes Format
Bitwarden$bitwarden$2*...23400PBKDF2-HMAC-SHA256, Iterationszahl im Hash eingebettet
LastPasshash:iterationen:email6800PBKDF2-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.

Verwandte Artikel

Extrahiere einen knackbaren Hash aus einem LUKS-Header oder einem BitLocker-Volume, wähle den richtigen hashcat-Modus und starte den Angriff.
Extrahiere den Hash aus einem geschützten ZIP-, RAR- oder 7-Zip-Archiv mit zip2john / rar2john / 7z2john, wähle den richtigen hashcat-Modus und knacke ihn ohne zu raten.
Extrahiere den Hash eines verschlüsselten id_rsa mit ssh2john, wähle den richtigen hashcat-Modus für PEM-Schlüssel, und erfahre, wann nur John moderne OpenSSH-Schlüssel knackt.