Home > Анализ Мастер Ключа
Анализ Мастер Ключа DPAPI
05.05.2022
Reset Windows Password v11.4
Windows activity timeline, Windows clipboard history, etc.
20.04.2022
Windows Password Recovery v14.3
Preliminary support for Windows 11
15.04.2022
Outlook Password Recovery v3.2.1
Support for Windows 11 and the latest version of MS Outlook
21.03.2022
Reset Windows Password v11.3
New forensic utilities, support for Windows 11 and Windows Server 2022

Articles and video

You may find it helpful to read our articles on Windows security and password recovery examples. Video section contains a number of movies about our programs in action

Windows Password Recovery - анализ Мастер Ключа DPAPI



Мастер Ключ представляет собой 64 байта данных, которые используются в качестве первичного ключа при расшифровке DPAPI объекта. Мастер Ключ пользователя зашифрован при помощи пароля на вход пользователя.

Задаем путь к файлу с Мастер Ключом и прописываем SID пользователя
Выбор Мастер Ключа

Все Мастер Ключи пользователя находятся в папке %APPDATA%\Microsoft\Protect\%SID%. Например,
E:\ Users\ John\ AppData\ Roaming\ Microsoft\ Protect\ S-1-5-21-2897849034-3956381361-16091305341-1001\ 23ab9bc1-9397-4cb1-ab74-7166ed6a8713
Мастер Ключи системы складируются в каталоге %SYSTEMDIR%\Microsoft\Protect.
SID пользователя программа, как правило, вычисляет автоматически из указанного пути.


 

Производим анализ Мастер Ключа
Анализ Мастер Ключа

Файл с Мастер Ключом представляет собой двоичную структуру, состоящую из служебного заголовка и четырех слотов, а именно:
непосредственно самого Мастер Ключа пользователя, локального ключа шифрования (для расшифровки резервных ключей), локального резервного ключа (для Win2K) или GUID для файла CREDHIST (Windows XP и выше) и резервного ключа домена.

Список со структурой Мастер Ключа состоит из имени атрибута (т.е. двоичного поля) и соответствующего ему значения. Каждая секция выделена своим цветом:

            - поле с атрибутами залоговка
            - слот с атрибутами Мастер Ключа пользователя
            - слот с атрибутами Локального Ключа шифрования
            - слот с атрибутами Локального Резервного Ключа или GUID файла CREDHIST
            - слот с атрибутами Резервного Ключа Домена

Теперь немного поподробнее.
 

Атрибуты заголовка
dwVersion - версия файла с Мастер Ключом.
szGuid - текстовый идентификатор (GUID) мастер ключа. Как правило, он совпадает с именем файла.
dwPolicy - различные флаги. Например, если установлен бит 3, то при расшифровке ключа используется SHA1 хэш пароля пользователя, иначе MD4. Так в Windows 2000 этот бит сброшен. Установленный бит 2 говорит о том, что для Мастер Ключа требуется резервное копирование.

Атрибуты Мастер Ключа пользователя
dwUserKeySize - длина текущего слота.
dwVersion - версия структуры данных. В версии 1 используется только атрибут с солью.
pSalt - соль, т.е. случайные 16 байт данных, задействованные в расшифровке Мастер Ключа и предотвращающие взлом данных при помощи атаки по радужным таблицам.
dwPBKDF2IterationCount - количество итераций в функции генерации ключа шифрования PBKDF2.
HMACAlgId - идентификатор алгоритма хэширования.
CryptAlgId - идентификатор алгоритма шифрования.
pKey - зашифрованный Мастер Ключ пользователя.

Атрибуты Локального Ключа шифрования
dwLocalEncKeySize - длина текущего слота.
dwVersion - версия структуры данных. В Win2K используется только атрибут с солью.
pSalt - соль.
dwPBKDF2IterationCount - количество итераций в функции генерации ключа шифрования PBKDF2.
HMACAlgId - идентификатор алгоритма хэширования.
CryptAlgId - идентификатор алгоритма шифрования.
pKey - зашифрованный Локальный Ключ шифрования, который используется для расшифровки Локального Резервного Ключа в Win2K.

Атрибуты Локального Резервного Ключа (Windows 2000)
dwLocalKeySize - длина текущего слота.
dwVersion - версия структуры данных.
pSalt - соль.
pKey - зашифрованный Локальный Резервный Ключ.

Атрибуты GUID для файла CREDHIST (Windows XP и выше)
dwLocalKeySize - длина текущего слота.
dwVersion - версия структуры данных.
guidCredHist - двоичный идентификатор файла CREDHIST.

Атрибуты Резервного Ключа Домена
dwDomainKeySize - длина текущего слота.
dwVersion - версия структуры данных.
pSalt - соль, т.е. случайные 16 байт данных, задействованные в расшифровке Мастер Ключа и предотвращающие взлом данных при помощи атаки по радужным таблицам.
dwPBKDF2IterationCount - количество итераций в функции генерации ключа шифрования PBKDF2.
HMACAlgId - идентификатор алгоритма хэширования.
CryptAlgId -   алгоритм шифрования.
pKey - зашифрованный Резервный Ключ Домена. Для его расшифровки требуется ключ шифрования домена, хранящийся в базе данных Active Directory.

Для расшифровки Мастер Ключа пользователя требуется знать его пароль на вход. Из контекстного меню анализатора можно проверить пароль для данного Мастер Ключа и даже попробовать подобрать его с помощью словаря. Однако, не стоит обольщаться слишком сильно. Если в Windows 2000 скорость подбора исчисляется десятками или даже сотнями тысяч паролей в секунду, то в Windows 7 счет идет уже на единицы. Смотрите таблицу ниже (скорость измерена для одном ядре процессора Intel Q8400 2.66GHz).

ОС Алгоритм шифрования Алгоритм хэширования HMAC Кол-во итераций в PKCS#5 PBKDF2 Скорость подбора (п/с)
Windows2000 RC4 SHA1 1 95000
WindowsXP 3DES SHA1 4000 76
WindowsVista 3DES SHA1 24000 12
Windows7 AES256 SHA512 5600 10