ESCalator
3.98K subscribers
228 photos
1 video
1 file
96 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
加入频道
DPAPI — популярный вектор для атак на ОС семейства Windows 💻

Ключи Wi-Fi, сертификаты, учетные данные, cookies браузеров, DropBox, Skype — и это только часть мишеней, на которые нацелены злоумышленники.

Сегодня разберем, что произойдет, если у пользователя сохранены учетные данные на рабочей станции, введенной в домен Active Directory, а злоумышленник загрузил на нее всем знакомый Mimikatz.

👀 Для начала рассмотрим, как связан DPAPI с учетными данными пользователей и другими секретами.

Интерфейс DPAPI используется компанией Microsoft в Windows с 2000-го года. Он позволяет хранить чувствительные данные пользователя в шифрованном виде.

Что использует этот интерфейс для шифрования данных?

• SID пользователя;
• hash пароля;
• Masterkey — ключевую сущность, за которой будут охотиться злоумышленники.

Masterkey в свою очередь генерируется из так называемых prekey и 64 рандомных байт. SID, hash пароля пользователя и Masterkey путем криптографических манипуляций образуют blob. Поэтому для расшифрования злоумышленнику нужно знать конкретный blob, который нужно расшифровать, Masterkey в открытом виде, hash пароля пользователя и его SID для расшифровки.

🗂 Упомянутые объекты и параметры содержатся в различных папках и ветках реестра. Нам интересны следующие папки:

Папка с сredential blob

\Users\<user>\appdata\local\microsoft\credentials\<credential blob>


Папка с файлами пользовательских mastekeys


\Users\%USER%\AppData\Roaming\Microsoft\Protect\%SID%\


Папка с файлами приватных RSA-ключей

%APPDATA%\Roaming\Microsoft\Crypto\RSA\<SID>\


У одного пользователя может быть несколько masterkeys на узле. Злоумышленник сначала должен будет узнать, какой masterkey используется сейчас для blob с учетными данными.

Находясь на узле и загрузив Mimikatz, злоумышленник может найти эту информацию, прочитав свойства внутри blob с помощью команды mimikatz:


dpapi::cred /in:C:\users\<username>\appdata\local\microsoft\credentials\<blob>


💡 Дисклеймер: если команды будут выполняться через Cobalt Strike или другой C2, то синтаксис команд будет другой.

Для корректной идентификации Masterkey необходимо обратить внимание на параметр guidMasterkey — это идентификатор Masterkey, который использовался для шифрования этого blob. Благодаря тому, что в нашем случае рабочая станция введена в домен и имеет с ним связь, можно запросить резервный RSA-ключ с контроллера домена.

Здесь важно отметить, что злоумышленник может запросить его только для своего авторизованного пользователя. Для того чтобы запросить этот ключ для всех пользователей и расшифровать все Masterkeys, понадобятся права доменного администратора.

Запрос RSA-ключа на контроллер домена будет выполнен со службы MS-BKRP (backupkey remote protocol) RPC:


dpapi::masterkey /in:C:\users\<username>\appdata\roaming\microsoft\protect\<SID>\<masterkey> /rpc


В ответ злоумышленнику придет masterkey в открытом виде (параметр key:) и его sha1 hash.

После этого он может попытаться расшифровать учетные данные пользователя и получить пароль в открытом виде.

Сделает он это с помощью команды:


dpapi::cred /in:C:\users\<username>\appdata\local\microsoft\credentials\<blob> /masterkey:<masterkey_as_plain_text>


И получит на выходе в параметре CredentialBlob: пароль скомпрометированного пользователя 💻

#DPAPI #win #hunt #ti
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM