Skip to content

Casser les coffres de gestionnaires de mots de passe : KeePass, 1Password, Bitwarden, LastPass

Extrayez le hash de la clé maîtresse d'un coffre KeePass, 1Password, Bitwarden ou LastPass avec le bon script *2john, associez-le au bon mode hashcat, et cassez-le sans gaspiller une semaine de GPU.

Publié le 5 min de lecture

Un coffre de gestionnaire de mots de passe repose sur une seule hypothèse : le mot de passe maître est la seule chose qui sépare un attaquant de tout ce qu'il contient. C'est exactement pourquoi KeePass, 1Password, Bitwarden et LastPass font tous passer le mot de passe maître par une étape de dérivation de clé délibérément lente avant qu'il ne déverrouille quoi que ce soit — et pourquoi casser l'un d'eux, quand on y a légalement accès, ressemble bien plus à une attaque contre bcrypt qu'à une attaque contre du MD5 brut.

Extraire d'abord le hash

Aucun de ces formats de coffre ne se donne tel quel à hashcat. Chacun dispose d'un extracteur John the Ripper dédié qui récupère les paramètres de dérivation de clé et une valeur de vérification dans le fichier du coffre :

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

Chaque extracteur affiche une seule ligne commençant par un préfixe propre au format — $keepass$, $cloudkeychain$, $bitwarden$, ou un simple hash:iterations:email pour LastPass. Ce préfixe constitue l'étape d'identification, de la même façon qu'un préfixe $zip2$ ou $RAR3$ indique quel hash d'archive vous avez sous les yeux. hashcat accepte directement la ligne extraite.

Choisir le mode

ProduitPréfixeMode hashcatRemarques
KeePass 1/2 (sans fichier clé)$keepass$*1*... / $keepass$*2*...13400Clé maîtresse AES ou Twofish
KeePass 1/2 (avec fichier clé)$keepass$*...29700La base nécessite aussi un fichier clé
1Password, Agile Keychain (avant 2015)—6600PBKDF2-HMAC-SHA1, ancien format de coffre
1Password, Cloud Keychain$cloudkeychain$8200PBKDF2-HMAC-SHA512, format basé sur OPVault
Bitwarden$bitwarden$2*...23400PBKDF2-HMAC-SHA256, nombre d'itérations intégré au hash
LastPasshash:iterations:email6800PBKDF2-HMAC-SHA256, l'email fait partie du sel

Se tromper de mode fait soit rejeter la ligne par hashcat avec une erreur de longueur ou de nombre de jetons, soit lancer silencieusement le mauvais algorithme sans jamais trouver de correspondance. En cas de doute, le préfixe de la ligne extraite fait foi, pas l'extension du fichier.

1Password a trois générations, pas une seule

C'est là que la plupart des gens se bloquent. 1Password a changé deux fois de format de coffre sous-jacent : Agile Keychain (mode 6600, abandonné depuis 2015), Cloud Keychain / OPVault (mode 8200, PBKDF2-HMAC-SHA512), et l'application 1Password 8 actuelle, que hashcat prend en charge séparément sous le mode 31800. Lancer 1password2john.py sur le mauvais export, ou sur un coffre 1Password 8 en attendant un hash de type OPVault, produit une ligne que hashcat ne saura pas interpréter. Vérifiez quelle version de l'application a produit l'export avant de choisir un mode.

La particularité Argon2 de KeePass

Depuis la version 2.35, KeePass permet de choisir Argon2 plutôt que la transformation AES classique comme KDF de la clé maîtresse. Le mode 13400 a été conçu autour de la transformation AES/Twofish ; si keepass2john signale un KDF basé sur Argon2 dans les paramètres qu'il extrait, vérifiez la sortie --example-hashes de votre version de hashcat avant de supposer que le mode 13400 fonctionnera — la prise en charge des nouvelles variantes de KDF de KeePass a historiquement accusé du retard par rapport au cas AES.

Pourquoi rockyou seul ne suffira pas

Chaque format de ce tableau exécute volontairement des dizaines à des centaines de milliers de tours PBKDF2 (ou l'équivalent chez KeePass) par tentative. C'est le même objectif de conception que le facteur de coût de bcrypt : transformer l'avantage d'un GPU, des milliards de tentatives par seconde, en quelques milliers de tentatives par seconde au mieux. Bitwarden va jusqu'à intégrer directement son nombre d'itérations dans le hash extrait, ce qui permet de lire exactement le coût de chaque tentative avant même de commencer.

hashcat -m 23400 -a 0 bitwarden.hash ciblee.txt -r rules/best64.rule

À ce débit, lancer une liste de mots générique accompagnée de règles contre un mot de passe maître solide représente un travail de plusieurs semaines. Apportez plutôt une liste courte et à fort potentiel — mots de passe réutilisés issus de fuites liées à la cible, motifs à base de noms/dates/animaux de compagnie, variations sur tout ce que vous savez déjà sur elle — la même discipline de ciblage que celle détaillée dans listes de mots et règles qui fonctionnent vraiment.

Ce que les défenseurs devraient vraiment faire

Utilisez un mot de passe maître long et unique — la longueur compte bien plus que la complexité face à un KDF de type PBKDF2, car le nombre d'itérations neutralise déjà la vitesse brute de devinette. Activez le déverrouillage à deux facteurs quand l'application le permet (la clé secrète de 1Password, le 2FA de Bitwarden), car cela ajoute une donnée qu'un attaquant ne peut pas déduire du seul fichier de coffre. Et si vous administrez les coffres d'une équipe, gardez les fichiers d'export et les sauvegardes hors de portée de tout poste compromis ou partage cloud — l'étape de dérivation de clé n'a besoin de s'exécuter qu'une fois que l'attaquant possède déjà le fichier.

Articles liés

Extrayez un hash exploitable depuis un en-tête LUKS ou un volume BitLocker, choisissez le bon mode hashcat et lancez l'attaque.
Extrayez le hash d'une archive ZIP, RAR ou 7-Zip protégée avec zip2john / rar2john / 7z2john, choisissez le bon mode hashcat, et cassez-la sans deviner.
Extrayez le hash d'un id_rsa chiffré avec ssh2john, choisissez le bon mode hashcat pour les clés PEM classiques, et sachez quand seul John the Ripper casse une clé OpenSSH moderne.