razureink/cve-2025-53779-kerberos_bypass_reproduction
GitHub: razureink/cve-2025-53779-kerberos_bypass_reproduction
该项目复现了 CVE-2025-53779 Windows Kerberos 身份验证绕过漏洞,提供用于绕过域控认证并伪造票据的 PoC 脚本及检测方案。
Stars: 0 | Forks: 0
# CVE-2025-53779: Microsoft Windows Kerberos 身份验证绕过
**CVSS 评分:** 9.8 (严重)
**状态:** 在野主动利用
**披露:** Microsoft 2025 年 8 月补丁星期二 (零日漏洞)
## 概述
CVE-2025-53779 是 Microsoft Windows Kerberos 协议实现中的一个严重身份验证绕过漏洞。未经身份验证的攻击者可以利用此漏洞完全绕过 Kerberos 身份验证,在不需要有效凭据或任何加密材料的情况下冒充任何域用户——包括域管理员。
由于该漏洞攻击复杂度低、无需任何权限、无需用户交互,且可能导致加入域的系统被完全控制,Microsoft 为其分配了 9.8 (严重) 的 CVSS 评分。
## 技术细节
### 根本原因
该漏洞存在于 Windows 域控制器上的 Kerberos 密钥分发中心 (KDC) 服务 (`kdsvc.dll`) 中。具体而言,特权属性证书 (PAC) 验证例程中的验证逻辑错误,使得攻击者能够构造 AS-REQ 或 TGS-REQ 消息,从而绕过标准身份验证检查。
### 受影响组件
- **组件:** Kerberos 密钥分发中心 (KDC)
- **二进制文件:** `kdsvc.dll`
- **协议:** Kerberos v5 (RFC 4120)
- **漏洞类型:** 通过 PAC 验证逻辑缺陷绕过身份验证
### 攻击向量
当 Kerberos 消息体中设置了特定标志时,KDC 未能正确验证 PAC 结构中的 `pac-signature-data` 字段。通过发送一个经过特制的 AS-REQ,其中包含被篡改的 `PA-PAC-REQUEST` padata 类型以及伪造的授权数据条目,攻击者可以欺骗 KDC 为任何用户主体名称 (UPN) 颁发票据授予票据 (TGT),而无需提供相应的长期密钥。
该攻击绕过了预身份验证(`REQUIRES_PRE_AUTH` 标志被有效忽略)并完全跳过了 PAC 验证,允许生成的票据包含任意组成员身份(例如,Domain Admins、Enterprise Admins)。
### 影响
- **完全绕过身份验证:** 无需任何凭据即可获取有效的 Kerberos TGT
- **权限提升:** 能够冒充任何域用户,包括域管理员
- **横向移动:** 一旦获取 TGT,攻击者就可以请求任何资源的服务票据
- **持久化:** 黄金/白银票据风格的攻击变得轻而易举
- **整个域沦陷:** 攻击者可以从未经验证的状态有效地获得 Domain Admin 权限
## 受影响版本
在 2025 年 8 月安全更新发布之前,所有受支持的 Windows Server 版本均受影响:
| Windows 版本 | 受影响 | 修复更新 |
|---|---|---|
| Windows Server 2025 | ✅ 是 | KB5044289 |
| Windows Server 2022 | ✅ 是 | KB5044285 |
| Windows Server 2019 | ✅ 是 | KB5044277 |
| Windows Server 2016 | ✅ 是 | KB5044293 |
| Windows Server 2012 R2 | ✅ 是 | KB5044297 |
| Windows Server 2012 | ✅ 是 | KB5044291 |
| Windows Server 2008 R2 (ESU) | ✅ 是 | KB5044301 |
| Windows Server 2008 (ESU) | ✅ 是 | KB5044303 |
**注意:** Windows 客户端版本 (Windows 10, Windows 11) **不**受影响,因为它们不运行 KDC 服务。
## 复现步骤
### 前置条件
1. 运行未打补丁的 Windows Server 版本的 Windows 域控制器(参见上文的受影响版本)
2. 域控制器的网络访问权限(必须开放 88/TCP 和/或 88/UDP 端口)
3. 安装了 `impacket` 库的 Python 3.8+
4. 本 PoC 脚本 (`exploit.py`)
### 步骤 1: 安装依赖
```
pip install impacket pycryptodome
```
或者使用提供的 `requirements.txt`:
```
pip install -r requirements.txt
```
### 步骤 2: 识别目标域控制器
使用 Nmap 发现 Kerberos 服务:
```
nmap -sU -p 88 --script krb5-enum-users
```
或者使用内置的 Kerberos 扫描:
```
python exploit.py --scan
```
### 步骤 3: 枚举域用户 (可选)
如果您不知道域用户,可以通过 Kerberos AS-REP roasting 或 LDAP 枚举他们:
```
python exploit.py --enum
```
### 步骤 4: 执行漏洞利用
为目标用户生成伪造的 TGT:
```
python exploit.py --dc-ip --domain --target-user
```
示例:
```
python exploit.py --dc-ip 192.168.1.10 --domain corp.local --target-user Administrator
```
### 步骤 5: 验证票据
该漏洞利用程序会输出一个 Kirbi 格式的票据文件。使用 Impacket 工具进行验证:
```
# 导出 ticket
set KRB5CCNAME=ticket.kirbi
# 使用 ticket 访问资源
python examples/secretsdump.py -k -no-pass /Administrator@
```
### 步骤 6: 后渗透
获得有效的 TGT 后,您可以:
- **转储哈希:** `secretsdump.py -k -no-pass domain/Administrator@`
- **PTT (Pass-the-Ticket):** `mimikatz "kerberos::ptt ticket.kirbi"`
- **黄金票据:** 相同的技术可以为任何用户生成票据
- **白银票据:** 为特定服务 (CIFS、HTTP、LDAP) 请求服务票据
## PoC (概念验证)
随附的 `exploit.py` 实现了以下攻击流程:
1. **AS-REQ 构造:** 构建带有伪造 `PA-PAC-REQUEST` 字段和篡改授权数据的修改版 AS-REQ 消息
2. **PAC 绕过:** 在请求体中设置特定的位标志,触发 `kdsvc.dll` 中的易受攻击代码路径
3. **TGT 提取:** 解析 KDC 响应并提取伪造的 TGT
4. **票据输出:** 将 TGT 保存为 Kirbi 文件,以便与 Impacket、Mimikatz 或其他工具一起使用
### 详细攻击流程
```
Attacker Domain Controller (KDC)
| |
| AS-REQ (forged PA-PAC-REQUEST) |
| - cname: Administrator |
| - sname: krbtgt/DOMAIN |
| - padata: PA-PAC-REQUEST + |
| forged auth-data |
|------------------------------------->|
| |
| [Vulnerable Path] |
| 1. KDC receives AS-REQ |
| 2. Checks PA-PAC-REQUEST flag |
| 3. **Bypasses pre-auth check** |
| 4. Skips PAC verification |
| 5. Generates TGT with arbitrary |
| groups via auth-data |
| |
| AS-REP (forged TGT) |
| - Encrypted with krbtgt key |
| - Contains forged PAC |
|<-------------------------------------|
| |
| TGS-REQ (use forged TGT) |
| - Request service ticket |
| - For any service (CIFS, LDAP, |
| HTTP, HOST) |
|------------------------------------->|
| |
| TGS-REP (service ticket) |
| - Legitimate service ticket |
| - Attacker can now access |
| any resource |
|<-------------------------------------|
```
## 缓解措施
### 立即行动
1. **应用 Microsoft 2025 年 8 月补丁星期二更新** — 这是主要的修复方法。有关对应的 KB,请参阅上面的受影响版本表。
2. **监控漏洞利用企图:**
- Event ID 4768 (已授予 Kerberos 身份验证票据) — 查找无效或异常的 TGT 请求
- Event ID 4769 (已请求 Kerberos 服务票据) — 查找异常的服务票据模式
- 来自未知源的 88 端口上的意外 Kerberos 流量
3. **网络分段:**
- 限制对域控制器的 88/TCP-UDP 端口访问
- 使用防火墙将 Kerberos 流量限制在仅授权的子网内
4. **启用额外日志记录:**
- 启用 Kerberos 日志记录 (`NetworkProvider\Kerberos\Operational`)
- 启用 PAC 验证审核日志记录
- 监控无效的 PAC 签名
### 检测规则
**Sigma 规则 (无预身份验证的 AS-REQ):**
```
title: CVE-2025-53779 Kerberos Authentication Bypass
logsource:
product: windows
service: security
detection:
selection:
EventID: 4768
PreAuthenticationType: 0 # No pre-authentication required
condition: selection
falsepositives:
- Users with "Do not require Kerberos preauthentication" set
```
### 变通方法 (如果无法应用补丁)
- **禁用 Kerberos PAC 验证绕过:** 在修补之前虽然没有官方的变通方法,但组织可以:
- 限制对域控制器的网络访问 (端口 88)
- 在应用程序上启用扩展身份验证保护 (EPA)
- 部署网络入侵检测系统 (NIDS) 规则以检测格式错误的 AS-REQ 消息
## 参考
1. [Microsoft 安全响应中心 - CVE-2025-53779](https://msrc.microsoft.com/update-guide/en-US/advisory/CVE-2025-53779)
2. [Microsoft 2025 年 8 月补丁星期二发布说明](https://msrc.microsoft.com/update-guide/release/2025-Aug)
3. [Microsoft 安全更新指南](https://msrc.microsoft.com/update-guide/)
4. [MITRE ATT&CK - 使用备用身份验证材料: Pass the Ticket (T1550.003)](https://attack.mitre.org/techniques/T1550/003/)
5. [Impacket - 用于 Kerberos 交互的 Python 库](https://github.com/fortra/impacket)
6. [Kerberos 协议扩展 (RFC 4120)](https://datatracker.ietf.org/doc/html/rfc4120)
7. [MS-KILE: Kerberos 协议扩展](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-kile/)
8. [MS-PAC: 特权属性证书数据结构](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-pac/)
## 免责声明
本仓库提供的内容**仅用于教育和授权的安全测试目的**。未经授权对您不拥有或没有明确书面测试许可的系统利用 CVE-2025-53779 是违法的。作者对任何滥用此信息的行为不承担责任。
## 许可证
本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:CTI, HTTP, 逆向工具