jeffaf/cthaeh
GitHub: jeffaf/cthaeh
基于 Ghidra 的 Windows 内核驱动漏洞优先级分类工具,通过 97 条启发式规则对驱动程序打分,帮助研究人员快速锁定最值得逆向分析的高价值目标。
Stars: 8 | Forks: 2
# 🌳 Cthaeh
基于 Ghidra 的 Windows 内核驱动程序分类扫描器。它根据 97 个漏洞启发式规则对驱动程序进行评分,让你知道应该优先拆解哪些 `.sys` 文件。
Cthaeh 不直接查找漏洞。它找出最*可能*存在漏洞的驱动程序,这样你就可以将逆向工程的时间花在关键之处。
## 输出示例
```
============================================================
🌳 CTHAEH TRIAGE COMPLETE: 340 drivers analyzed
============================================================
💀 CRITICAL: 2
🔴 HIGH priority: 14
🟡 MEDIUM priority: 38
🟢 LOW priority: 72
⚪ SKIP: 214
Top targets (>= HIGH):
1. [CRITICAL] 360 pts athw8x.sys
2. [CRITICAL] 310 pts vhdmp.sys
3. [HIGH ] 245 pts vmci.sys
4. [HIGH ] 240 pts hvservice.sys
```
### 解释模式
```
============================================================
Driver: ssudbus2.sys v2.21.0.0 (Samsung Electronics)
============================================================
Vendor: Samsung (CNA: YES) | Bounty: PRESENT
Score: 285 | Priority: CRITICAL
Priority: CRITICAL - IMMEDIATE - full reverse engineering, build PoC exploit
Scored checks:
+ 25 [msr_write] Contains WRMSR instruction(s)
+ 20 [symlink_no_acl] Symbolic link + IoCreateDevice without Secure
+ 20 [port_io_rw] Port I/O: 12 IN + 8 OUT instructions
...
```
## 快速开始
```
pip install -r requirements.txt
python download_dta.py # Talos type archive (once)
python extract_driverstore.py --output C:\drivers # Pull third-party drivers
python run_triage.py C:\drivers # Scan (only loaded drivers by default)
python run_triage.py C:\drivers --all # Scan everything
python run_triage.py --single C:\path\to\driver.sys # Single driver
python run_triage.py --explain example.sys # Explain a score
```
设置 `GHIDRA_HOME` 后,你永远不需要 `--ghidra`。预过滤、并行 worker、JSON 和 markdown 报告均为默认开启。
## 工作原理
1. **仅运行中过滤**(Windows 默认):仅扫描已加载的驱动程序。使用 `--all` 可覆盖此设置。
2. **预过滤**(pefile):在几毫秒内剔除无趣的驱动程序(约消除 37%)
3. **并行 Ghidra Headless**:N 个 worker(自动 = CPU 核心数的一半)
4. **97 项启发式检查**:危险原语、IOCTL 攻击面、BYOVD、验证缺口、内存损坏、供应商上下文等
5. **丰富的输出**:CSV + JSON + markdown 报告,包含供应商/CNA 状态、历史 CVE 和可操作的建议
## 优先级层级
| 层级 | 阈值 | 操作 |
|------|-----------|--------|
| 💀 CRITICAL | ≥250 | 放下一切,立即分析 |
| 🔴 HIGH | ≥150 | 尽快调查 |
| 🟡 MEDIUM | ≥75 | 值得一看 |
| 🟢 LOW | ≥30 | 可能比较无聊 |
| ⚪ SKIP | <30 | 略过 |
## 已调查驱动程序
已分析的驱动程序会放入 `investigated.json`,并在未来的扫描中跳过。支持版本感知跳过:如果驱动程序更新(版本变更),它会自动重新扫描。
```
{
"investigated": {
"example.sys": {
"reason": "4 vulns submitted to vendor PSIRT",
"version": "2.21.0.0"
}
}
}
```
## 工作流
```
DriverStore --> extract --> running-only --> pre-filter --> Cthaeh --> ranked list --> manual audit
|
Claude Code + Ghidra MCP --> vuln
```
## 系统要求
- Python 3.8+ 及 `pefile`、`pyyaml`
- Ghidra 10.x+(Headless 模式)
- Windows(用于 DriverStore 提取;分析可在任何操作系统上进行)
完整技术参考(所有 97 个启发式规则、CLI 标志、反模式标签)请参见 [REFERENCE.md](REFERENCE.md)。
## 致谢
- WDAC 阻止策略检查和 LOLDrivers 交叉参考受 BlackSnufkin 的 [HolyGrail](https://github.com/BlackSnufkin/Holygrail) 启发。
- 内核 Rhabdomancer 候选点策略受 Marco Ivaldi (0xdea) 的 [Rhabdomancer.java](https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java) 启发。另见:[Automating binary vulnerability discovery with Ghidra and Semgrep](https://hnsecurity.it/blog/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep/)。
- 反模式标记(AP1-AP6)基于 [KernelSight](https://splintersfury.github.io/KernelSight/guides/secure-driver-anatomy/) 对 134 个 CVE 的漏洞根因分析。
- 框架检测和 YAML 评分受 splintersfury 的 [DriverAtlas](https://github.com/splintersfury/DriverAtlas) 启发。
- Windows 驱动程序的 Ghidra 数据类型档案由 [Talos Intelligence](https://blog.talosintelligence.com/ghidra-data-type-archive-for-windows-drivers/) 提供。
## 许可证
MIT
*"Cthaeh 从不说谎。Cthaeh 看到了世界的真实面貌。"*
标签:Conpot, CTF工具, Ghidra, NSM, .sys文件分析, Web报告查看器, Windows内核驱动, Windows安全, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 分类扫描器, 协议分析, 启发式扫描, 权限提升, 漏洞优先级评估, 漏洞搜索, 结构化查询, 自动化安全, 逆向工具, 逆向工程, 防御逃逸, 静态分析, 驱动安全