域控 DCSync 攻击原理、利用方式与检测方案

免责声明:本文内容仅用于授权红队演练、内网安全自查、安全学习研究,严禁在未授权的域环境中执行 DCSync、凭据导出、AD 权限篡改等操作。未经授权对计算机信息系统进行渗透测试属于违法行为,所有操作带来的法律后果由操作者自行承担。

前言

DCSync 是域渗透杀伤链中最经典、破坏力最强的凭据转储技术,MITRE ATT&CK 编号为 T1003.006(操作系统凭据转储:DCSync)。很多人误以为 DCSync 是漏洞,实际上它不是 CVE 漏洞,而是滥用 AD 域控之间正常目录复制协议 MS-DRSR。攻击者拿到具备域复制权限的账号,不需要登录域控、不需要在域控落地恶意程序、不需要 dump 域控 LSASS 内存,在域内任意一台普通工作站上,就可以远程向域控请求全量域账号哈希,包括 krbtgt、域管理员 NTLM 哈希,拿到哈希后直接制作黄金票据,完成整个域的持久化接管FreeBuf。

很多常见误区:

  1. 只有 Domain Admins 账号才能执行 DCSync;
  2. DCSync 必须在域控上运行;
  3. DCSync 会读取 NTDS.dit 本地文件;
  4. 域控默认日志可以直接捕获 DCSync 行为,无需额外配置审计策略。

本文从 AD 复制底层原理、DCSync 所需权限、实战利用命令、攻击链路、蓝队日志检测、流量特征、应急处置与域加固完整讲解。

一、DCSync 底层原理:域复制协议 MS-DRSR

AD 域环境中,多台域控制器之间会定时同步目录数据(用户、组、密码属性),同步依赖 MS-DRSR 目录复制远程协议,RPC 接口名称 DRSUAPI,核心函数IDL_DRSGetNCChanges。域控之间互相拉取变更数据,同步账号密码哈希等机密属性。

DCSync 的核心思路:攻击者伪装成一台新的域控制器,向真实域控发起目录复制请求。域控校验账号权限,如果账号拥有对应的复制扩展权限,就会把域内账号的机密属性(NTLM 哈希、Kerberos 密钥、密码历史)直接返回给攻击者。

关键点:AD 在设计上认为,拥有目录复制权限的主体是可信的域控制器,直接返回密码相关属性,没有额外二次校验。

DCSync 必须具备的两个 AD 扩展权限(缺一不可)

在域命名分区(Domain Naming Context)上,账号需要拥有下面两个扩展权限:

  1. DS-Replication-Get-Changes(GUID:1131f6aa-9c07-11d1-f79f-00c04fc2dcd2):读取目录变更;
  2. DS-Replication-Get-Changes-All(GUID:1131f6ad-9c07-11d1-f79f-00c04fc2dcd2):读取机密属性(密码哈希),这是 DCSync 的核心权限。

默认情况下:Domain Admins、Enterprise Admins、域控计算机账号自带这两个权限。
高危场景:运维为备份、同步工具,给普通业务账号、备份账号分配了这两个复制权限,普通账号直接具备 DCSync 能力,这是企业最常见的 AD ACL 配置漏洞,BloodHound 可以直接扫描出这类账号。

只读域控制器 RODC 不能执行 DCSync,RODC 不会存储全部域账号密码哈希,无法响应完整复制请求。

二、DCSync 攻击完整杀伤链

  1. 前期横向移动,拿下一台域内主机,获取某个域账号凭据;
  2. 使用 BloodHound 分析 AD ACL,发现该账号拥有 DS-Replication 复制权限;
  3. 在当前被控主机(不需要登录 DC)执行 DCSync,远程请求域控导出所有账号哈希;
  4. 提取 krbtgt 账号 NTLM 哈希,制作黄金票据,实现全域权限维持;
  5. 使用 PtH 哈希传递横向移动,接管域控、服务器、工作站。

对比传统 NTDS.dit 导出:传统方式需要登录域控,拷贝ntds.dit + SYSTEM注册表文件,离线解析哈希;DCSync 属于远程 API 调用,全程不需要触碰域控磁盘文件,隐蔽性更强。

三、DCSync 实战利用方式

3.1 Mimikatz 执行 DCSync(Windows 环境,红队最常用)

前提:当前会话账号拥有域复制权限。

privilege::debug
# 导出单个账号(推荐优先导出krbtgt)
lsadump::dcsync /domain:test.local /user:krbtgt

# 导出域内全部账号哈希,输出csv
lsadump::dcsync /domain:test.local /all /csv

