域渗透-DCSync的利用
0x00 引言
DCSync是域渗透常用的技术,本文根据其他人的技术进行测试引用,并整理。
0x01 简介
本文内容
- 利用DCSync导出域内所有用户hash的方法
- 利用DCSync在域内维持权限
- 自动化检测DCSync后门
0x02 利用DCSync导出域内所有用户hash的方法
利用DCSync的先决条件
获取以下任意一个用户权限:
- Administrators 组
- Domain Admins组
- Enterprise Admins(企业管理员)组
- 域控制器的计算机账户
利用原理
利用DRS(Directory Replication Service,目录复制服务)协议通过IDL_DRSGetNCChanges从域控制器复制用户凭据。
如何利用?
- mimikatz
1 | privilege::debug |
- 利用powershell实现
通过Invoke-ReflectivePEinjection(调用-反射性注射)调用mimikatz.dll中的dcsync功能
1 | # 导出域内所有用户的hash |
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的权限
如何利用?
1 | # ACL一般都是指对象的安全描述符中的SACL和DACL |
注入ACL后,该用户有了调用DCSync的权限。
- 在域内一台登陆了test1 的主机上面,直接使用mimicatz的DCSync方法。
1 | mimikatz.exe privilege::debug "lsadump::dcsync /domain:louis.gov /all /csv" exit |
- 使用runas
runas ??
runas命令:能让域用户/普通user用户以管理员身份运行制定程序
1 | # 弹cmd实现 |
tips
使用wmic 命令在本机实现会出现错误。
0x04 自动化检测DCSync后门
具有高权限但不在高权限组的用户被称之为Shadow Admin,例如0x03中的域用户test1,仅通过查询高权限组的成员无法发现域内的Shadow Admin
检测原理
枚举活动目录(Active Directory)中,所有用户的ACL,标出特权用户
使用代码
1 | # Execute-ACLight2.bat |
先决条件
- 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