Active Directory 域控制器上的 DPAPI 备份密钥
Active Directory 数据库包含一组称为 DPAPI 备份密钥的对象。 这些对象包括:
- BCKUPKEY_P机密
- BCKUPKEY_PREFERRED机密
- BCKUPKEY_guid1
- BCKUPKEY_guid2
这些对象是架构类“secret”的一部分,它们存在于域分区中的“CN=System,DC=contoso,DC=com”容器中。
通常,域用户使用派生自其密码的密钥加密 DPAPI 保护的数据。 但是,如果用户忘记了其密码,或者其密码是从其他设备进行管理重置或重置的,则使用派生自用户新密码的新密钥无法再解密以前加密的数据。
发生这种情况时,仍可使用存储在 Active Directory 域控制器上的备份密钥解密数据。 然后,可以使用用户的新密码派生密钥重新加密它们。 这意味着,拥有域 DPAPI 备份密钥的任何人都可以解密任何域用户的 DPAPI 加密数据,即使用户的密码发生更改也是如此。
在初始创建域期间,Active Directory 域控制器上的 DPAPI 备份密钥仅随机生成一次。
由于这些密钥的敏感性质,必须保护对这些密钥的访问,并被视为整个 Active Directory 域中最高度机密的信息片段之一。 默认情况下,对这些密钥的访问仅限于域管理员。
目前不支持在域控制器上更改或轮换这些 DPAPI 备份密钥。 根据文档 MS-BKRP,第三方能够开发创建一个新的 DPAPI 备份密钥的应用程序或脚本,并将新密钥设置为域的首选密钥。 但是,Microsoft不支持这些第三方解决方案。
如果域的 DPAPI 备份密钥遭到入侵,建议创建新域并将用户迁移到该新域。 如果恶意参与者能够访问 DPAPI 备份密钥,则他们很可能已获取域管理员级访问权限并对其资源具有完全访问权限。 攻击者还可以在域中安装其他后门系统,并具有他们现在拥有的访问权限级别,因此建议迁移到新域。
Active Directory 管理最佳做法是针对此方案进行防御。 向用户授予域访问权限时,请提供用户所需的最低访问权限级别。 保护 Active Directory 备份也至关重要,因为保护域控制器本身具有尽可能多的警惕。