参数说明:

  • /domain:填写目标域名;
  • /user:指定单个用户,只拉取该账号凭据;
  • /all:导出域内所有用户、机器账号哈希;
  • /csv:输出为 csv 格式,方便后续整理哈希。

执行成功,会输出账号 NTLM Hash、Kerberos DES/AES 密钥,拿到 krbtgt 哈希即可直接生成黄金票据。

3.2 Impacket secretsdump.py(Linux/Kali 远程 DCSync,无 Windows 主机)

不需要落地任何程序,直接远程调用 DRS 协议,支持账号密码、PtH 哈希两种方式。

# 使用账号密码执行DCSync
python3 secretsdump.py test.local/admin:'Admin@123'@192.168.1.10 -just-dc

# Pass-the-Hash,使用NTLM哈希远程DCSync
python3 secretsdump.py test.local/admin@192.168.1.10 -hashes :XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -just-dc

-just-dc 参数代表仅执行 DCSync,不尝试 SAM 注册表读取,纯目录复制方式导出域凭据。

3.3 PowerShell 模块 Invoke-DCSync

适用于 PowerShell 无文件加载场景,Cobalt Strike 等 C2 常用。

Import-Module .\Invoke-DCSync.ps1
Invoke-DCSync -Domain test.local -DomainController 192.168.1.10

3.4 常见踩坑

  1. 报错8453 Replication access was denied:账号缺少 DS-Replication-Get-Changes-All 权限,没有读取密码机密属性权限;
  2. 防火墙拦截 RPC 端口(135 + 动态 RPC 端口),DCSync 请求超时;
  3. 只拿到 DS-Replication-Get-Changes,缺少 Get-Changes-All,只能拿到普通用户属性,无法导出密码哈希;
  4. 机器账号末尾带$,查询 ACL 时不要遗漏。

四、DCSync 检测方案(蓝队核心)

DCSync 的核心检测日志是Event ID 4662(目录服务对象访问),该审计策略默认不开启,必须手动在域控安全策略启用「审计目录服务访问」,否则不会产生 4662 日志,很多企业域控因为没开这个审计,DCSync 攻击发生后完全没有日志记录Cyber Secu…。

4.1 核心日志检测规则(Event ID 4662)

告警逻辑:

  • EventID=4662;
  • AccessMask=0x100(Control Access,扩展权限访问);
  • Properties 字段包含两个复制 GUID 任意一个:
    1131f6aa-9c07-11d1-f79f-00c04fc2dcd2
    1131f6ad-9c07-11d1-f79f-00c04fc2dcd2
  • 发起请求的账号不是域控计算机账号(账号名不以 $ 结尾)。

正常域控之间复制,发起方是 DC 机器账号(DC01$);如果是普通用户、备份账号触发该日志,属于高危告警,大概率 DCSync 攻击。

KQL 查询(Microsoft Sentinel)
SecurityEvent
| where EventID == 4662
| where Properties has "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" or Properties has "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2"
| where SubjectUserName !endswith "$"
| project TimeGenerated, SubjectUserName, SubjectDomainName, IpAddress, Properties
PowerShell 本地检索域控安全日志
$guid1 = "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2"
$guid2 = "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2"
Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4662 -and ($_.Message -match $guid1 -or $_.Message -match $guid2)}

4.2 流量侧检测

DCSync 依赖 RPC DRSUAPI 流量:

  • 目标端口:135,之后协商动态 RPC 端口;
  • 协议:MS-DRSR,DRS 接口调用GetNCChanges;
  • 基线:正常 DRS 流量源 IP 只有其他域控 IP。
    检测规则:非域控 IP 访问域控 DRSUAPI 接口,触发告警。

4.3 Microsoft Defender for Identity(MDI)原生检测

MDI 可以直接识别 DCSync 行为,不需要手动配置 4662 审计,内置告警:可疑目录复制(DCSync),自动关联源主机、账号、时间线,是企业域环境推荐方案。

4.4 前置审计策略配置(必须做)

域控组策略,计算机配置 → 安全设置 → 本地策略 → 审计策略 →
审计目录服务访问:启用成功和失败审计。
修改策略后,域控刷新组策略gpupdate /force,策略生效。

五、DCSync 攻击应急响应流程

