### 利用 NTLM Relay 配合 ADCS 这个漏洞的情况需要什么条件

**1. NTLM Relay 攻击的基本原理**

NTLM Relay 的核心是中间人攻击。攻击者位于客户端和服务器之间，截获并重放 NTLM 认证会话

1. **客户端发起认证请求**：域内的一台机器（客户端）向攻击者控制的机器发起一个 SMB 或 HTTP 等协议的连接
2. **攻击者截获并转发**：攻击者截获客户端的 NTLM Challenge/Response 认证信息（但无法破解出明文密码）
3. **攻击者重放认证**：攻击者将这个认证信息**原封不动地转发**给**另一台域内机器**（目标服务器），冒充客户端进行认证
4. **目标服务器验证通过**：目标服务器认为这个认证信息是合法的，并允许攻击者以客户端的身份进行访问

这里的关键是，攻击者没有破解密码，而是**直接利用认证过程**，将受害者的身份“重放”给了目标服务器

**2. ADCS 漏洞（ESC8）的核心原理**

Active Directory Certificate Services (ADCS) 是微软提供的一个证书颁发机构（CA），用于管理公钥基础设施（PKI）

漏洞（也被称为 ESC8）存在于一些**不安全的证书模板配置**中。当一个证书模板被配置为：

- **`Certificate Authority Authorization`** (`CA Authorization`) 权限不安全，允许低权限用户或匿名用户注册
- 并且模板允许**`客户端认证`** (`Client Authentication`)
- 最重要的是，模板设置了 **`NTLM 签名禁用`** (`NTLM Signing Disabled`)

在这种配置下，攻击者可以利用 NTLM Relay 攻击，将受害者的身份信息中继到 ADCS 服务器，**以受害者的身份请求一个证书**。这个证书将用于后续的 Kerberos 认证

**3. NTLM Relay 配合 ADCS 的完整攻击链**

将两者结合后，攻击链变得异常强大，因为攻击者不再需要找到一个可以被利用的**文件共享**或**远程桌面服务**，而是将认证重定向到一个特定的 ADCS Web 页面

1. **诱导受害者发起认证**：攻击者需要想办法让域内一个用户或计算机（受害者）向自己发起一个认证请求
   - **强制认证**：通过强制用户访问一个恶意 UNC 路径（例如 `\\<攻击机IP>\share`），Windows 系统会自动尝试使用 NTLM 认证来访问这个共享
   - **钓鱼攻击**：通过发送恶意链接（例如 `file:///<攻击机IP>/payload.html`）给受害者
2. **启动 NTML Relay 服务器**：攻击者使用专门的工具（如 `ntlmrelayx.py`）来监听并重定向认证
3. **重定向认证到 ADCS**：当受害者发起认证请求时，`ntlmrelayx.py` 会捕获 NTLM 认证信息，并将其**重定向到 ADCS 的一个特定 HTTP 页面**
   - **重定向 URL 示例**：`http://<ADCS服务器IP>/certsrv/certfnsh.asp`
4. **以受害者身份请求证书**：ADCS 服务器接收到重定向的 NTLM 认证后，会认为这是受害者在请求证书。由于模板配置不安全，它会为攻击者颁发一个**带有受害者身份信息**的有效证书
5. **利用证书获取 Kerberos 票据**：攻击者获取到这个证书后，可以使用 `Rubeus.exe` 或其他工具，利用证书请求一个**Kerberos 票据（TGT）**
6. **实现 Kerberos 认证**：有了这个 TGT，攻击者就可以**以受害者的身份访问域内的所有服务**。如果这个受害者是**域管理员**，攻击者就实现了域的完全控制，包括创建新用户、修改组权限等

**4. 攻击链的利用条件总结**

要成功执行这种攻击，必须满足以下所有条件：

1. **NTLM Relay 环境**：攻击者必须能够位于一个可以拦截和重定向 NTLM 认证请求的网络位置
2. **受害者认证**：攻击者需要找到一个可以被诱导、向攻击机发起 NTLM 认证的受害者，通常是域内的一台机器或一个用户
3. **不安全的 ADCS 模板配置**：这是最关键的条件，也是漏洞的根源。ADCS 模板必须存在以下缺陷：
   - **`Enrollment Rights`（注册权限）**：允许低权限用户或匿名用户请求证书
   - **`Client Authentication`**：证书可以用于客户端认证
   - **`NTLM Signing Disabled`**：ADCS 服务器的 HTTP 接口没有启用 NTLM 签名验证
4. **域内存在未打补丁的 ADCS 服务器**：服务器必须运行一个易受攻击的 ADCS 版本，并且其证书模板存在上述配置缺陷