### 利用 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:///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 版本,并且其证书模板存在上述配置缺陷