一旦检测到 DCSync 告警,代表攻击者已经拿到域内高价值凭据,应急步骤:

  1. 隔离攻击源主机:产生 DCSync 请求的工作站 / 服务器,断网隔离;
  2. 锁定泄露账号:执行 DCSync 的账号立即禁用,重置密码;
  3. 域内所有被导出账号视为凭据泄露,重点重置 krbtgt 账号密码,连续修改两次,作废所有旧黄金票据;
  4. 域管理员账号全部强制改密码,所有服务器、工作站排查是否存在票据注入、PtH 横向;
  5. 审计 AD ACL,检查是否存在异常账号被授予 DS-Replication 复制权限;
  6. 日志取证:导出域控安全日志,溯源攻击时间、源 IP、账号;
  7. 清理内存 Kerberos 票据,全网络排查横向移动痕迹。

重点提醒:DCSync 会导出全部账号哈希,仅仅修改执行 DCSync 的账号密码不够,krbtgt 必须重置两次,否则攻击者仍然可以使用旧 krbtgt 哈希继续生成黄金票据。

六、域环境加固方案,防范 DCSync 攻击

1. 审计 AD ACL,清理非必要复制权限(最重要)

定期使用 BloodHound、PowerView 扫描域命名分区 ACL,查找除域控、DA、EA 以外账号,是否被授予DS-Replication-Get-Changes-All。
很多企业的备份软件、AD 同步账号,被过度分配复制权限,成为 DCSync 突破口。

原则:只有域控计算机账号才允许拥有目录复制权限,普通业务账号、备份账号禁止分配该扩展权限。

2. 域账号 Tier 分层运维(Tier 0 模型)

Tier0(域控、DA 账号)仅允许在专用安全运维工作站登录,禁止域管理员登录普通工作站和业务服务器,减少攻击者拿到高权限账号的机会。

3. 定期轮换 krbtgt 账号密码

建议每半年轮换 krbtgt,连续修改两次,作废旧的黄金票据。

4. 域控开启审计目录服务访问,集中 SIEM 日志收集

所有域控安全日志统一上送到 SIEM,配置 4662 DCSync 告警规则,持续监控。

5. 部署 Defender for Identity(MDI)

MDI 可以监控 AD 异常行为,检测 DCSync、DCShadow、ACL 篡改、异常 Kerberos 请求,是域安全重要检测手段。

6. 网络访问控制

域控 RPC(135 及动态 RPC 端口),仅允许其他域控 IP 访问,普通工作站禁止直接访问域控 DRS RPC 接口,从网络层面阻断 DCSync 流量。

7. 最小权限原则

AD 备份方案尽量不使用域复制权限,改用其他备份方式;不要为图方便给普通账号赋予 DA、EA 或者目录复制权限。

七、DCSync 与 NTDS.dit 导出对比

项目DCSyncNTDS.dit 离线导出
是否需要登录域控不需要,域内任意主机远程调用需要登录域控,拷贝 ntds.dit 文件
原理MS-DRSR 目录复制 API 远程拉取凭据拷贝数据库文件,离线解析
落地痕迹无文件落地,纯网络 RPC 调用需要拷贝文件,磁盘存在痕迹
日志特征域控产生 EventID 4662日志无 4662,有文件读取、注册表导出事件
前提权限DS-Replication 复制扩展权限域控本地管理员权限
风险远程即可导出全域哈希必须拿下域控主机权限

八、总结

DCSync 不是系统漏洞,是 AD 域复制机制的权限滥用。一旦账号拥有 DS-Replication-Get-Changes-All 权限,攻击者不需要触碰域控主机,远程调用 DRSUAPI 协议,直接拉取域内全部账号密码哈希,拿到 krbtgt 哈希即可制造黄金票据,实现域持久化。

防守核心分为两层:事前收缩 AD ACL,杜绝普通账号拥有域复制权限;事中开启目录服务审计,监控 EventID4662 和 DRS RPC 异常流量;事后建立应急流程,一旦发生 DCSync,及时重置 krbtgt 与所有泄露账号凭据。

很多企业域安全最大的风险不是 0day 漏洞,而是多年运维遗留下来的过度授权 ACL,BloodHound 可以快速发现这类高危权限,提前消除 DCSync 攻击入口。


最后

关于网络安全技术储备

网络安全是当今信息时代中非常重要的一环。无论是找工作还是感兴趣(黑客),都是未来职业选择中上上之选,为了保护自己的网络安全,学习网络安全知识是必不可少的。

如果你是准备学习网络安全(黑客)或者正在学习,下面这些你应该能用得上:

①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

一、网络安全(黑客)学习路线

网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、网络安全教程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

三、网络安全CTF实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

img

四、网络安全面试题

最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。

在这里插入图片描述

网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!

这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

img

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