Как экспортировать неэкспортируемый закрытый ключ из магазина

мне нужно экспортировать закрытый ключ из магазина Windows. Что делать, если ключ помечен как неэкспортируемый? Я знаю, что это возможно, программа jailbreak может экспортировать этот ключ.

для экспорта ключа я использую Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair() который экспортирует ключ из (RSACryptoServiceProvider)cryptoProv.ExportParameters(true). Экспортированный ключ я использую в Org.BouncyCastle.Cms.CmsSignedDataGenerator для подписи CMS.

мне нужно решение для .Net, но любое решение будет полезно. Спасибо.

7 ответов


вы правы, нет API вообще, что я знаю, чтобы экспортировать PrivateKey помечен как неэкспортируемый. Но если вы исправляете (в памяти) обычные API, вы можете использовать обычный способ экспорта:)

существует новая версия mimikatz, которая также поддерживает экспорт CNG (Windows Vista / 7 / 2008 ...)

  1. загрузить (и запустить с правами администратора):http://blog.gentilkiwi.com/mimikatz (версия хобота или последняя версия)

запустить его и введите следующие команды в командной строке:

  1. privilege::debug (Если у вас уже нет его или цель только CryptoApi)
  2. crypto::patchcng (nt 6) и/или crypto::patchcapi (nt 5 & 6)
  3. crypto::exportCertificates и/или crypto::exportCertificates CERT_SYSTEM_STORE_LOCAL_MACHINE

.pfx-файлы защищены паролями "mimikatz"


Я хотел сказать кастом конкретно (GitHub):

кастом

джейлбрейк-это инструмент для экспорта сертификатов, помеченных как нельзя экспортировать из хранилища сертификатов Windows. Это может помочь, когда нужно извлечь сертификаты для резервного копирования или тестирования. Вы должны были полный доступ к закрытому ключу в файловой системе для побег из тюрьмы на работу.

Предпосылки: С Win32


Джентиль киви ответ - это правильно. Он разработал этот инструмент mimikatz, который способен извлекать неэкспортируемые закрытые ключи.

однако, его инструкции устарели. Вам нужно:

  1. загрузите последнюю версию из https://github.com/gentilkiwi/mimikatz/releases

  2. запустите cmd с правами администратора на том же компьютере, где был сертификат запрошено

  3. перейдите в каталог Mimikatz bin (Win32 или x64 версия)

  4. Run mimikatz

  5. следуя инструкции wiki а .pfx-файл (защищен паролем mimikatz) будет помещен в ту же папку mimikatz ОГРН

mimikatz # crypto:: capi
Местные CryptoAPI исправлены

mimikatz # привилегия:: debug
Привилегия ' 20 ' OK

mimikatz # crypto:: cng
Услуга "KeyIso" исправлена

Mimikatz # crypto:: сертификаты / systemstore:local_machine / store: my /экспорт
* Системы магазин : 'local_machine' (0x00020000)
* Store:'my'

  1. пример.домен.местные
         Контейнер ключей: пример.домен.местные
         Поставщик: Хранилище Ключей Программного Обеспечения Microsoft Поставщик
         Тип: ключ CNG (0xffffffff)
         Экспортируемый ключ: нет
         Размер ключа : 2048
         Публичный экспорт: OK - ' local_machine_my_0_example.домен.местный.der'
         Частный экспорт: OK - ' local_machine_my_0_example.домен.местный.pfx-файл'

к сожалению, инструмент, упомянутый выше, заблокирован несколькими поставщиками антивирусов. Если это так для вас, то взгляните на следующее.

откройте неэкспортируемый сертификат в хранилище сертификатов и найдите значение отпечатка пальца.

затем откройте regedit по пути ниже и найдите раздел реестра, соответствующий значению отпечатка.

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

сертификат появится в диспетчере сертификатов с включенным закрытым ключом.

магазин машин: HKLM\SOFTWARE\Microsoft\SystemCertificates\MY\сертификаты Магазин пользователей: HKCU\SOFTWARE\Microsoft\SystemCertificates\MY\Certificates

в крайнем случае, вы можете сохранить экспорт в качестве резервной копии сертификата.


Это сработало для меня на Windows Server 2012 - мне нужно было экспортировать неэкспортируемый сертификат для установки другого сервера ADFS, и это сделало трюк. Не забудьте использовать инструкции джейлбрейка выше, т. е.:

crypto:: сертификаты / экспорт / systemstore: CERT_SYSTEM_STORE_LOCAL_MACHINE


возможно, вам придется удалить антивирус (в моем случае я должен был избавиться от Avast).

таким образом, будет работать. В противном случае это давало мне ошибки:

mimikatz $ crypto::cng
ERROR kull_m_patch_genericProcessOrServiceFromBuild ; OpenProcess (0x00000005)

после удаления Avast:

mimikatz $ crypto::cng
"KeyIso" service patched

магия. (:

кстати

Windows Defender-это еще одно шпионское ПО, блокирующее работу программы,поэтому вам также нужно будет отключить его на время использования программы.


нет API, о котором я знаю, для экспорта закрытых ключей Windows, которые были отмечены как "неэкспортируемые" при их создании. Там могут быть различные хаки, но их детали, вероятно, изменятся от одной версии системы к другой без предупреждения.