### 说说域内委派

**1. 基础知识：委派的类型**

首先，我们需要理解域内委派的两种主要类型，因为它们的攻击方法截然不同

**a. 非约束性委派**

这是最古老、也最危险的一种委派方式

- **工作原理**：当一个用户访问配置了非约束性委派的服务（比如一个 Web 服务器）时，域控制器会把该用户的**票据授予票据（TGT）**发送给这个服务。这个服务会把用户的 TGT 缓存到内存中，以便后续代表用户去访问其他任何服务
- **渗透利用点**：
  1. **票据窃取（TGT Stealing）**：非约束性委派的关键漏洞在于，服务会**在内存中缓存所有访问过它的用户的 TGT**
  2. **伪造身份**：如果一个渗透测试人员能够控制这个服务账户（例如通过弱密码、令牌窃取等），他就可以**从内存中导出所有缓存的 TGT**，包括域管理员的 TGT
  3. **万能钥匙**：拿到域管理员的 TGT 后，攻击者就拥有了**完全的域管理员权限**，可以代表该管理员去访问域内任何一台机器或服务，实现了最高级别的权限提升

**攻击思路**：

1. **侦察**：使用工具（如 PowerView、SharpHound）枚举所有配置了非约束性委派的机器账户或用户账户。
   - **PowerView 命令**：`Get-DomainUser -UnconstrainedDelegation` 或 `Get-DomainComputer -UnconstrainedDelegation`
2. **等待和诱骗**：找到一个目标后，我们需要等待或诱骗一个高权限用户（如域管理员）来访问这台机器上的服务
3. **票据导出**：一旦高权限用户访问了，我们立即使用 `Mimikatz` 或 `Rubeus` 等工具，在被控机器上从内存中导出所有 TGT 票据
4. **票据复用**：拿到域管理员的 TGT 后，我们可以使用 `Mimikatz` 的 `kerberos::ptt`（Pass The Ticket）功能，将票据注入到当前会话中，然后以域管理员的身份访问域内任何资源，比如 `net use \\DC01\c$ /y`

**b. 约束性委派**

这是为了解决非约束性委派的风险而引入的更安全的委派方式，它**限制了服务可以代表用户访问的范围**。但它依然存在攻击点

- **工作原理**：与非约束性委派不同，约束性委派不会把用户的 TGT 传给服务。它利用 Kerberos 协议的扩展（S4U2Self 和 S4U2Proxy）来完成委派
  - **S4U2Self**：服务向 KDC（Key Distribution Center）证明它代表用户，并请求一个服务票据（ST）
  - **S4U2Proxy**：服务用这个 ST 去请求另一个服务的 ST，但这个过程是**严格受限**的
- **渗透利用点**：
  1. **滥用 S4U2Proxy**：如果攻击者能够控制一个配置了约束性委派的服务账户，他可以滥用 S4U2Proxy 协议，**冒充域内任何一个普通用户**（甚至不存在的用户）去请求访问被委派的特定服务
  2. **横向移动**：这使得攻击者可以**以任意用户的身份**访问特定服务，即使该用户并没有访问权限，从而实现横向移动

**攻击思路**：

1. **侦察**：找到配置了约束性委派的账户
   - **PowerView 命令**：`Get-DomainUser -Properties * | Where {$_.msds-allowedtodelegateto}`
2. **控制服务账户**：通过密码喷洒、弱密码或凭证窃取等方式，获取一个配置了约束性委派的服务账户的权限
3. **执行 S4U2Proxy 攻击**：使用 `Rubeus` 或 `Kekeo` 等工具，冒充一个域内用户（如 `Administrator`），向 KDC 请求访问目标服务的票据
   - **Rubeus 命令示例**：`Rubeus.exe s4u /user:victim-user /rc4:victim-user-hash /impersonateuser:administrator /altservice:HTTP/webservice.contoso.com /dc:DC01.contoso.com /ptt`
4. **票据复用**：成功后，会将伪造的票据注入到当前会话，攻击者即可用管理员身份访问 `webservice.contoso.com`

**c. 基于资源的约束性委派**

这是 Windows Server 2012 引入的更精细的委派方式，它将委派配置在**被访问的资源**上，而不是服务账户上

- **渗透利用点**：
  1. **ACL 滥用**：如果攻击者控制了一台机器（例如，通过普通用户权限），并且该机器的ACL（访问控制列表）允许某个低权限账户进行委派配置，那么攻击者就可以**将该机器配置为允许某个低权限账户进行委派**
  2. **权限提升**：攻击者可以利用这个漏洞，将一个低权限服务账户配置为可以代表任何用户访问这台机器，从而实现权限提升