Add files via upload
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
### 继上题,为什么 ADCS 这个漏洞能获取域管理员权限,原理是什么
|
||||
|
||||
**1. ADCS 漏洞(ESC8)的核心原理**
|
||||
|
||||
ADCS 漏洞(也被称为 ESC8,因为它是由 SpecterOps 发现的攻击链之一)是**配置缺陷**而非代码漏洞。攻击者利用的是 ADCS 证书模板中的一个或多个不安全配置
|
||||
|
||||
一个典型的可被利用的证书模板具有以下特征:
|
||||
|
||||
- **权限配置不安全**:这个证书模板的“注册(Enrollment)”权限被授予了低权限用户,甚至是匿名用户。这意味着,任何人都可以向证书颁发机构(CA)请求一个基于这个模板的证书
|
||||
- **用途配置不安全**:这个证书模板的用途(Extended Key Usage)被设置为 **`Client Authentication`**,这意味着它颁发的证书可以用于客户端身份验证
|
||||
- **不安全的证书主体名(Subject Name)**:这个模板允许请求者自定义证书中的**主体名(Subject Name)**。主体名是用于在 Kerberos 认证中识别用户身份的关键字段
|
||||
|
||||
**2. 攻击链的详细步骤**
|
||||
|
||||
1. **信息收集**:攻击者首先需要通过侦察,找到域内存在的 ADCS 服务器,并识别出那些配置不安全的证书模板
|
||||
- **工具**:`Certify.exe` 是一个常用的工具,可以扫描域内的 ADCS 服务器,并列出所有证书模板的配置,高亮显示那些存在漏洞的模板
|
||||
- **关键信息**:攻击者会寻找那些 `Client Authentication` 权限开启、且主体名可控的模板
|
||||
2. **以低权限用户身份请求高权限证书**:
|
||||
- 攻击者使用一个低权限的域用户,或者通过前面提到的 NTLM Relay 等方法,以**任何一个普通域用户**的身份,向 ADCS 服务器发起证书请求
|
||||
- 在请求时,攻击者利用模板允许自定义主体名的缺陷,将请求的主体名(`Subject Name`)设置为一个**高权限用户**,例如**域管理员**
|
||||
- **为什么能成功?** 理论上,CA 应该验证请求者的身份和其请求的主体名是否匹配。但由于模板配置不安全,CA 没有进行这项验证,直接颁发了一个证书,其主体名是攻击者指定的**域管理员**
|
||||
3. **利用证书获取 Kerberos TGT**:
|
||||
- 攻击者获得这个伪造的证书后,就可以使用像 **`Rubeus.exe`** 这样的工具
|
||||
- `Rubeus` 可以利用这个证书,向域控制器发送 **Kerberos 认证请求**。这个过程被称为 `PKINIT`,是 Kerberos 协议的一个扩展,允许客户端使用证书进行身份验证
|
||||
- **为什么能成功?** 域控制器会看到这个证书,并根据证书中的主体名(`Subject Name`)来识别用户身份。它会认为这个请求来自一个合法的域管理员,并为其颁发一个**域管理员的 Kerberos 票据(TGT)**
|
||||
4. **域完全控制**:
|
||||
- 一旦攻击者获得了域管理员的 TGT,就相当于获得了域管理员的密码哈希,可以**伪造任何其他用户的票据**(Golden Ticket),或者使用 `psexec`、`WMI` 等工具,在不提供密码的情况下,以域管理员的身份执行任意命令,从而实现对整个域的完全控制
|
||||
Reference in New Issue
Block a user