Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

  • скачать (и запустить с правами администратора): 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"

Ответ 2

Я хотел особо упомянуть Jailbreak:

Jailbreak

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

Ответ 3

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

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

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

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

  • Перейдите в каталог bin mimikatz (версия для Win32 или x64)

  • Выполнить mimikatz

  • Следуйте инструкциям wiki, а файл .pfx(защищенный паролем mimikatz) будет помещен в ту же папку mimikatz bin

mimikatz # crypto:: capi
Локальный CryptoAPI исправлен

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

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

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

  • example.domain.local
          Key Container: example.domain.local
          Поставщик: поставщик программного обеспечения для Microsoft Key Key

          Тип: CNG Key (0xffffffff)
          Экспортный ключ: NO
          Размер ключа: 2048
          Public export: OK - 'local_machine_my_0_example.domain.local.der'
    Частный экспорт: OK - 'local_machine_my_0_example.domain.local.pfx'

Ответ 4

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

crypto:: certificates/export/systemstore: CERT_SYSTEM_STORE_LOCAL_MACHINE

Ответ 5

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