Looking for light.

域渗透-Windows个人凭据&企业凭据获取利用

0x00 起因


三月份打了一个软件系统安全赛,没想到场上会出现DC域控制器有关的取证题目。四道题目除去DC3都很简单。但DC3涉及到DPAPI与Masterkey等内容,发现一点都没有接触过,遂借此契机深入研究一下读取DPAPI加密密钥&解密用户凭据等内容。有备无患。可惜拼尽全力都没打到决赛晋级名额内,遗憾。


参考链接:


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可以分析密钥。我们先使用SYSTEMSECURITY将本地安全机构的主密钥提取出来。

lsadump::secrets /system:SYSTEM /security:SECURITY

Alt text

拿到的DPAPI_SYSTEM的user hash为8be2afb7cb82c63b74770e61b5d4938573ad145f。系统Master Key file目录下有三个文件,我们先去看用户凭证,一个个试一下。这里我们就直接拿john的来测试了。使用mimikatz先分析一下凭证文件。

Alt text

此凭据指向的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

Alt text

拿到Masterkey为75690187db3d7b10dbad020d97ee3557178b86d34736f60fed190de957366d803c7c46a563bfa08f345a70f7b77578f821c2cc38f5b182c1cfeb7a6b84834125。转去使用此Masterkey解密指定的文件即可。

Alt text

至此我们就完成了对DC3的题解过程。


0x02 拓展


题解很简单,但是不能仅限于把WP的过程做一遍。我们需要更加深入的探究一下此攻击的手法和可用的场景。

在常规的域渗透场景中,渗透者不会有取证这样将文件提取出来直接解密的机会。取而代之的,一般会使用具有特权的mimikatz程序,直接使用dpapi命令将MasterKey直接从系统中一把薅出来。

mimikatz sekurlsa::dpapi

注意我们上文中复现时解密的用户目录下的Master Key file,是使用SID+password的组合来完成解密的。而系统目录下的Master Key file则可以直接使用SYSTEM文件完成解密,其中含有系统的bootkey。而且注意,MasterKey能够解密的远远不止寥寥几个用户凭据,在windows内绝大多数因安全性需要加密的行为都是由其来完成的。如Chrome的cookie记录等。等过几天闲下来再深入研究。