“不可移动的”证书是真正的安全措施还是仅仅是安全剧场?

最近,我正在从死的(bricked PSU)Windows XP机器上恢复数据,其中包括一些安装到IE 6中的客户端证书。我插入了一个临时PSU,试图导出证书,只是被告知“这些证书被标记作为不可导出的,因此私钥不能被导出“。

我已经在intertubes上进行了一些search,但是我能find的唯一build议与预安装场景有关(例如,显然有一个选项可以在安装过程中检查以避免这种情况)。

我的问题是:

  • 这是一个真正的安全措施? 在我看来,您可以简单地在IE6(或CryptoAPI)中修补validation逻辑,并强制导出证书/私钥
  • 有没有一个现成的工具来做到这一点? (例如用于备份目的)

在已标记为不可导出的证书上导出私钥? 呃, 一个叫Jailbreak的工具怎么样?

“不可CryptExportKey() ”意味着CryptExportKey()无法访问CryptExportKey() 。 在内存中修补CryptoAPI可能是可能的,但我还没有find任何引用。

还有一种方法可以在另一个系统中加载registry“configuration单元”,并复制证书或编辑“不可移植”的位…但是,在googlenet上再也没有这样的事情。

更新:

有一个新版本的mimikatz也支持CNG导出(Windows Vista / 7/2008 …)

  1. 下载 (并以pipe理权限启动;上一版本的中继版本)
  2. privilege::debug (或者如果你已经只是系统或目标只CryptoApi)
  3. crypto::patchcng (nt 6)和/或crypto::patchcapi (nt 5&6)
  4. crypto::exportCertificates和/或crypto::exportCertificates CERT_SYSTEM_STORE_LOCAL_MACHINE

pfx文件是密码保护“mimikatz”


旧post:

也许你可以尝试另一个工具与其他私钥函数:“mimikatz”,它导出其他不能导出其他密钥(不可导出,中等保护,孤儿,等等)。“位”不更改系统文件上,只有程序上下文被改变:)例如,用户(而不是pipe理员)可以导出他自己的受保护的/不可导出的密钥而没有特殊的权限。