
SharpDPAPI — это порт на C# некоторых функций DPAPI из Mimikatz.
SharpDPAPI — это порт на C# некоторой функциональности DPAPI из проекта Mimikatz от @gentilkiwi.
Я не придумал эту логику, это просто порт из Mimikatz, сделанный для лучшего понимания процесса и его адаптации под наш рабочий процесс.
Подпроект SharpChrome является адаптацией работы @gentilkiwi и @djhohnstein, в частности его проекта SharpChrome. Однако эта версия SharpChrome использует другую версию C# SQL библиотеки, которая поддерживает открытие без блокировки. SharpChrome собран как отдельный проект в SharpDPAPI из-за размера используемой SQLite-библиотеки.
Как Chrome, так и новые браузеры Edge на основе Chromium могут быть проанализированы с помощью SharpChrome.
SharpChrome также использует минимизированную версию BCrypt P/Invoke кода от @AArnott, выпущенную под лицензией MIT.
Если вы не знакомы с DPAPI, посмотрите эту статью для получения дополнительной информации. Для получения дополнительной информации о Credentials и Vaults в контексте DPAPI ознакомьтесь с записью в вики от Benjamin.
@harmj0y является основным автором этого порта.
SharpDPAPI распространяется под лицензией BSD 3-Clause.
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.20.0
Получить резервный ключ DPAPI контроллера домена, опционально указав DC и выходной файл:
SharpDPAPI backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]
Команда *search* выполняет поиск потенциальных DPAPI-блобов в реестре, файлах, папках и base64-блобов:
search /type:registry [/path:HKLM\path\to\key] [/showErrors]
search /type:folder /path:C:\path\to\folder [/maxBytes:<numOfBytes>] [/showErrors]
search /type:file /path:C:\path\to\file [/maxBytes:<numOfBytes>]
search /type:base64 [/base:<base64 string>]
Машинная/SYSTEM разведка:
machinemasterkeys - разведать все доступные файлы машинных главных ключей (повышает привилегии до SYSTEM для получения секрета LSA DPAPI_SYSTEM)
machinecredentials - использовать 'machinemasterkeys', затем разведать файлы машинных учетных данных
machinevaults - использовать 'machinemasterkeys', затем разведать машинные Vaults
machinetriage - выполнить команды 'machinecredentials' и 'machinevaults'
Пользовательская разведка:
Аргументы для команды 'masterkeys':
/target:FILE/folder - разведать конкретный главный ключ или папку с главными ключами (иначе разведать локальные главные ключи)
/pvk:BASE64... - использовать закрытый ключ DPAPI домена в base64 для предварительной расшифровки доступных пользовательских главных ключей
/pvk:key.pvk - использовать файл закрытого ключа DPAPI домена для предварительной расшифровки доступных пользовательских главных ключей
/password:X - расшифровать главные ключи целевого пользователя с помощью пароля в открытом виде (работает удаленно)
/ntlm:X - расшифровать главные ключи целевого пользователя с помощью NTLM-хэша (работает удаленно)
/credkey:X - расшифровать главные ключи целевого пользователя с помощью DPAPI credkey (доменного или локального SHA1, работает удаленно)
/rpc - расшифровать главные ключи целевого пользователя, запросив у контроллера домена
/server:SERVER - разведать удаленный сервер, предполагая права администратора
/hashes - вывести 'хэши' пользовательских файлов главных ключей в формате JTR/Hashcat (без расшифровки)
Аргументы для команд credentials|vaults|rdg|keepass|triage|blob|ps:
Расшифровка:
/unprotect - принудительно использовать CryptUnprotectData() для команд 'ps', 'rdg' или 'blob'
/pvk:BASE64... - использовать закрытый ключ DPAPI домена в base64 для предварительной расшифровки доступных пользовательских главных ключей
/pvk:key.pvk - использовать файл закрытого ключа DPAPI домена для предварительной расшифровки доступных пользовательских главных ключей
/password:X - расшифровать главные ключи целевого пользователя с помощью пароля в открытом виде (работает удаленно)
/ntlm:X - расшифровать главные ключи целевого пользователя с помощью NTLM-хэша (работает удаленно)
/credkey:X - расшифровать главные ключи целевого пользователя с помощью DPAPI credkey (доменного или локального SHA1, работает удаленно)
/rpc - расшифровать главные ключи целевого пользователя, запросив у контроллера домена
GUID1:SHA1 ... - использовать один или несколько GUID:SHA1 главных ключей для расшифровки
/mkfile:FILE - использовать файл с одним или несколькими GUID:SHA1 главными ключами для расшифровки