我需要从Windows商店导出私钥。如果密钥被标记为不可导出,我该怎么办?我知道这是可能的,程序越狱可以导出此密钥。
要导出密钥,我使用Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair()
从(RSACryptoServiceProvider)cryptoProv.ExportParameters(true)
导出密钥。导出的密钥我在Org.BouncyCastle.Cms.CmsSignedDataGenerator
中用于CMS签名。
我需要解决方案。网,但任何解决方案都将是有用的。谢谢。
7条答案
按热度按时间guz6ccqo1#
你是对的,我知道没有API可以导出标记为不可导出的PrivateKey。但是如果你(在内存中)修补了普通的API,你就可以使用普通的方式导出:)
有一个新版本的mimikatz,也支持CNG出口(Windows Vista / 7 / 2008...)
1.下载(并使用管理权限启动):http://blog.gentilkiwi.com/mimikatz( Backbone.js 版本或最新版本)
运行它并在其提示符中输入以下命令:
privilege::debug
(除非您已经拥有它或仅以CryptoApi为目标)crypto::patchcng
(第6个核苷酸)和/或crypto::patchcapi
(第5和6个核苷酸)crypto::exportCertificates
和/或crypto::exportCertificates CERT_SYSTEM_STORE_LOCAL_MACHINE
导出的.pfx文件受密码“mimikatz”的密码保护
83qze16e2#
Gentil Kiwi的answer是正确的,他开发了这个mimikatz工具,能够检索不可导出的私钥。
但是,他的指示已经过时了,你需要:
1.从https://github.com/gentilkiwi/mimikatz/releases下载最新版本
1.在请求证书的同一台计算机上以管理员权限运行cmd
1.更改为mimikatz bin目录(Win32或x64版本)
1.运行
mimikatz
1.按照wiki说明操作,. pfx文件(用密码 * mimikatz * 保护)将被放置在mimikatz bin的同一个文件夹中
密码::capi
本地CryptoAPI已修补
mimikatz #权限::调试
权限"20"正常
密码::cng
"KeyIso"服务已修补
mimikatz #加密::证书/系统存储:本地计算机/存储:我的/导出
密钥容器:example.domain.local
提供程序:Microsoft软件密钥存储提供程序
类型:CNG密钥(0xffffffff)
可导出密钥:否
密钥大小:2048
公共导出:确定-"本地计算机我的0_example.domain.local.der"
私人出口:确定-"本地计算机我的0_example.domain.local.pfx"
q1qsirdb3#
here有一些代码和二进制文件可以用于一个控制台应用程序,它可以导出标记为不可导出的私钥,而且它不会像mimikatz那样触发防病毒应用程序。
该代码基于NCC Group的一篇文章。需要使用本地系统帐户运行该工具,因为它直接写入Windows的
lsass
进程使用的内存,以便临时将密钥标记为可导出。这可以使用SysInternals的PsTools:1.生成以本地系统用户身份运行的新命令提示符:
1.在新的命令提示符下,运行该工具:
1.它将在每个本地计算机存储区循环,搜索带有私钥的证书。对于每个证书,它将提示您输入密码-这是您想要用来保护导出的PFX文件的密码,因此可以是任何您想要的密码
所需文件的快捷方式:
icnyk63a4#
我想特别提到Jailbreak(GitHub):
越狱
Jailbreak是一个用于从Windows证书存储中导出标记为不可导出的证书的工具。当您需要提取证书以进行备份或测试时,这会很有帮助。您必须对文件系统上的私钥具有完全访问权限才能使Jailbreak工作。
先决条件:Win32操作系统
jailbreak64.exe %WINDIR%\system32\mmc.exe %WINDIR%\system32\certlm.msc -64
(注意--这与github上的指导不太一样。certlm.msc
在Windows 2016和2019上用于打开本地机器证书存储)。f0ofjuux5#
不幸的是,上面提到的工具被几个杀毒软件供应商屏蔽了。如果你是这种情况,那么看看下面的。
在证书存储区中打开不可导出的证书并找到Thumbprint值。
接下来,打开regedit到下面的路径,找到与指纹值匹配的注册表项。
注册表项的导出将包含包含私钥的完整证书。导出后,将导出复制到其他服务器并将其导入注册表。
证书将显示在证书管理器中,其中包含私钥。
机器商店:HKLM\软件\Microsoft\系统证书\MY\证书
用户存储:香港中文大学\软件\微软\系统证书\我的系统\证书
在必要时,您可以将导出保存为证书的备份。
qqrboqgw6#
您可能需要卸载防病毒软件(在我的情况下,我不得不摆脱Avast)。
这样可以确保
crypto::cng
命令正常工作。否则它会给我错误:删除Avast后:
魔术。(:
顺便说一句
Windows Defender是另一个程序阻止程序工作,所以你也需要禁用它的时间使用程序至少。
qacovj5a7#
如果它是由digicert颁发的,你可以使用Windows的DigiCert证书实用程序。在创建它的服务器上进行“修复”。然后你可以将它导出到像c:\temp这样的. pfx。这对我使用真实的的ssl证书有效。