DCSync 攻击检测实战指南:基于 Event 4662 与复制权限审计的 Active Directory 凭据窃取狩猎
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
DCSync 是 MITRE ATT&CK T1003.006(OS Credential Dumping: DCSync)定义的凭据窃取技术:攻击者通过模拟域控制器发起目录复制,直接提取域内账户密码哈希。本篇指南以 Anthropic-Cybersecurity-Skills 仓库中的detecting-dcsync-attack-in-active-directory技能文档为核心,系统讲解从复制权限枚举、审计策略部署、Splunk/KQL/Sigma 检测规则到应急响应与修复的完整狩猎工作流,并结合仓库配套的 Python 检测脚本源码,让读者掌握一套可落地、可自动化、可复用的 DCSync 检测与取证方案。
DCSync 攻击原理与检测基石
DCSync 攻击的本质是滥用 Active Directory 的复制权限。AD 域控之间通过 MS-DRSR(Microsoft Directory Replication Service Remote Protocol)协议同步目录数据,合法复制方(域控、Azure AD Connect 等)持有"复制目录更改"权限。攻击者在获得足够权限后(通常是 Domain Admin 或具有复制权限的账户),会伪装成域控发起DsGetNCChangesRPC 调用,从目标域控拉取包括krbtgt、Domain Admin 在内的全部账户密码哈希。
仓库技能文档 SKILL.md 将其明确定位为威胁狩猎(threat-hunting)技能,对应 MITRE ATT&CK T1003.006,并关联了 D3FEND 的 Application Protocol Command Analysis、Network Traffic Analysis 等防御技术以及 NIST CSF 的 DE.CM-01、DE.AE-02 等检测能力项。
三个关键复制权限 GUID
检测 DCSync 的核心是监控域对象上三个复制相关权限(GUID)的访问记录。文档在 api-reference.md 中给出了完整定义:
| GUID | 权限名称 | 风险等级 |
|---|---|---|
1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 | DS-Replication-Get-Changes(复制目录更改) | 执行 DCSync 的最低要求 |
1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 | DS-Replication-Get-Changes-All(复制目录更改所有项) | 包含密码等机密属性,风险最高 |
89e95b76-444d-4c62-991a-0facbeda640c | DS-Replication-Get-Changes-In-Filtered-Set(复制筛选集) | 部分复制权限,常被用于规避检测 |
其中DS-Replication-Get-Changes-All覆盖机密属性,是攻击者提取密码哈希最常用的权限——Mimikatzlsadump::dcsync /user:krbtgt与 Impacketsecretsdump.py的底层原理正是请求该权限发起复制。
关键 Event ID 与检测信号
| Event ID | 来源 | 检测用途 |
|---|---|---|
| 4662 | 安全日志 | 目录服务对象访问——DCSync 主检测事件 |
| 4624 | 安全日志 | 成功登录——关联复制请求的来源主机 |
| 4672 | 安全日志 | 分配特殊权限(管理员登录) |
| 4738 | 安全日志 | 用户账户更改(权限授予) |
| 5136 | 安全日志 | 目录服务对象修改(ACL 变更,如攻击者自授复制权限) |
第一阶段:枚举合法复制账户(建立检测基线)
检测 DCSync 前必须先建立"合法基线"——明确环境中哪些账户有权发起复制,避免把正常域控复制误报为攻击。
Step 1.1 列出所有域控
Get-ADDomainController -Filter * | Select-Object Name, IPv4Address, OperatingSystem记录每个域控的主机名、IPv4 地址与操作系统版本。合法域控的计算机账户名以$结尾,这是后续检测规则中最重要的排除条件。
Step 1.2 查找持有复制权限的账户
Import-Module ActiveDirectory $rootDSE = Get-ADRootDSE $domainDN = $rootDSE.defaultNamingContext $acl = Get-Acl "AD:\$domainDN" $acl.Access | Where-Object { $_.ObjectType -eq "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2" -or $_.ObjectType -eq "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" } | Select-Object IdentityReference, ActiveDirectoryRights, ObjectType这段命令读取域根对象的 DACL(访问控制列表),筛出对两个复制 GUID 拥有权限的账户。这是 workflows.md 中 Phase 1 的核心步骤,输出结果应纳入已知白名单。
Step 1.3 用 BloodHound 查询 DCSync 权限路径
MATCH p=(n)-[:GetChanges|GetChangesAll]->(d:Domain) WHERE NOT n:Domain RETURN n.name, labels(n)BloodHound 可将所有具备GetChanges/GetChangesAll权限的账户(及可达的攻击路径)可视化,是审计复制权限面、发现"过度授权"账户的高效手段。
合法复制来源识别表
standards.md 汇总了需要纳入白名单的合法来源及其区分特征:
| 来源 | 原因 | 区分方法 |
|---|---|---|
| 域控制器 | 正常 AD 复制 | 计算机账户以$结尾 |
| Azure AD Connect | 混合身份同步 | MSOL_服务账户 |
| 备份软件 | AD 备份操作 | 已文档化的服务账户 |
| 迁移工具 | 跨森林迁移 | 临时的、已文档化的操作 |
第二阶段:部署检测(审计策略与 SACL)
Step 2.1 启用目录服务访问审计
auditpol /set /subcategory:"Directory Service Access" /success:enable /failure:enable必须在所有域控上启用Directory Service Access高级审计策略,否则不会产生 Event 4662。
Step 2.2 在域对象上配置 SACL
在域根对象上配置系统访问控制列表(SACL),监控以下访问:
- Control Access权限(对应复制权限检查)
- 复制 GUID的访问(上述三个 GUID)
- 主体为Everyone 或 Authenticated Users
SACL 配置可通过组策略(Advanced Audit Policy → DS Access)或 PowerShell 的Set-Acl完成。此步骤与 Event 4662 的产生直接相关:只有被 SACL 标记的对象访问才会写入安全日志。
第三阶段:主动监控(SIEM 实时检测)
Step 3.1 Splunk 实时检测 Event 4662
index=wineventlog source="WinEventLog:Security" EventCode=4662 | rex field=Properties "(?<guid>\{[0-9a-f-]+\})" | where guid IN ("{1131f6aa-9c07-11d1-f79f-00c04fc2dcd2}", "{1131f6ad-9c07-11d1-f79f-00c04fc2dcd2}", "{89e95b76-444d-4c62-991a-0facbeda640c}") | lookup dc_accounts SubjectUserName OUTPUT is_dc | where is_dc!="true" | eval alert_severity="CRITICAL" | table _time SubjectUserName SubjectDomainName Computer guid alert_severity关键逻辑:从Properties字段提取 GUID → 命中任一复制 GUID → 用dc_accounts查找表过滤掉合法域控 → 剩余的全部判为CRITICAL告警。SKILL.md 还提供了一个更严格的变体——用where NOT match(SubjectUserName, ".*\\$$")排除所有$结尾的计算机账户,并用stats ... by SubjectUserName按账户聚合去重。
Step 3.2 网络层检测 DsGetNCChanges RPC
index=zeek sourcetype=dce_rpc | where operation="DRSGetNCChanges" | lookup domain_controllers src_ip OUTPUT is_dc | where is_dc!="true" | table _time src_ip dst_ip operation网络层检测通过 Zeek 的 DCE_RPC 日志监控DRSGetNCChanges操作:任何非域控 IP发起的DRSGetNCChanges调用都值得高度关注。SKILL.md 的工作流第 5 步也明确指出 DCSync 会从攻击者机器到域控产生 MS-DRSR/RPC 复制流量,网络层与主机层(4662)互为印证,可有效降低误报。
KQL(Microsoft Sentinel)检测规则
SecurityEvent | where EventID == 4662 | where Properties has "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2" or Properties has "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" | where SubjectUserName !endswith "$" | where SubjectUserName !in ("AzureADConnect", "MSOL_*") | project TimeGenerated, SubjectUserName, SubjectDomainName, Computer, Properties | sort by TimeGenerated desc该规则除排除$计算机账户外,还显式排除了AzureADConnect与MSOL_*混合身份同步账户,避免 Azure AD Connect 的合法复制行为产生误报。
Sigma 规则
title: DCSync Activity Detected - Non-DC Replication Request status: stable logsource: product: windows service: security detection: selection: EventID: 4662 Properties|contains: - '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2' - '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2' filter_dc: SubjectUserName|endswith: '$' condition: selection and not filter_dc level: critical tags: - attack.credential_access - attack.t1003.006Sigma 规则可无缝移植到 Elastic、Splunk、QRadar 等任意支持 Sigma 的 SIEM,作为跨平台检测能力基线。
第四阶段:调查取证(确认来源与影响)
Step 4.1 关联 4624 定位来源机器
将 Event 4662 与 Event 4624(成功登录)关联,确认发起复制的真实工作站:
index=wineventlog EventCode=4624 LogonType=3 | where TargetUserName=[suspected_account] | table _time TargetUserName IpAddress WorkstationName LogonTypeLogonType=3表示网络登录——DCSync 通常通过远程 RPC 触发,源 IP 与工作站名即攻击者机器的位置证据。
Step 4.2 检查后续凭据滥用
index=wineventlog EventCode=4769 | where ServiceName="krbtgt" | where TicketEncryptionType="0x17" | table _time TargetUserName ServiceName IpAddress TicketEncryptionTypeServiceName="krbtgt"的0x17(RC4)类型服务票据申请,是黄金票据伪造的前兆信号——DCSync 窃取 KRBTGT 哈希的直接目的。结合 template.md 中的"Post-DCSync Impact Assessment"检查表,逐项评估 KRBTGT 哈希是否泄露、Domain Admin 哈希是否被提取、是否具备黄金票据创建条件。
第五阶段:应急响应与修复
Step 5.1 立即遏制
- 立即禁用被入侵的账户
- 两次轮换 KRBTGT 密码(间隔 12 小时)——这是黄金票据失效的唯一手段
- 重置所有服务账户密码
- 在网络层封锁来源 IP
- 隔离来源机器进行取证
Step 5.2 修复与加固
- 移除未授权的复制权限
- 复查所有具备 DCSync 能力的账户
- 实施分层管理模型(tiered administration model)
- 启用 Microsoft Defender for Identity 的 DCSync 告警
- 将管理员账户纳入 Protected Users 安全组
检测结果输出模板
SKILL.md 定义了标准化的狩猎输出格式,便于上报与追踪:
Hunt ID: TH-DCSYNC-[DATE]-[SEQ] Alert Severity: Critical Source Account: [Account requesting replication] Source Machine: [Hostname/IP of requestor] Target DC: [Domain controller receiving request] Replication Rights: [GUIDs accessed] Timestamp: [Event time] Legitimate DC: [Yes/No] Known Service Account: [Yes/No] Risk Assessment: [Critical - non-DC replication detected]仓库配套工具:自动化 DCSync 检测脚本
仓库为本技能提供了两个 Python 脚本,可将上述工作流自动化:
agent.py:EVTX 解析与检测
scripts/agent.py 直接解析 Windows Security 事件日志 EVTX 文件(依赖python-evtx),内置与文档一致的REPLICATION_GUIDS字典(第 18-22 行),并在解析 Event 4662 时执行文档规定的白名单逻辑:
python agent.py --security-log Security.evtx --dc-accounts known_dcs.txt python agent.py --generate-sigma python agent.py --check-perms其实现细节印证了文档中的检测逻辑:
- 通过正则提取
Properties、SubjectUserName、SubjectDomainName、SubjectLogonId、ObjectName、SystemTime等字段; - 对
$结尾的计算机账户,只有在dc_accounts白名单内才放行(第 75-81 行); - 依据权限严重度分级:
DS-Replication-Get-Changes-All相关检测判HIGH(机器账户)或CRITICAL(用户账户); - 每条检测记录自动附上
"mitre": "T1003.006"标签,便于 SIEM 关联; --generate-sigma直接生成与文档一致的 Sigma 规则 JSON,--check-perms输出复制权限审计的 PowerShell 查询。
process.py:批量狩猎与报告生成
scripts/process.py 支持从 JSON/CSV 导入事件数据,运行完整狩猎并生成报告:
python process.py --input events.json --dc-list known_dcs.txt --output ./dcsync_hunt_output它按文档输出格式生成dcsync_findings.json与dcsync_report.md两份产物,其中hunt_id遵循TH-DCSYNC-YYYY-MM-DD规范;严重度分级与 agent.py 一致:命中DS-Replication-Get-Changes-All判CRITICAL,其余复制权限判HIGH(第 85-87 行)。
常见攻击场景与对抗手法
文档与 SKILL.md 归纳了以下高频场景,检测时应有针对性地覆盖:
- Mimikatz DCSync:攻击者以 Domain Admin 权限执行
lsadump::dcsync /user:krbtgt提取 KRBTGT 哈希用于黄金票据。 - Impacket secretsdump:远程 DCSync,
secretsdump.py domain/user:password@dc-ip一次性提取全部域哈希。 - 委派复制权限:攻击者先通过 ACL 修改给自己授予复制目录更改权限(对应 Event 5136/4738),再执行 DCSync——此时应联动监控 ACL 变更。
- Azure AD Connect 滥用:入侵本身拥有合法复制权限的 Azure AD Connect 服务账户,白名单失效风险最高。
- DSInternals:
Get-ADReplAccount复制指定账户凭据,攻击面更隐蔽。
已知利用 DCSync 的威胁组织
standards.md 记录了曾使用 DCSync 的知名威胁组织,可用于威胁情报关联与优先级排序:
| 组织 | 背景 |
|---|---|
| APT29(Cozy Bear) | SolarWinds 供应链攻击中使用 DCSync |
| FIN6 | 零售/酒店行业凭据收割 |
| Wizard Spider | TrickBot/Conti 勒索软件加密前 DCSync |
| APT28(Fancy Bear) | 政府网络入侵 |
| LAPSUS$ | AD 入侵后 DCSync 窃取数据 |
项目级参考:ATT&CK 覆盖与技能生态
在仓库整体视角下,DCSync 检测是覆盖面最广的检测技能之一:根据 mappings/README.md 的统计,T1003.006(DCSync)在全部技能中排名前十(13 个技能引用),对应的 attack-navigator-layer.json 中,T1003.006 以深蓝色(11+ 技能引用)呈现,表明 DCSync 检测在安全社区的高优先级。技能文档关联了 D3FEND(Application Protocol Command Analysis、Network Traffic Analysis 等)与 NIST CSF(DE.CM-01、DE.AE-02)框架映射,读者可参考 CITATION.cff 与 index.json 了解本技能在 817 个网络安全技能体系中的定位,并按 tools/README.md 中的 agentskills 标准校验技能元数据。
结语
DCSync 攻击检测的关键在于三层协同:权限基线(枚举合法复制账户)、日志审计(Event 4662 + SACL)、多源印证(4662 主机事件 + DsGetNCChanges 网络事件)。本文给出的 PowerShell 基线枚举、Splunk/KQL/Sigma 检测规则、调查取证关联查询以及应急响应流程,均可直接套用于生产环境;仓库配套的 agent.py 与 process.py 则让整个检测闭环(解析→白名单过滤→分级告警→报告生成)实现全自动化,值得作为威胁狩猎自动化的起点。
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考