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安全, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 分类扫描器, 协议分析, 启发式扫描, 权限提升, 漏洞优先级评估, 漏洞搜索, 结构化查询, 自动化安全, 逆向工具, 逆向工程, 防御逃逸, 静态分析, 驱动安全