Как экспортировать неэкспортируемый закрытый ключ из магазина
мне нужно экспортировать закрытый ключ из магазина 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 ...)
- загрузить (и запустить с правами администратора):http://blog.gentilkiwi.com/mimikatz (версия хобота или последняя версия)
запустить его и введите следующие команды в командной строке:
-
privilege::debug
(Если у вас уже нет его или цель только CryptoApi) -
crypto::patchcng
(nt 6) и/илиcrypto::patchcapi
(nt 5 & 6) -
crypto::exportCertificates
и/илиcrypto::exportCertificates CERT_SYSTEM_STORE_LOCAL_MACHINE
.pfx-файлы защищены паролями "mimikatz"
Я хотел сказать кастом конкретно (GitHub):
кастом
джейлбрейк-это инструмент для экспорта сертификатов, помеченных как нельзя экспортировать из хранилища сертификатов Windows. Это может помочь, когда нужно извлечь сертификаты для резервного копирования или тестирования. Вы должны были полный доступ к закрытому ключу в файловой системе для побег из тюрьмы на работу.
Предпосылки: С Win32
Джентиль киви ответ - это правильно. Он разработал этот инструмент mimikatz, который способен извлекать неэкспортируемые закрытые ключи.
однако, его инструкции устарели. Вам нужно:
загрузите последнюю версию из https://github.com/gentilkiwi/mimikatz/releases
запустите cmd с правами администратора на том же компьютере, где был сертификат запрошено
перейдите в каталог Mimikatz bin (Win32 или x64 версия)
Run
mimikatz
следуя инструкции wiki а .pfx-файл (защищен паролем mimikatz) будет помещен в ту же папку mimikatz ОГРН
mimikatz # crypto:: capi
Местные CryptoAPI исправленыmimikatz # привилегия:: debug
Привилегия ' 20 ' OKmimikatz # crypto:: cng
Услуга "KeyIso" исправленаMimikatz # crypto:: сертификаты / systemstore:local_machine / store: my /экспорт
* Системы магазин : 'local_machine' (0x00020000)
* Store:'my'
- пример.домен.местные
Контейнер ключей: пример.домен.местные
Поставщик: Хранилище Ключей Программного Обеспечения 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, которые были отмечены как "неэкспортируемые" при их создании. Там могут быть различные хаки, но их детали, вероятно, изменятся от одной версии системы к другой без предупреждения.