news 2026/9/13 2:32:36

DCSync 攻击检测实战指南:基于 Event 4662 与复制权限审计的 Active Directory 凭据窃取狩猎

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DCSync 攻击检测实战指南:基于 Event 4662 与复制权限审计的 Active Directory 凭据窃取狩猎

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-00c04fc2dcd2DS-Replication-Get-Changes(复制目录更改)执行 DCSync 的最低要求
1131f6ad-9c07-11d1-f79f-00c04fc2dcd2DS-Replication-Get-Changes-All(复制目录更改所有项)包含密码等机密属性,风险最高
89e95b76-444d-4c62-991a-0facbeda640cDS-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

该规则除排除$计算机账户外,还显式排除了AzureADConnectMSOL_*混合身份同步账户,避免 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.006

Sigma 规则可无缝移植到 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 LogonType

LogonType=3表示网络登录——DCSync 通常通过远程 RPC 触发,源 IP 与工作站名即攻击者机器的位置证据。

Step 4.2 检查后续凭据滥用

index=wineventlog EventCode=4769 | where ServiceName="krbtgt" | where TicketEncryptionType="0x17" | table _time TargetUserName ServiceName IpAddress TicketEncryptionType

ServiceName="krbtgt"0x17(RC4)类型服务票据申请,是黄金票据伪造的前兆信号——DCSync 窃取 KRBTGT 哈希的直接目的。结合 template.md 中的"Post-DCSync Impact Assessment"检查表,逐项评估 KRBTGT 哈希是否泄露、Domain Admin 哈希是否被提取、是否具备黄金票据创建条件。

第五阶段:应急响应与修复

Step 5.1 立即遏制

  1. 立即禁用被入侵的账户
  2. 两次轮换 KRBTGT 密码(间隔 12 小时)——这是黄金票据失效的唯一手段
  3. 重置所有服务账户密码
  4. 在网络层封锁来源 IP
  5. 隔离来源机器进行取证

Step 5.2 修复与加固

  1. 移除未授权的复制权限
  2. 复查所有具备 DCSync 能力的账户
  3. 实施分层管理模型(tiered administration model)
  4. 启用 Microsoft Defender for Identity 的 DCSync 告警
  5. 将管理员账户纳入 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

其实现细节印证了文档中的检测逻辑:

  • 通过正则提取PropertiesSubjectUserNameSubjectDomainNameSubjectLogonIdObjectNameSystemTime等字段;
  • $结尾的计算机账户,只有在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.jsondcsync_report.md两份产物,其中hunt_id遵循TH-DCSYNC-YYYY-MM-DD规范;严重度分级与 agent.py 一致:命中DS-Replication-Get-Changes-AllCRITICAL,其余复制权限判HIGH(第 85-87 行)。

常见攻击场景与对抗手法

文档与 SKILL.md 归纳了以下高频场景,检测时应有针对性地覆盖:

  1. Mimikatz DCSync:攻击者以 Domain Admin 权限执行lsadump::dcsync /user:krbtgt提取 KRBTGT 哈希用于黄金票据。
  2. Impacket secretsdump:远程 DCSync,secretsdump.py domain/user:password@dc-ip一次性提取全部域哈希。
  3. 委派复制权限:攻击者先通过 ACL 修改给自己授予复制目录更改权限(对应 Event 5136/4738),再执行 DCSync——此时应联动监控 ACL 变更。
  4. Azure AD Connect 滥用:入侵本身拥有合法复制权限的 Azure AD Connect 服务账户,白名单失效风险最高。
  5. DSInternalsGet-ADReplAccount复制指定账户凭据,攻击面更隐蔽。

已知利用 DCSync 的威胁组织

standards.md 记录了曾使用 DCSync 的知名威胁组织,可用于威胁情报关联与优先级排序:

组织背景
APT29(Cozy Bear)SolarWinds 供应链攻击中使用 DCSync
FIN6零售/酒店行业凭据收割
Wizard SpiderTrickBot/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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 2:31:42

teamai-cli:用命令行统一团队AI工作流,搞定提示词、成本与审计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 2:30:03

微信小程序BLE断连检测与自动重连方案实践

做微信小程序 BLE 开发&#xff0c;最让人头疼的往往不是设备连不上&#xff0c;而是“明明连得好好的&#xff0c;过一会儿莫名其妙就断了”。我最近的项目里&#xff0c;硬件端是一块自研蓝牙模块&#xff0c;手机通过小程序控制设备&#xff0c;结果在真机调试和正式环境里&…

作者头像 李华
网站建设 2026/9/13 2:29:44

AI-native实战:从架构设计到最小可行闭环的落地指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 2:29:21

基于大衍数构造稀疏校验矩阵的LDPC码误码率仿真实现

做通信系统仿真的朋友应该都清楚&#xff0c;LDPC码的性能很大程度上押在稀疏校验矩阵上。最近我完成了一个用大衍数构造稀疏校验矩阵的LDPC误码率Matlab仿真工程&#xff0c;对比了不同译码迭代次数、码率和码长对误码率曲线的影响。整套代码能直接跑&#xff0c;改参数就能出…

作者头像 李华
网站建设 2026/9/13 2:27:13

C#中与的本质区别:短路逻辑 vs 位运算

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华