Home > Information > Forum > Show Topic
Show thread topic
01.03.2024
New blog post
Dumping the history of users' IP addresses in Windows
20.02.2024
Reset Windows Password v14.1
IP addresses history viewer, fast disk search, local security editor and some more
02.01.2024
Wireless Password Recovery v6.9.0
A revision of the GPU health monitor along with some minor updates
23.12.2023
HAPPY NEW YEAR!
Happy New Year greetings and holidays discount

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

export non-exportable private key with password

kokolbin, 23:12:01 05.11.2013 Rating: 0 #1

export non-exportable private key with password  

Добрый день. Все знают что, при импорте сертификатов с секретным ключом, можно выбрать один из уровней защиты: средний или высокий. В первом случае, каждый раз при использовании данного ключа, будет появляться диалоговое окно, запрашивающее Ваше согласие, на использование ключа тем или иным приложением. А во втором случае, помимо согласия необходимо будет еще ввести пароль.
Для решения первой проблемы в интернете есть полезные программы, такие как mimikatz и др.
А вот что делать, если забыл тот самый пароль, необходимый для второго случая?
Кто знает, где хранятся данные для проверки его правильности?
 
Passcape_Admin, 13:44:46 13.11.2013 Rating: 0 #2

RE: export non-exportable private key with password  

Добрый день.
Насколько я знаю, секретные ключи хранятся в файлах pfx и зашифрованы при помощи алгоритма pbkdb2 (хотя, могу и ошибаться). Вам надо смотреть в сторону PFX брутефорсеров.
Я только не понял, при чем здесь mimikatz.
 
kokolbin, 11:13:25 14.11.2013 Rating: 0 #3

No Subject  

Добрый день. Спасибо за ответ, но мне кажется,Вы меня не поняли. Я написал у вас на форуме, потому что увидел, что вы умеете работе с DPAPI. Дело в следующем: есть два компьютера А и В, на одном есть сертификаты и нужно эти сертификаты перенести на другой компьютер. Причем некоторые из этих сертификатов при их импорте были сохранены на компьютер А с помощью среднего уровня защиты, а не которые с помощью высокого. Сертификаты имеют привязанность к определенным криптопровайдерам и хранятся на компьютере в папках пользователя. Причём сертификаты лежат в папке AppData\\Roaming\\Microsoft\\SystemCertificates\\My а соответствующие ключи лежат в папке AppData\\Roaming\\Microsoft\\Crypto\\RSA, соответствие строится по GUID. Так вот, для извлечения сертификатов из компьютера А, которые были импортированы на него с флагом об использовании среднего уровня защиты, я использую утилиту mimikatz. Я знаю также, что для шифрования секретного ключа система используют DPAPI, потому как если посмотреть на файлы, которые хранятся в ...\\RSA прослеживается явная структура DPAPI blob. То есть я могу утверждать, что эти файлы получены с помощью вызова функции CryptProtectData(). Так как я забыл пароль для экспорта секретного ключа, то меня интересует где в этих файлах лежит информация об использованном пароле, который возможно передается в эту функцию в качестве параметра OptionalEntropy. Подведу итог и сформулирую свой вопрос: меня интересует, где и как хранится информация о пароле, который был использован для зашифрования секретного ключа при его импорте?
 
Passcape_Admin, 11:32:45 14.11.2013 Rating: 0 #4

RE: export non-exportable private key with password  

Если вы точно уверены, что ключи шифруются при помощи DPAPI, то пароль с очень большой вероятностью передается, как вы правильно заметили, в параметре OptionalEntropy. В этом случае, он нигде не хранится. Для расшифровки структуры, система в интерактивном режиме запрашивает этот пароль и передает структуре DPAPI, которая в свою очередь использует его в качестве энтропии для шифрования сертификатов. Так, например, шифруются пароли в Internet Explorer 7-9. Только вместо пароля используется имя исходного сайта, которое в системе нигде не хранится. В нашей статье про DPAPI есть пример расшифровки такой структуры. Там вроде ничего сложного нет, надо в утилите для расшифровки DPAPI структур на третьем шаге мастера указать файл с энтропией, предварительно создав его вручную в HEX редакторе, например. Так что, скорее всего, пароль вообще нигде не хранится.
 
kokolbin, 12:15:53 14.11.2013 Rating: 0 #5

No Subject  

Да, всё правильно. Более того, DPAPI это лишь средство, которое предоставляет услуги шифрования и расшифрования объектов типа BLOB, а уже за хранение этих зашифрованных данных и за хранение информации для проверки правильности пароля отвечает само приложение. Так и в данном случае приложение,которое называется "мастер импорта/экспорта секретного ключа" пользуется DPAPI для зашифрования и расшифрования, а место для хранения указывает само. Также оно само определят правильный ли пароль был введен и хранит где-то информацию для проверки правильности введенного пароля. Я пытаюсь сейчас понять: в тех самых файлах, которые лежат в ...\\RSA, есть ли в них какая-нибудь информация для проверки пароля? Или там только информация, которую записало туда DPAPI, а именно ALG_ID, SIZE, BUFFER[SIZE] и так далее?
 
Passcape_Admin, 12:25:09 14.11.2013 Rating: 0 #6

RE: Нет темы  

Чтобы узнать точно, надо реверсить мастер экспорта/импорта. в DPAPI блобе этой информации точно не может быть. С очень большой долей вероятности предположу, что пароль нигде не хранится. Проверка правильности пароля в этом случае ообычно происходит так: DPAPI с помощью предполагаемого пароля (фактически, пароль используется в виде соли) пытается расшифровать свою структуру. Если расшифровать не получилось - пароль неправильный. Таким образом, смысл в хранении пароля отпадает.
 
kokolbin, 12:48:27 14.11.2013 Rating: 0 #7

No Subject  

Я тоже предполагал, что проверка проводится как Вы написали, но когда в Ida я поставил брейкпоинт на функцию CryptUnprotecrData в библиотеке crypt32. dll и приаттачил процесс экспорта ключа, то при вводе в окошко пароля и нажатия ок, брейкпоинт не срабатывал, а приложение возвращало окно, уведомляющее о неверно введенном пароле. Значит проверка проводится без использования функции CryptUnprotectData?
 
Passcape_Admin, 13:02:10 14.11.2013 Rating: 0 #8

RE: Нет темы  

Не факт. Например, проверка может происходить без вызова клиентской функции CryptUnprotectData, а напрямую через серверную часть функции из lsasrv API.

Попробуйте вот эту утилиту для анализа DPAPI блобов, чтобы убедиться наверняка, что это DPAPI. Но перед этим извлеките "чистый" DPAPI блоб из файла, запустив утилиту поиска DPAPI структур.
 
kokolbin, 13:17:44 14.11.2013 Rating: 0 #9

No Subject  

Хорошо, спасибо за консультацию. Если у меня будет что-то получаться, я вам напишу. А эти программы, они платные? Я тогда попробую сам написать что+то похожее)
 
Passcape_Admin, 14:44:45 14.11.2013 Rating: 0 #10

RE: Нет темы  

Попробуйте. Нипишите тогда, получилось ли разобраться. Утилиты бесплатные (они идут встроенные в программу для аудита паролей Windows), но есть некоторые ограничения.
 
kokolbin, 23:01:06 18.12.2013 Rating: 0 #11

No Subject  

Здравствуйте, я написал Вам на почту письмо. Там то, что у меня получилось сделать.
 
Entries 1 to 11 from 11  [ <<  1  >> ]