DCSync 攻击
2015 年 8 月,Benjamin Delpy(神器 Mimikatz 的作者) 和 Vincent Le Toux 发布了新版本的 Mimikatz,新增加了 DCSync 功能。模仿一个域控制器 DC,从真实的域控制器中请求获取数据,例如账号的口令散列值等数据。
DCSync 之前,获取域的账号口令信息,需要登录域服务器,在域服务器上运行代码才可以获取。
DCSync 的最大特点,在于不用登录域服务器,即可远程通过域数据同步复制的方式获得想要的用户口令信息。
需要注意的是,DCSync 攻击的对象如果是 RODC 域控制器,则会失效,因为 RODC 是不能参与复制同步数据
原理
DCSync 的原理非常清晰,利用域控制器之间的数据同步复制。
- 发现网络中的目标域控制器;
- 通过 DRS 服务的 GetNCChanges 接口发起数据同步请求,Directory Replication Service (DRS) Remote Protocol
Samba wiki 关于 GetNCChanges 的描述包括:
当一个 DC (成为客户端 DC) 想从其他 DC (成为服务端 DC) 获取数据时,客户端 DC 会向服务端 DC 发起一个 GetNCChanges 请求。回应的数据包括需要同步的数 据。
如果需要同步的数据比较多,则会重复上述过程。毕竟每次回应的数据有限。
前提
一个用户想发起 DCSync 攻击,必须具备以下权限:
- Replicating Directory Changes (DS-Replication-Get-Changes)
- Replicating Directory Changes All (DS-Replication-Get-Changes-All)
- Replicating Directory Changes In Filtered Set
即:默认情况下域管理员组具有该权限。
攻击
防御
DCSync 攻击的原理是模拟域控制器发起服务器之间的数据同步复制。
最好的防御方法是给域控制器设置白名单。在域内,域控制器的数量、IP 地址、MAC 地址是非常明确清晰的资产,将这些资产设置在允许同步的白名单内。非白名单的 IP 不允许发生数据同步
获取域内所有 IP 的脚本:
PowerShell:Get-ADDomainController -filter * | select IPv4Address
或
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().DomainControllers | select IPAddress
在网络设备上检测来自白名单以外的域控制器数据同步复制
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论