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, 逆向工具