1. 域内委派安全基础概念
在Windows域环境中,委派(Delegation)是一种重要的安全机制,它允许服务账户代表用户账户执行特定操作。这种机制类似于现实生活中的"授权代理"——就像房东委托中介公司全权处理房屋出租事宜一样,域用户可以将其权限委托给服务账户,使服务账户能够以用户身份访问其他资源。
Kerberos协议是Windows域环境中实现委派的核心技术基础。当用户访问某个服务时,Kerberos协议会颁发两种重要的票据:
- TGT(Ticket Granting Ticket):相当于域环境的"身份证",用于获取其他服务的访问票据
- ST(Service Ticket):针对特定服务的访问凭证
在标准Kerberos流程中,用户首先向域控制器(DC)认证并获取TGT,然后使用TGT向DC请求特定服务的ST。这种设计原本是为了避免用户凭证在网络中传输,但在委派场景下,为了满足服务间调用的需求,微软对标准Kerberos协议进行了扩展。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 委派类型深度解析
2.1 非约束委派(Unconstrained Delegation)
非约束委派是最早出现的委派形式,也是最不安全的一种。它的工作流程如下:
- 用户向DC请求访问服务A的ST
- DC返回包含用户TGT的ST给服务A
- 服务A可以从ST中提取用户TGT,并用它请求访问任何其他服务
这种机制的危险性显而易见——一旦攻击者控制了配置了非约束委派的服务,就能获取到访问该服务的用户的TGT,进而完全冒充该用户。
重要提示:在Windows Server 2003之后,微软不再推荐使用非约束委派,但为了向后兼容,该功能仍然保留。
2.1.1 非约束委派配置识别
识别域内配置了非约束委派的账户是攻击者的首要步骤。我们可以使用AdFind工具进行查询:
bash复制# 查询配置了非约束委派的服务账户
AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
# 查询配置了非约束委派的计算机账户
AdFind -b "DC=god,DC=org" -f "(&(sa
