🔓 ZerroDay:高级 DLL 劫持扫描器
专为 Windows 权限提升精简漏洞发现流程
🧠 概念概述
我开发 ZerroDayEvil 是因为我需要一款快速、无依赖且开源的工具,用于在 Windows 环境中搜寻 DLL 劫持漏洞。当 Windows 应用程序加载动态链接库(DLL)时,它们会遵循严格的搜索顺序——从可执行文件自身的目录开始,然后依次移动到 System32、Windows 文件夹,最后是 PATH 环境变量。
如果一个应用程序试图加载一个不存在于受保护系统目录中的 DLL,并且我对该搜索链中靠前的目录具有写入权限,我就可以投放恶意 payload。ZerroDay 将这整个发现过程自动化了。它会遍历目录树,分析可移植可执行(PE)导入表,将它们与磁盘上实际存在的文件进行交叉比对,并精准定位确切的劫持机会。
🎯 核心理念
“寻找执行链中缺失的环节。”
我设计 ZerroDayEvil 的初衷是消除噪音。无需手动运行 Process Monitor (ProcMon) 并在成千上万的 “NAME NOT FOUND” 事件中苦苦搜寻,该工具可以直接静态分析处于静止状态的二进制文件,并为红队行动提供即时、可操作的情报。
🖥️ 图形用户界面(GUI)
将 GUI 指向目标目录,然后点击 Scan。当 Robber 解析可执行文件时,结果会实时填充到树视图中。你可以展开任何存在漏洞的可执行文件,检查哪些特定的 DLL 是可劫持的、你需要代理的导出方法,以及完整的搜索顺序路径(包括可写性标志)。
🎨 自定义评级配置
为了帮助优先考虑用于制作代理 DLL 的目标,我基于 payload 复杂度实现了一套颜色编码的评级系统:
| 评级等级 | 颜色 | Emoji | 特征与代理难度 |
|---|---|---|---|
| 最佳 | 绿色 | 🟢 | 导入函数少且二进制体积小。极其容易构建代理 DLL 来 stub 所需的导出。 |
| 良好 | 黄色 | 🟡 | 复杂度中等。需要多费些功夫来映射导出,以避免宿主应用程序崩溃。 |
| 较差 | 红色 | 🔴 | 导入量巨大或二进制文件非常大。在不导致执行不稳定的情况下极难进行有效代理。 |
🚀 快速入门指南(CLI 模式)
针对自动化 pipeline 和无头环境,我提供了一个功能强大的命令行界面(CLI)。进度信息会输出到 stderr,而干净的 JSON/CSV 结果则输出到 stdout,使其完全支持管道操作。
🧪 CLI 选项
Robber.exe --path <dir> [options]
--path <dir> Directory to scan (required)
--output <file> Write to file (.json or .csv). Default: stdout
--image-type any|x86|x64 Filter by architecture
--sign any|signed Filter by digital signature status
--rate any|best|good|bad Filter by complexity rating
--write-perm Only show results where the target directory is writable
--best-dll-count <n> (default: 2)
--best-exe-size <n> KB threshold (default: 10240)
--help
💻 调用示例
搜寻最佳、最容易利用的目标并保存为 JSON:
Robber.exe --path "C:\Program Files" --rate best --output hits.json
将输出通过管道传递给 jq,以快速解析存在漏洞的路径:
Robber.exe --path "C:\Program Files" | jq '.[].exePath'
严格查找可写目录中已签名的二进制文件(非常适合用于绕过/持久化):
Robber.exe --path "C:\Tools" --sign signed --write-perm
📊 系统架构
graph TD
A[Target Directory] --> B{PE Parser Engine}
B --> C[Extract Standard & Delayed Imports]
B --> D[Check UAC Manifest Requirements]
C --> E{System DLL Filter}
E -->|Ignore System32/SysWOW64| F[Skip False Positives]
E -->|Valid Target| G[Evaluate Search Order Path]
G --> H[Check Directory Writability]
H --> I[Apply Complexity Rating]
I --> J[Export JSON/CSV / Render GUI]
✨ 核心功能与智能过滤
🛡️ UAC 提权检测
Robber 会自动解析应用程序清单。如果可执行文件需要提权(requireAdministrator 或 highestAvailable),我会直接在输出中对其进行标记。在提权进程上成功进行 DLL 劫持不仅仅是任意的代码执行——它是一个直接的权限提升向量。
🧠 智能减少误报
我专门对引擎进行了编程,使其自动排除已知的系统 DLL(例如来自 System32、SysWOW64、Windows\System 的)。这意味着你不会被关于可再发行运行时(如 msvcr120.dll)的误报噪音所淹没。此外,扫描器还会分析标准和延迟导入。
🧰 技术规格与构建
🛠️ 编译要求
- 完全使用 Delphi 编写。
- 需要 Delphi XE2 或更高版本进行编译。
- 无外部依赖。只需打开
Robber\Robber.dproj并构建即可。
⚖️ 许可证与法律声明
🚨 免责声明
此工具严格仅用于授权的漏洞研究、系统管理和道德黑客(白帽)活动。
未经系统所有者明确书面许可,识别和利用 DLL 劫持漏洞是非法且不道德的。我对滥用此实用程序不承担任何责任,包括但不限于未经授权在生产系统上进行权限提升或持久化。请务必确保您的操作始终在约定好的授权测试范围内进行。
🔗 SEO 关键词(自然融入)
- DLL 劫持漏洞扫描器
- Windows 权限提升工具
- PE 导入表分析
- 红队横向移动准备
- 自动化代理 DLL 生成目标
- 未加引号服务路径的替代方案
- 网络安全防御态势验证
🔄 下载与贡献
贡献指南:
- Fork 该代码仓库。
- 提交专注于 Delphi 性能改进或 UI 增强的 PR。
- 确保严格维持项目无依赖的特性。
ZerroDayEvil — 系统性地瓦解 Windows 执行链。