Mimikatz小实验:黄金票据+dcsync

2016-09-03 16:17 评论 0 条

20160805-092138.png

科普时间

krbtgt账户:每个域控制器都有一个“krbtgt”的用户账户,是KDC的服务账户,用来创建票据授予服务(TGS)加密的密钥。

黄金票据(Golden Ticket):简单来说,它能让黑客在拥有普通域用户权限和krbtgt hash的情况下,获取域管理员权限。

dcsync:mimikatz中的功能,可以有效地“假冒”一个域控制器,并可以向目标域控制器请求帐户密码数据。

下面根据@gentilkiwi的描述,我会做一个实验。

获取域管理权限

首先,我以较低的权限运行了mimikatz,这个权限为Windows工作站的本地用户,也就是我demo域成员。在这里,我们需要生成一张黄金票据(Golden Ticket),利用它来获得域管理权限。然后,咱们再使用mimikatz的dcsync功能,从域控制器获取hash。

作为一个新登录的本地用户,本来是没有票据的:

1.png

然后我手动创建了一张域管理的黄金票据:

2.png

3.png

使用这张票据:

4.png

然后我的低权限本地用户,就被提升到域管理权限了:

5.png

利用dcsync功能获取hash

然后我通过DRSR协议,从域控制器获取用户user01的hash:

6.png

我们把LM和NTLM的hash,同这篇博文里的hash对比下,发现它们是相同的。

kerberos::golden命令中所有的参数(krbtgt、domain、domain adminusername、domain SID),都可以通过这里的方式获取,简单来说就是提取并解析Active Directory 数据库(NTDS.DIT)的副本内容。如果你想知道了解更多的方式,请看这里

@gentilkiwi告诉我,只要domain admin username和RID是域管理组的一部分,那也是可以被伪造的。

伪造的信息大约可以生效20分钟左右,在此期间不会被系统检查到。

如果我们没有足够的权限(比如域管理)来查询带DRSR的域控制器,我们会得到error 5(权限不足)的提示:

7.png

你在对krbtgt NTLM hash进行更改的时候,也会得到这个错误。但在这里,ptt命令看起来像是成功了:

8.png

你需要注意的是,除非用户krbtgt的密码被改了(默认不会更改),不然krbtgt NTLM hash绝不会改变。所以,即使你拿到的是非常早的ntds.dit副本,也可以被用于恢复hash。

检测黄金票据的规则

该票据通过asn1编码存储在文件里:

9.png

@gentilkiwi本来做了一个YARA规则(mimikatz_kirbi_ticket)来检测这样的票据:

10.png

但是我用的mimikatz v2.1,使用了另一种asn1编码,这条规则就失效了。

然后@gentilkiwi就更新了一条更通用的规则,大家可以使用它来做检测:

rule mimikatz_kirbi_ticket

{

meta:

description     = "KiRBiticket for mimikatz"

author          = "BenjaminDELPY (gentilkiwi); Didier Stevens"

 

strings:

$asn1           = { 76 82 ?? ?? 3082 ?? ?? a0 03 02 01 05 a1 03 02 01 16 }

$asn1_84        = { 76 84 ?? ?? ???? 30 84 ?? ?? ?? ?? a0 84 00 00 00 03 02 01 05 a1 84 00 00 00 03 02 01 16 }

 

condition:

$asn1 at 0 or $asn1_84 at 0

}

简单的小细节

此外,因为我使用了kerberos::golden的选项/ticket,票据文件是在磁盘上创建生成的。但是如果我使用了/ptt选项,它并不会写入磁盘。

转自FreeBuf

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:Mimikatz小实验:黄金票据+dcsync | FlyのBlog
分类:渗透测试 标签:

发表评论


表情