| name | detecting-dcsync-attack-in-active-directory |
| description | 通过监控非域控制器账户通过 DsGetNCChanges 请求目录复制的行为,检测攻击者滥用 Active Directory 复制权限提取密码哈希的 DCSync 攻击。 |
| domain | cybersecurity |
| subdomain | threat-hunting |
| tags | ["threat-hunting","active-directory","dcsync","credential-theft","mitre-t1003-006","mimikatz","kerberos"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
检测 Active Directory 中的 DCSync 攻击
适用场景
- 在 Active Directory 环境中狩猎凭据盗取活动时
- 拥有复制目录更改权限的账户被入侵后
- 调查疑似使用 Mimikatz 或 Impacket secretsdump 的情况时
- 涉及域管理员凭据横向移动的事件响应期间
- 作为安全加固的一部分审计 AD 复制权限时
前置条件
- 启用事件 ID 4662(对象访问)的 Windows 安全事件日志
- 已启用高级审计策略:审计目录服务访问
- 域控制器事件转发至 SIEM
- 了解合法域控制器的主机名和 IP
- 在域对象上配置 SACL 的目录服务访问审计
工作流程
- 识别合法复制源:按主机名、IP 和计算机账户记录环境中所有域控制器。只有这些系统才应执行目录复制。
- 启用必要审计:配置高级审计策略,通过特定 GUID 监控在域控制器上捕获事件 ID 4662 的复制权限。
- 监控复制权限访问:跟踪对三个关键 GUID 的访问——DS-Replication-Get-Changes(1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)、DS-Replication-Get-Changes-All(1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)和 DS-Replication-Get-Changes-In-Filtered-Set(89e95b76-444d-4c62-991a-0facbeda640c)。
- 检测非域控制器复制请求:当任何与域控制器无关的账户请求复制权限时发出告警。
- 与网络流量关联:DCSync 会从攻击者的机器向域控制器产生复制流量(MS-DRSR/RPC)。监控来自非域控制器 IP 地址的 DrsGetNCChanges RPC 调用。
- 调查源头上下文:检查发起复制请求的进程、用户账户和机器。
- 检查凭据滥用:DCSync 检测后,审计提取哈希的后续使用情况(哈希传递、黄金票据创建)。
核心概念
| 概念 | 描述 |
|---|
| T1003.006 | 操作系统凭据转储:DCSync |
| DCSync | 模仿域控制器复制以提取凭据 |
| DsGetNCChanges | 用于请求 AD 复制数据的 RPC 函数 |
| DS-Replication-Get-Changes | 所需的 AD 权限(GUID:1131f6aa-...) |
| DS-Replication-Get-Changes-All | 包含机密属性的权限(GUID:1131f6ad-...) |
| MS-DRSR | 微软目录复制服务远程协议 |
| KRBTGT 哈希 | DCSync 的关键目标,可用于黄金票据(Golden Ticket)攻击 |
| 事件 ID 4662 | 目录服务对象访问审计事件 |
工具与系统
| 工具 | 用途 |
|---|
| Mimikatz (lsadump::dcsync) | 主要 DCSync 攻击工具 |
| Impacket secretsdump.py | 基于 Python 的 DCSync 实现 |
| DSInternals | 用于 AD 复制的 PowerShell 模块 |
| BloodHound | 映射具有复制权限的账户 |
| Splunk / Elastic | 4662 事件的 SIEM 关联 |
| Microsoft Defender for Identity | 原生 DCSync 检测 |
| CrowdStrike Falcon | 基于 EDR 的 DCSync 检测 |
检测查询
Splunk——通过事件 4662 检测 DCSync
index=wineventlog EventCode=4662
| where Properties IN ("*1131f6aa-9c07-11d1-f79f-00c04fc2dcd2*",
"*1131f6ad-9c07-11d1-f79f-00c04fc2dcd2*",
"*89e95b76-444d-4c62-991a-0facbeda640c*")
| where NOT match(SubjectUserName, ".*\\$$")
| where NOT SubjectUserName IN ("known_svc_account1", "known_svc_account2")
| stats count values(Properties) as ReplicationRights by SubjectUserName SubjectDomainName Computer
| where count > 0
| table SubjectUserName SubjectDomainName Computer count ReplicationRights
KQL——Microsoft Sentinel DCSync 检测
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
Sigma 规则——DCSync 活动
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
常见场景
- Mimikatz DCSync:拥有域管理员权限的攻击者运行
lsadump::dcsync /user:krbtgt 提取 KRBTGT 哈希,用于创建黄金票据。
- Impacket secretsdump:通过
secretsdump.py domain/user:password@dc-ip 进行远程 DCSync,提取所有域哈希。
- 委托复制权限:攻击者在执行 DCSync 之前通过 ACL 修改为自己授予复制目录更改权限。
- Azure AD Connect 滥用:入侵拥有合法复制权限的 Azure AD Connect 服务账户。
- DSInternals PowerShell:使用
Get-ADReplAccount cmdlet 复制特定账户凭据。
输出格式
Hunt ID: TH-DCSYNC-[DATE]-[SEQ]
Alert Severity: Critical
Source Account: [请求复制的账户]
Source Machine: [请求者的主机名/IP]
Target DC: [接收请求的域控制器]
Replication Rights: [访问的 GUID]
Timestamp: [事件时间]
Legitimate DC: [是/否]
Known Service Account: [是/否]
Risk Assessment: [严重 - 检测到非域控制器复制]