我有一个 Windows 10 笔记本电脑的密钥文件夹,但操作系统已无法启动。在恢复控制台中,即使使用正确的用户名/密码登录系统,该文件夹仍会返回“拒绝访问”。
我如何才能访问该文件夹?
答案1
事实证明,这个问题比我预想的要复杂得多,但我确实找到了解决方案。我怀疑恶意软件损坏了我的计算机,因此在 VirtualBox VM 内的 Windows 10 虚拟机中完成了所有工作。为此,我创建了一个与故障计算机具有相同用户名和密码的用户帐户。我不确定这是否有必要。
挑战1:获取文件。故障机器的驱动器安装在 USB 盒中,以使分区在运行的机器中可访问。虚拟机需要直接访问驱动器,通过共享文件夹连接是不够的。一旦 USB 驱动器在 VM 中可用,robocopy
就会在管理员权限提升的命令提示符中使用,使用/efsraw
修饰符这个问题允许将原始加密文件复制到本地位置。如果没有管理员权限,错误 57/87 甚至经常发生错误 0。
一旦文件本地化,就可以在文件安全编辑器中获取所有权和完全访问权限。
挑战2:获取证书。如建议的那样这个问题的答案,证书存储在失败的机器用户的 AppData 文件夹中,例如
C:\Users\bob\AppData\Roaming\Microsoft\Crypto
\Protect
\SystemCertificates
我最终复制了整个 Microsoft 文件夹,以防我需要其他东西。
挑战3:工具。根据这个答案,GitHub 提供的工具mimikatz
非常强大,可以提取所需的所有证书信息。但是 Windows 安全(也许这是正确的)和大多数浏览器都将其声明为病毒,并拒绝下载或访问文件。我需要禁用 VM 中的所有安全功能以允许下载,并继续禁用保护以允许应用程序运行。为了安全起见,我禁用了所有 VM 网络,以防任何潜在的恶意工具泄露信息。
挑战4:获取摘要 ID。首先mimikatz
需要的是文件的指纹/摘要号。在某些情况下无法看到它,但我认为这是因为尝试查看虚拟机共享文件夹上的文件。可以在文件属性中看到该值,查看“属性”>“高级...”窗口并获取“详细信息”。这应该显示认证用户(用户名和原始机器名称)和指纹值。
挑战5:拿到钥匙。我按照文档对于mimikatz
,还下载了 Windows 二进制 openssl 安装程序之一(FireDaemon OpenSSL x64 3.2.0)。所有步骤包括cert.pfk
使用恢复的 EFS 证书生成。这从指纹开始,然后找到容器 ID、证书文件,使用原始用户密码解密公钥和私钥,最后将密钥重新格式化为新证书。然而,尽管如此,Windows 10 并不喜欢这种证书的格式。
挑战6:安装证书。帮助的最后一步mimikatz
是命令
openssl pkcs12 -in public.pem -inkey private.pem -password pass:mimikatz -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
但是 Windows 10 不满意此证书,并且不会识别提供的任何密码,包括根本没有密码。这在用于导入证书的 Windows GUI 中以及使用建议的文档中都存在certutil
。各种错误,包括“网络密码错误”、“文件未找到”。使用答案这个问题方便重新制定证书备份命令
openssl pkcs12 -in public.pem -inkey private.pem -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
SHA1
注意格式说明符和调用中的关键区别-nomac
。这允许certutil
将证书安装到
User>Personal>Certificates
在certmgr.msc
控制面板小部件中。然而,文件仍然无法解密。
挑战7:使用证书。这一页给出了使用该证书的最终答案。
关键任务是使用 Windows 以certmgr.msc
PKCS12 格式导出新证书。可以导出证书及其私钥,并按照说明进行操作。最后,使用 Windows GUI 重新安装此证书,使用导出时设置的密码,并允许它将证书安装在配置文件下其类型的自动位置(而不是User
或Computer
)Local Machine
。证书最终将位于与启动时相同的位置(User>Personal>Certificates
),但是尝试导出此证书将不允许导出私钥。
这是最后一步的结束,现在文件可以解密了。请注意,查看更新certmgr.msc
通常需要关闭并重新打开它。