域渗透-Windows个人凭据&企业凭据获取利用
0x00 起因
三月份打了一个软件系统安全赛,没想到场上会出现DC域控制器有关的取证题目。四道题目除去DC3都很简单。但DC3涉及到DPAPI与Masterkey等内容,发现一点都没有接触过,遂借此契机深入研究一下读取DPAPI加密密钥&解密用户凭据等内容。有备无患。可惜拼尽全力都没打到决赛晋级名额内,遗憾。
参考链接:
- 文章 - 使用 MimiKatz 读取 DPAPI 加密密钥的几种方式 - 先知社区
- 渗透技巧——获取Windows系统下DPAPI中的MasterKey
- 通过DPAPI获取windows身份凭证
- cred–The Hacker Tools
0x01 软件系统安全赛DC3复现
题目内容:
- 小梁的域控机器被黑客攻击了,请你找出一些蛛丝马迹。 攻击者从机器中提取出了用户的连接其他机器的Windows企业凭据,凭据的连接IP、用户名、密码是什么?(格式为IP-用户名-密码,如127.0.0.1-sam-123456)
首先查看C:\Users\<username>\AppData\roaming\Windows\PowerShell\PSReadLine
下的txt,其中会记录当前用户的所有powershell命令。我们翻出来的命令记录如下:
net user Administrator Ad9657!
net user john Jo9657!
whoami /all
net user
net user /domain
ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit
cd C:\Users\john\Desktop\
.\add_users.bat
clear
net user
ipconfig
拿到了john的明文密码,在下文中有大用。Masterkey
分为用户身份凭证和系统身份凭证(DPAPI_SYSTEM)两种。其中系统的Masterkey
存储于System32/Microsoft/Protect/S1-5-18/User
下,而用户的Masterkey
存储于AppData/Roaming/Microsoft/Credentials
下。使用mimikatz可以分析密钥。我们先使用SYSTEM
和SECURITY
将本地安全机构的主密钥提取出来。
lsadump::secrets /system:SYSTEM /security:SECURITY
拿到的DPAPI_SYSTEM
的user hash为8be2afb7cb82c63b74770e61b5d4938573ad145f。系统Master Key file
目录下有三个文件,我们先去看用户凭证,一个个试一下。这里我们就直接拿john的来测试了。使用mimikatz先分析一下凭证文件。
此凭据指向的Master Key file
标识为61e93ed3-5ca2-4e98-a27b-b8a09fcf618d
,且是我们想要的企业凭据数据。我们需要找到此文件,并再次分析此名称的文件指向。
小插曲,提取出来的所有凭证文件和Master Key file
都是设定有系统属性与隐藏属性的,我们需要使用attrib
指令解除属性才可以看到。
attrib -h -s 61e93ed3-5ca2-4e98-a27b-b8a09fcf618d
可以得知此文件的路径为C:\users\john\AppData\Roaming\Microsoft\Protect\S-1-5-21-1507239155-486581747-1996177333-1000
内。观察文件夹名称我们可以知道其实john的域内SID即为S-1-5-21-1507239155-486581747-1996177333-1000
。那我们使用拿到的sid加john明文密码来解密此Master Key file
即可。
dpapi::masterkey /in:61e93ed3-5ca2-4e98-a27b-b8a09fcf618d /sid:S-1-5-21-1507239155-486581747-1996177333-1000 /password:Jo9657! /protected
拿到Masterkey
为75690187db3d7b10dbad020d97ee3557178b86d34736f60fed190de957366d803c7c46a563bfa08f345a70f7b77578f821c2cc38f5b182c1cfeb7a6b84834125。转去使用此Masterkey
解密指定的文件即可。
至此我们就完成了对DC3的题解过程。
0x02 拓展
题解很简单,但是不能仅限于把WP的过程做一遍。我们需要更加深入的探究一下此攻击的手法和可用的场景。
在常规的域渗透场景中,渗透者不会有取证这样将文件提取出来直接解密的机会。取而代之的,一般会使用具有特权的mimikatz程序,直接使用dpapi
命令将MasterKey
直接从系统中一把薅出来。
mimikatz sekurlsa::dpapi
注意我们上文中复现时解密的用户目录下的Master Key file
,是使用SID
+password
的组合来完成解密的。而系统目录下的Master Key file
则可以直接使用SYSTEM
文件完成解密,其中含有系统的bootkey
。而且注意,MasterKey
能够解密的远远不止寥寥几个用户凭据,在windows内绝大多数因安全性需要加密的行为都是由其来完成的。如Chrome的cookie记录等。等过几天闲下来再深入研究。