DCSync用法详解

极客

DCSync用法详解:一次让人又爱又恨的域内“同步”操作

大家好呀!今天咱们来聊一个在域渗透里几乎绕不开的话题——DCSync用法详解,说真的,我每次提到这个技术,心里都挺复杂的:它既优雅又危险,既像一把手术刀,又像一颗定时炸弹,你要是没搞明白就乱用,那真是分分钟把整个域环境搞崩,所以今天咱们就坐下来,慢慢唠唠这个DCSync到底怎么用、为什么能用、以及用的时候要注意哪些坑。

DCSync用法详解

DCSync到底是什么鬼?

先别急,咱们得把概念理清楚,DCSync,说白了就是模拟域控制器之间的复制行为,你想啊,在AD环境里,域控之间要同步数据吧?比如用户密码哈希、Kerberos密钥这些敏感信息,都是通过DRSUAPI(目录复制服务远程协议)来复制的,而DCSync就是利用了这一点——攻击者如果拿到了足够的权限,就可以伪装成一台域控,向真正的域控请求“嘿,把那个用户的密码哈希同步给我呗”,然后域控就傻乎乎地给了。

我第一次接触这个技术的时候,心里想:这也太离谱了吧?但事实就是如此,微软本来设计这个协议是为了方便域控之间同步,结果被安全研究者玩出了花,所以你看,DCSync用法详解里最核心的一点就是:它不需要你在域控上执行代码,也不需要你登录到域控,只要你有权限,远程就能把哈希捞出来。

用DCSync需要什么权限?

这里可要划重点了!不是说你随便一个域用户就能玩DCSync的,你需要以下权限之一:

  • Domain Admins(域管理员)
  • Enterprise Admins(企业管理员)
  • Administrator(域控本地管理员)
  • 或者被授予了Replicating Directory Changes和Replicating Directory Changes All这两个扩展权限的账户

我见过很多新手,兴冲冲地跑了个DCSync命令,结果报错“Access Denied”,然后就懵了,哎,别急,先看看你当前用户的权限够不够,你要是只有普通域用户权限,那肯定不行啊,域控又不是你家开的。

DCSync用法详解:具体怎么操作?

好了,到了最实用的部分,咱们直接上干货,目前最常用的工具就是Mimikatz,当然还有Impacket里的secretsdump.py,以及Sharphound之类的,但我个人最习惯的还是Mimikatz,毕竟它够直接。

使用Mimikatz进行DCSync

你得拿到一个有足够权限的会话,比如你已经通过某种方式获得了域管权限,

mimikatz.exe "lsadump::dcsync /domain:test.local /user:krbtgt" exit

这条命令的意思就是:让域控把krbtgt用户的密码哈希同步给我。krbtgt是什么?那可是域里的“黄金账户”啊!拿到它的哈希,你就能伪造黄金票据,想访问哪就访问哪,爽是爽,但风险也大。

如果你想同步某个普通用户的哈希,比如administrator:

mimikatz.exe "lsadump::dcsync /domain:test.local /user:administrator" exit

如果你想把所有用户的哈希都拖下来,那可以用:

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

注意啊,/all这个参数会把整个域的用户都同步一遍,那流量和日志可就大了去了,我建议你除非必要,否则别这么干,不然蓝队的兄弟们会顺着日志找上门的。

使用Impacket的secretsdump.py

如果你在Linux环境下,或者不想用Mimikatz,那Impacket也是个好选择:

python3 secretsdump.py test.local/administrator:password@dc.test.local -just-dc-user krbtgt

这条命令和Mimikatz的效果一样,都是把krbtgt的哈希拉下来,而且secretsdump.py还支持-just-dc参数,可以只拉域内哈希,不搞本地SAM。

使用DCSync导出所有域内哈希

有时候你可能会想:我干脆把整个域的哈希都导出来,方便后续横向,那可以:

python3 secretsdump.py test.local/administrator:password@dc.test.local -just-dc

或者用Mimikatz的/all参数,不过我得提醒你,DCSync用法详解里最容易被忽视的一点就是:这种大规模同步操作会产生大量日志,尤其是Windows安全日志里的4662事件,会记录“目录服务复制”操作,蓝队如果开了审计,那你基本就暴露了。

DCSync的检测与防御

咱们不能光讲攻击不讲防御对吧?不然就成教人做坏事了。DCSync用法详解也应该包括怎么防。

监控4662事件

Windows会记录4662事件,其中包含“Replicating Directory Changes”相关的操作,如果你发现某个非域控的机器发起了大量复制请求,那就要警惕了。

限制权限

别随便把“Replicating Directory Changes”权限给普通用户,尤其是那些服务账户,能不给就不给,我见过不少环境,为了图方便,直接给某个服务账户加了域管权限,结果被拿下了,整个域就沦陷了。

使用Protected Users组

把敏感账户加入Protected Users组,可以限制凭据缓存和委派,虽然不能完全防住DCSync,但能增加攻击难度。

部署 honeypot 账户

有些大佬会在域里放一个假的krbtgt账户,然后监控谁去同步它,一旦有人上钩,立马告警,这招挺损的,但确实有效。

一些踩坑经验

我分享几个自己踩过的坑吧。

  • 别在非域控上乱跑DCSync:有一次我在一台成员服务器上跑DCSync,结果因为权限不够,直接报错,还留下了一堆日志,后来才知道,必须要有复制权限才行。
  • 注意网络流量:DCSync走的是DRSUAPI,默认端口是RPC动态端口,如果你在防火墙里封了RPC,那可能就失败了。
  • 别把哈希导到本地:有些人图省事,直接把哈希导到本地文件,结果文件被杀的杀、被删的删,最好直接内存操作,或者加密存储。

好了,关于DCSync用法详解咱们就聊到这里,DCSync是一个极其强大的技术,用好了能帮你快速拿下域控,用不好就是自爆,我建议你在合法授权的环境下多练练,别在真实生产环境里瞎搞,毕竟,域控一崩,全公司都得找你喝茶。

如果你觉得这篇文章对你有帮助,欢迎分享给更多小伙伴,咱们下次再见,拜拜!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]