如何从商店导出不可导出的私钥

Gor*_*orf 46 .net encryption bouncycastle rsacryptoserviceprovider

我需要从Windows商店导出私钥.如果密钥被标记为不可导出,我该怎么办?我知道有可能,程序越狱可以导出这个密钥.

要导出密钥,我使用Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair()该导出密钥(RSACryptoServiceProvider)cryptoProv.ExportParameters(true).导出的密钥我Org.BouncyCastle.Cms.CmsSignedDataGenerator用于CMS签名.

我需要.Net的解决方案,但任何解决方案都会很有用.谢谢.

Gen*_*iwi 45

你是对的,根本没有API,我知道要导出标记为不可导出的PrivateKey.但是如果你修补(在内存中)正常的API,你可以使用正常的方式导出:)

有一个新版本的mimikatz也支持CNG Export(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"

  • crypto模块中的命令已更改:`crypto :: cng`或`crypto :: capi`或`crypto :: keys/export` (11认同)
  • 此工具导出证书/密钥的所有密钥和个人PFX.也许我可以调整代码只选择一个指定的证书(它是一个取证工具而不是实用工具;))对于PVK格式,OpenSSL 1.x转换它没有任何问题:) openssl rsa -inform pvk -in fichier.pvk -outform pem -out fichier.pem (3认同)
  • 使用`crypto :: certificates/export/systemstore:CERT_SYSTEM_STORE_LOCAL_MACHINE` for*Computer Store*(https://github.com/gentilkiwi/mimikatz/blob/master/README.md#crypto) (3认同)
  • @NickG / Ville,这是不正确的。[官方 mimikatz 版本](https://github.com/gentilkiwi/mimikatz/releases)_不_包含恶意软件。不幸的是,该工具已被[被防病毒软件错误标记为恶意软件](https://github.com/gentilkiwi/mimikatz/issues/55),因为它通常用于漏洞利用......就像任何可用于提取密码的工具一样私钥,很容易被非法使用。 (3认同)

Zan*_*non 17

Gentil Kiwi的回答是正确的.他开发了这种能够检索不可导出的私钥的mimikatz工具.

但是,他的指示已经过时了.你需要:

  1. https://github.com/gentilkiwi/mimikatz/releases下载最新版本

  2. 在请求证书的同一台计算机上运行具有管理员权限的cmd

  3. 切换到mimikatz bin目录(Win32或x64版本)

  4. mimikatz

  5. 按照wiki说明操作,.pfx文件(使用密码mimikatz保护)将放在mimikatz bin的同一文件夹中

mimikatz #crypto :: capi
本地CryptoAPI修补

mimikatz#privilege :: debug
Privilege'20'好的

mimikatz #crypto :: cng
"KeyIso"服务修补

mimikatz #crypto :: certificates/systemstore:local_machine/store:my/export
*系统存储:'local_machine'(0x00020000)
*存储:'my'

  1. example.domain.local
         密钥容器:example.domain.local
         商:微软软件密钥存储提供
         类型:CNG密钥(为0xffffffff)
         可导出密钥:NO
         主要尺寸:2048
         公共出口:OK - "local_machine_my_0_example.domain.local.der"
         私人export:OK - 'local_machine_my_0_example.domain.local.pfx'

  • 被趋势科技识别为威胁并拒绝访问:https://www.trendmicro.com/vinfo/us/threat-encyclopedia/search/hktl_mimikatz64 (2认同)

Coc*_*lla 15

此处提供了可用于控制台应用程序的代码和二进制文件,该应用程序可以导出标记为不可导出的私钥,并且不会像 mimikatz那样触发防病毒应用程序。

该代码基于NCC Group的一篇论文。将需要使用本地系统帐户运行该工具,因为它通过直接写入 Windowslsass进程使用的内存来工作,以便临时将密钥标记为可导出。这是可以做到用PsExecSysinternals公司的PsTools

  1. 生成一个以本地系统用户身份运行的新命令提示符:

PsExec64.exe -s -i cmd

  1. 在新的命令提示符中,运行该工具:

导出程序

  1. It will loop over every Local Computer store, searching for certificates with a private key. For each one, it will prompt you for a password - this is the password you want to secure the exported PFX file with, so can be whatever you want

  • 我找到了它:它导出到我的 64 位机器上的 c:\windows\syswow64。 (2认同)
  • 迄今为止最干净、最简单的解决方案。关于传递给 PSexec 的 -s 选项的注释 - 检查它的作用,因为这将影响导出者可以看到哪些证书存储。个人商店不需要。 (2认同)
  • 这是一个很好的解决方案。我终于可以在我的 Mac 上工作了,尽管我的管理员说这是不可能的 :D (2认同)
  • 值得一提的是,这里提到的程序在没有 PsExec64 的情况下也适用于我,因此在某些情况下,从管理员帐户下执行 cmd 就足够了。但我是从 UserStore 导出证书,而不是从系统导出证书。 (2认同)

Ian*_*oyd 14

我想特别提到Jailbreak(GitHub):

越狱

Jailbreak是一种用于导出从Windows证书存储区标记为不可导出的证书的工具.当您需要提取证书以进行备份或测试时,这可以提供帮助.您必须具有对文件系统上的私钥的完全访问权才能使越狱起作用.

先决条件:Win32

  • 当然,如果它意味着劫持你的根证书! (3认同)