🔓 HydraSoft:高级 DLL 劫持扫描器
专为发现 Windows 权限提升而优化的漏洞扫描工具
🧠 概念概述
我开发 ZerroDayEvil 是因为我需要一个快速、无依赖且开源的工具,用于搜寻 Windows 环境中的 DLL 劫持漏洞。当 Windows 应用程序加载动态链接库(DLL)时,它们会遵循严格的搜索顺序——首先从可执行文件自身的目录开始,然后依次移动到 System32、Windows 文件夹,最后是 PATH 环境变量。
如果一个应用程序试图加载一个不存在于受保护系统目录中的 DLL,并且我对该搜索链中靠前的目录拥有写入权限,我就可以投放恶意 payload。ZerroDay 使整个发现过程自动化。它会遍历目录树,分析可移植执行体(PE)导入表,将它们与磁盘上实际存在的文件进行交叉比对,从而精准定位劫持机会。
🎯 核心理念
“寻找执行链中缺失的一环。”
我设计 ZerroDayEvil 的初衷是为了消除噪音。你无需再手动运行 Process Monitor (ProcMon) 并在成千上万的 "NAME NOT FOUND" 事件中苦苦搜寻,该工具能对处于静态的二进制文件进行静态分析,并为红队(Red Team)行动提供即时、可操作的情报。
🖥️ 图形用户界面(GUI)
将 GUI 指向目标目录,然后点击 Scan。当 Robber 解析可执行文件时,结果会实时填充在树状视图中。你可以展开任何存在漏洞的可执行文件,以检查哪些特定的 DLL 可以被劫持、你需要代理(proxy)的导出方法,以及完整的搜索顺序路径(包括可写性标志)。
🎨 自定义评级配置
为了帮助确定制作代理 DLL 的目标优先级,我实现了一个基于 payload 复杂度的颜色编码评级系统:
| 评级 | 颜色 | Emoji | 特征与代理难度 |
|---|---|---|---|
| 最佳 | 绿色 | 🟢 | 导入函数很少且二进制文件体积小。构建一个存根(stub)来处理所需导出的代理 DLL 非常容易。 |
| 良好 | 黄色 | 🟡 | 复杂度中等。需要稍微多花点精力来映射导出,同时避免导致宿主应用程序崩溃。 |
| 较差 | 红色 | 🔴 | 导入量巨大或二进制文件非常大。如果不引起执行不稳定,极难有效地进行代理。 |
🚀 快速入门指南(CLI 模式)
针对自动化流水线和无头(headless)环境,我提供了一个功能强大的命令行界面(CLI)。进度信息会输出到 stderr,而干净的 JSON/CSV 结果则发送到 stdout,使其完全具备良好的管道(pipe)兼容性。
🧪 CLI 选项
Robber.exe --path <dir> [options]
--path <dir> 要扫描的目录(必填)
--output <file> 写入到文件(.json 或 .csv)。默认值:stdout
--image-type any|x86|x64 按架构过滤
--sign any|signed 按数字签名状态过滤
--rate any|best|good|bad 按复杂度评级过滤
--write-perm 仅显示目标目录可写的结果
--best-dll-count <n> (默认值:2)
--best-exe-size <n> KB 阈值(默认值: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[目标目录] --> B{PE 解析引擎}
B --> C[提取标准与延迟导入]
B --> D[检查 UAC 清单要求]
C --> E{系统 DLL 过滤器}
E -->|忽略 System32/SysWOW64| F[跳过误报]
E -->|有效目标| G[评估搜索顺序路径]
G --> H[检查目录可写性]
H --> I[应用复杂度评级]
I --> J[导出 JSON/CSV / 渲染 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 执行链。