如何从 Windows 凭据中读取密码?

信息安全 密码 视窗 备份 解密 证书
2021-08-28 12:20:09

Windows 凭据管理器用于生成凭据备份文件 (*.crd) 的密码是什么?

使用来自 Credential Manager 的备份文件和用于创建该备份文件的密码,是否可以破译文件并以纯文本形式读取存储的凭据?

我忘记了远程桌面的一个密码,但它存储在我计算机的凭据管理器中。我想从我的机器上读取该密码。有办法吗?

1个回答

凭据管理器存储的密码由数据保护 API管理并受 DPAPI“主密钥”保护:

用于加密用户 RSA 密钥的 DPAPI 密钥存储在 %APPDATA%\Microsoft\Protect{SID} 目录下,其中 {SID} 是该用户的安全标识符。DPAPI 密钥与保护用户私钥的主密钥存储在同一文件中。它通常是 64 字节的随机数据。

这个 Synactiv 演示文稿很好地概述了 DPAPI 主密钥:

这些主密钥存储在 blob 中,每个包含:

  • 一个 GUID
  • 一种盐
  • 主密钥结构(包含主密钥)

...并包括此图表,该图表显示了每个版本的 Windows 中保护措施的变化:

OS 的 DPAPI 算法图表

根据该介绍,可以使用mimikatz提取共享密钥。除了 Windows 平台,dpapick项目还支持离线和非 Windows 使用 API,并且该项目和开膛手 John 都包含DPAPImk2john.py,这是一个用于提取 masterkey 文件以进行破解的脚本。hashcat还支持使用该脚本破解这些 DPAPI v1 和 v2 主密钥文件。

因此,您应该能够使用 DPAmk2john.py 提取主密钥,然后破解它们以访问凭据。