Windows Password Recovery - расшифровка объектов DPAPI
Расшифровка данных DPAPI (DPAPI blobs) состоит из четырех шагов мастера.
Выбор файла с зашифрованными данными DPAPI
На первом этапе необходимо указать путь к файлу с объектом DPAPI. Надо сказать, что сами DPAPI объекты могут храниться в разных местах операционной системы, например, в отдельных xml файлах, в реестре, в Active Directory; и в разных форматах: двоичном, ASCII, UNICODE. Для поиска DPAPI объектов, извлечения и сохранения их в файлы существует специальная утилита. С помощью этой утилиты, к примеру, можно сохранить все DPAPI блобы из реестра пользователя в отдельные файлы. Для расшифровки необходимо такжу указать программе путь к каталогу Windows.
Ниже указаны места хранения некоторых DPAPI объектов.
- Пароли Internet Explorer, Outlook, WiFi passwords (только для XP): реестр пользователя, %APPDATA%\ntuser.dat
- Google Chrome: %LOCALAPPDATA%\Google\Chrome
- Пароли WiFi (Windows Vista и выше): %PROGRAMDATA%\Microsoft\Wlansvc
- Пароли сетевых соединений (Windows Vault): %LOCALAPPDATA%\Microsoft\Credentials или %APPDATA%\Microsoft\Credentials
Для быстрого выдергивания из различных мест жесткого диска DPAPI обектов, воспользуйтесь
утилиту поиска.
Выбор Мастер Ключа
Мастер ключ представляет собой набор из 64 случайных байт, который используется в качестве первичного ключа при расшифровки DPAPI объектов. Мастер ключ зашифрован с помощью пароля пользователя (либо системы, если это системный Мастер Ключ). Мастер Ключ пользователя всегда располагается в каталоге %APPDATA%\Microsoft\Protect\%SID% а Мастер Ключи системной учетной записи хранятся в директории %SYSTEMDIR%\Microsoft\Protect. Надо отметить, что Мастер Ключей может быть несколько, а для расшифровки определенного объекта подойдет только один, имя которого хранится внутри DPAPI объекта. При поиске Мастер Ключа, программа может фильтровать ненужные имена. В каталоге %APPDATA%\Microsoft\Protect находится и файл CREDHIST, который задается опционально, и в большинстве случаев не требуется при расшифровке.
Расшифровка Мастер Ключа
Для расшифровки Мастер Ключа пользователя необходимо задать как минимум два параметра: пароль пользователя на вход и его идентификатор безопасности (SID), который, как правило, прописан в пути к Мастер Ключу, либо прошит в файле CREDHIST. Так или иначе, Windows Password Recovery вычисляет SID пользователя автоматически. Для расшифровки Мастер Ключа системы, как уже было сказано выше, задавать пароль не имеет смысла, всю необходимую для расшифровки информацию программа получает из двух файлов реестра: SYSTEM и SECURITY. Если при создании DPAPI blob была использована дополнительная энтропия, необходимо самостоятельно создать двоичный файл с энтропией и указать путь к нему. Например, для шифрования паролей Internet Explorer, в качестве энтропии используется имя сайта в формате UNICODE.
Любопытно, что в Windows 2000 существует серьезная уязвимость благодаря которой для расшифровки любых(!) DPAPI объектов необязательно задавать логон пароль пользователя. Т.е. все данные, защищенные при помощи DPAPI - уязвимы! Это очень серьезная ошибка в реализации DPAPI, о которой знает Microsoft, однако остальные операционные системы лишены этого недостатка. Если при шифровании данных в функции CryptProtectData был указан флаг CRYPTPROTECT_LOCAL_MACHINE, то расшифровка этих данных также возможна без знания пароля на вход пользователя (например, паролей беспроводной сети), но это уже особенности реализации интерфейса и не является ошибкой.
В версии WPR v15 появилась пара дополнительных способов расшифровки DPAPI блобов: при помощи PIN, а также автоматическая расшифровка в случае если программа обнаружит использование биометрии, кэшированных паролей и т.д. Для учетных записей, которые используют биометрический вход Windows Hello, возможна расшифровка без знания пароля или PIN кода!
Расшифровка данных
Имея все необходимое, Windows Password Recovery выполнит расшифровку данных DPAPI объекта, которые затем можно скопировать в буфер обмена или сохранить в файл. Если на финальной стадии расшифровки возникает ошибка, то, скорее всего, вами был неправильно задан или не задан параметр дополнительной энтропии. Например, Internet Explorer и Vista Ftp Manager использует в качестве энтропии исходную страницу, на которой был введен пароль. Windows Credential Manager аналогично использует некоторые строковые константы и т.д.