SharpDPAPI — это инструмент, разработанный на языке C# и представленный в рамках проекта GhostPack. Он является портом некоторых функций Mimikatz, связанных с DPAPI (Data Protection API) — встроенного механизма Windows для защиты данных. SharpDPAPI позволяет выполнять аудиторские операции и форензическую работу с DPAPI-ключами и зашифрованными данными без использования PowerShell.
⚡️ Основные возможности SharpDPAPI:
⏺️ Извлечение ключей резервного копирования домена (backup key): утилита позволяет получить DPAPI backup key с контроллера домена с помощью API в стиле Mimikatz. Необходимы права Domain Admin (или эквивалентные) для получения этого ключа.
⏺️ Триаж (masterkeys): поиск файлов пользовательских masterkey и их расшифровка, включая генерацию сопоставления GUID:SHA1. Возможна дешифровка с помощью предоставленного backup key или пароля.
⏺️ Поиск DPAPI-данных: команда search позволяет искать DPAPI-блобы в реестре, файлах, папках или base64-строках по сигнатурам заголовка DPAPI.
⏺️ Работа с браузерными данными: модуль SharpChrome внутри SharpDPAPI позволяет извлекать и расшифровывать cookie-файлы и логины из Chromium-браузеров (Chrome, Edge, Brave, Slack). Доступны параметры управления форматом вывода, фильтром по URL или файлу состояния.
🖥 Примеры использования:
⏺️ Получение backup key:
SharpDPAPI.exe backupkey
(или с указанием контроллера /server:имя_доменного_контроллера и выводом в файл /file:key.pvk)
⏺️ Триаж masterkey:
SharpDPAPI.exe masterkeys /pvk:key.pvk
— формирует список GUID:SHA1, соответствующих найденным masterkey-файлам.
⏺️ Поиск DPAPI-блобов:
SharpDPAPI.exe search /type:folder /path:C:\Users\…\
— ищет DPAPI-структуры внутри файлов папки или реестра.
⏺️ Доступ к браузерным данным:
SharpDPAPI.exe logins /format:json /browser:edge
SharpDPAPI.exe cookies /url:example.com /format:table
— извлекает и расшифровывает логины и cookie-файлы (включая фильтрацию).
Сборка и особенности запуска:
➡️ SharpDPAPI требует ручной сборки: откройте .sln в Visual Studio (поддерживается .NET Framework 3.5 по умолчанию, возможно изменение целевой версии) и соберите в конфигурации Release.
➡️ Возможна работа в памяти через PowerShell-обёртку: можно загрузить .exe как base64-строку и вызвать Main() или MainString() для интеграции с PSRemoting.
