danaug23/detect_CVE-2026-25177
GitHub: danaug23/detect_CVE-2026-25177
生产环境安全的只读扫描器,用于检测CVE-2026-25177 AD SPN Unicode冲突漏洞的利用痕迹,帮助识别隐藏在SPN中的恶意Unicode字符和重复SPN配置。
Stars: 0 | Forks: 0
# detect-CVE-2026-25177
生产环境安全的扫描器,用于检测 **CVE-2026-25177** 的利用情况 —— 即 Active Directory SPN Unicode 冲突漏洞 (CVSS 8.8)。
此漏洞允许任何具有 write-SPN 权限的已认证用户通过向 Service Principal Names 中注入 Unicode 字符,绕过 AD 的 duplicate-SPN 验证并导致 Kerberos 票据错误签发,从而将权限提升至 **SYSTEM**。
## 检测内容
- **SPN 中的 Unicode 字符** — 零宽空格、同形字、BOM 标记以及其他不可见/易混淆字符,表明存在 SPN 毒化
- **跨账户的重复 SPN** — 多个账户持有相同的 SPN(不区分大小写),这可能导致 Kerberos 票据错误签发
- **用户账户上近期的 SPN 修改** — 标记在可配置时间窗口内更改的 SPN,以捕获活跃的利用行为
## 生产环境安全
- **只读** — LDAP 连接以 `read_only=True` 打开;无法进行任何修改
- **单一 LDAP 查询** — 搜索 `(servicePrincipalName=*)`,与 `setspn -Q` 等内置工具使用的轻量级查询相同
- **快速** — 即使在拥有 15,000+ 个账户的环境中,也能在 30 秒内完成
- **低权限** — 任何已认证的域用户均可运行(默认的 AD 读取权限即足够)
## 快速开始
```
pip install -r requirements.txt
# 基础扫描
python detect_spn_abuse.py -dc dc01.corp.local -d corp.local -u scanner_svc -p 'password'
# 扫描并生成 CSV 报告
python detect_spn_abuse.py -dc dc01.corp.local -d corp.local -u scanner_svc -p 'password' --csv report.csv
# 标记最近 7 天内修改的 SPN
python detect_spn_abuse.py -dc dc01.corp.local -d corp.local -u scanner_svc -p 'password' --days 7
# 使用 LDAPS (端口 636)
python detect_spn_abuse.py -dc dc01.corp.local -d corp.local -u scanner_svc -p 'password' --use-ssl
```
## 示例输出
```
+==============================================================+
| CVE-2026-25177 - SPN Unicode Collision Detector |
| Read-only scan - safe for production |
+==============================================================+
[+] Connected via NTLM:389 (read-only)
[*] Scanning all accounts with SPNs...
[+] Scanned 247 accounts, 1,042 SPNs
======================================================================
SCAN RESULTS: 1 finding(s)
CRITICAL: 1 | HIGH: 0 | INFO: 0
======================================================================
[CRITICAL] Finding 1: SPN contains 1 suspicious Unicode character(s)
────────────────────────────────────────────────────────────
Account: jsmith
DN: CN=jsmith,CN=Users,DC=corp,DC=local
SPN: HTTP/webserver.corp.local
SPN Hex: 48545450e2808b2f7765627365727665722e636f72702e6c6f63616c
Modified: 2026-03-13 14:22:17+00:00
Position 4: U+200B - Zero-Width Space [invisible]
======================================================================
RECOMMENDED ACTIONS:
1. Investigate accounts with CRITICAL findings immediately
2. Remove any SPNs containing Unicode characters
3. Check Event Log for SPN modification events (Event ID 4742)
4. Review delegation permissions (who can write SPNs)
5. Apply Microsoft patch for CVE-2026-25177
```
## 作为计划任务运行
要每天扫描直到您的 DC 打好补丁,请设置计划任务 (Windows) 或 cron 作业 (Linux):
**Windows (Task Scheduler):**
```
schtasks /create /tn "CVE-2026-25177 Scanner" /tr "python C:\path\to\detect_spn_abuse.py -dc dc01.corp.local -d corp.local -u scanner_svc -p 'password' --csv C:\logs\spn_scan.csv --days 1" /sc daily /st 06:00
```
**Linux (cron):**
```
0 6 * * * python3 /opt/detect_spn_abuse.py -dc dc01.corp.local -d corp.local -u scanner_svc -p 'password' --csv /var/log/spn_scan.csv --days 1
```
## 背景
CVE-2026-25177 于 2026 年 3 月 10 日披露 (CVSS 8.8)。它影响从 2012 到 2025 的所有 Windows Server 版本。该攻击仅需标准的域用户凭据以及被委托的 write-SPN 权限 —— 这是企业环境中常见的配置。
Microsoft 已发布补丁。**请立即应用。**
## 许可证
MIT License — 可免费使用、修改和分发。参见 [LICENSE](LICENSE)。
标签:Active Directory, AD安全, AMSI绕过, Checkov, CVE-2026-25177, Kerberos漏洞, LDAP扫描器, Plaso, Python, SPN滥用, Unicode碰撞, Web技术栈, Web报告查看器, 协议分析, 只读扫描, 域控制器, 威胁检测, 无后门, 权限提升, 模拟器, 生产安全, 私有化部署, 逆向工具, 防御规避