Jazeredz/DLL-Hijacking-Vulnerability-Scanner

GitHub: Jazeredz/DLL-Hijacking-Vulnerability-Scanner

一款针对Windows可执行文件的DLL劫持漏洞扫描工具,通过分析PE导入表和动态加载模式,自动发现已签名程序中的潜在劫持点。

Stars: 2 | Forks: 0

# DLL 劫持漏洞扫描器 SearchAvailableExe 是一款综合性的安全研究工具,旨在识别和分析 Windows 可执行文件中的 DLL 劫持漏洞。该工具通过系统地扫描已签名可执行文件来寻找潜在的 DLL 劫持机会,对于安全研究人员、渗透测试人员和系统管理员具有重要价值。 ## 功能特性 - **自动化扫描**:递归扫描目录或整个驱动器以查找已签名的可执行文件 - **DLL 依赖分析**:分析导入表以识别 DLL 加载模式 - **漏洞测试**:测试可执行文件是否存在实际的 DLL 劫持漏洞 - **综合过滤**:基于各种条件的高级过滤选项 - 针对合法可执行文件的数字签名验证 - 静态和动态 DLL 加载检测 - 针对劫持可行性的写入权限分析 - 系统 DLL 识别与过滤 - 针对动态加载模式的全节扫描 - GUI/Console 应用程序分类 ## 安装说明 ### 前置条件 - Windows 操作系统 - Visual Studio 2022 - 管理员权限(建议使用以便进行全面扫描) ### 从源代码构建 1. 克隆或下载该代码库 2. 在 Visual Studio 中打开 `SearchAvailableExe.sln` 3. 选择目标配置(Debug/Release,x86/x64) 4. 构建解决方案 (Ctrl+Shift+B) ## 使用方法 ``` # Scan 当前目录 SearchAvailableExe.exe -i "C:\Program Files" # Scan 并输出到文件 SearchAvailableExe.exe -i "C:\Windows\System32" -o results.txt # Scan 所有驱动器(需要管理员权限) SearchAvailableExe.exe ``` ### 命令行选项 | 选项 | 长格式 | 描述 | 默认值 | |--------|-----------|-------------|---------| | `-h` | `--help` | 显示帮助信息并退出 | - | | `-i` | `--input ` | 要扫描的输入目录 | 所有驱动器 | | `-o` | `--output ` | 结果输出文件 | 控制台输出 | | `-w` | `--write` | 仅包含可写入的目录 | 禁用 | | `-c` | `--count ` | 考虑的最大 DLL 数量 | 1 | | `-b` | `--bit ` | 目标架构 (32, 64, 或 96 表示两者) | 96 | | `-s` | `--save` | 将可利用文件保存到磁盘 | 禁用 | | `-l` | `--load ` | DLL 加载方式 (1=静态, 2=动态, 3=两者) | 3 | | `-p` | `--pass` | 在结果中跳过系统 DLL | 禁用 | | `-a` | `--search ` | 启用全节扫描 | 禁用 | | `-g` | `--guiwindow` | 仅包含 GUI 应用程序 | 禁用 | ### 高级示例 ``` # Scan 64-bit executables 及可写目录 SearchAvailableExe.exe -i "C:\Program Files" -b 64 -w -o x64_results.txt # 查找仅有 static DLL loading 的 executables SearchAvailableExe.exe -i "C:\Windows" -l 1 -c 2 # 使用所有选项进行 Comprehensive scan SearchAvailableExe.exe -i "C:\" -w -g -p -a 1 -s -o comprehensive_scan.txt ``` ## 输出格式 该工具生成包含以下内容的详细报告: ``` === DLL Hijacking Vulnerability Scan Results === Found 15 exploitable executables: Exploitable Executable: C:\Program Files\Example\app.exe Architecture: 64-bit | Writable Directory: Yes | DLL Loading: Static | Subsystem: GUI Exploitable DLL: example.dll Additional DLLs required: helper.dll utility.dll --------------------------------------------------- ``` ### 输出字段说明 - **Exploitable Executable (可利用的可执行文件)**:易受攻击的可执行文件的完整路径 - **Architecture (架构)**:32 位或 64 位可执行文件 - **Writable Directory (可写目录)**:目录是否具有写入权限 - **DLL Loading (DLL 加载方式)**:静态(导入表)或动态(LoadLibrary 调用) - **Subsystem (子系统)**:GUI(窗口化)或控制台应用程序 - **Exploitable DLL (可利用的 DLL)**:可被劫持的 DLL - **Additional DLLs (额外的 DLL)**:可能需要存在的其他 DLL ### 分析流程 1. **文件发现**:递归扫描目录以查找 `.exe` 文件 2. **签名验证**:使用 Windows Crypto API 验证数字签名 3. **PE 分析**:解析 Portable Executable 头部和导入表 4. **DLL 枚举**:识别导入的 DLL 和动态加载模式 5. **漏洞测试**:创建测试环境并尝试进行 DLL 劫持 6. **结果过滤**:应用用户指定的过滤器和条件 ### DLL 加载检测 该工具识别两种类型的 DLL 加载: #### 静态加载 (导入表) - 分析 PE 导入表以查找 DLL 依赖项 - 检查可执行文件所在目录中的 DLL 文件 - 识别可能被劫持的缺失 DLL #### 动态加载 (运行时) - 扫描可执行文件节区以查找 LoadLibrary 调用 - 在 `.rdata` 和 `.rsrc` 节区中搜索 DLL 名称字符串 - 支持全节扫描以进行彻底分析 ## 故障排除 ### 常见问题 **访问被拒绝错误** - 以管理员身份运行以扫描系统目录 - 确保防病毒软件未阻止该工具 **未找到结果** - 验证目标目录是否包含已签名的可执行文件 - 检查过滤条件(架构、DLL 数量等) - 尝试使用限制较少的过滤器进行扫描 ### 调试信息 为了进行故障排除,该工具提供: - 扫描期间的进度指示器 - 文件访问问题的错误消息 - 详细模式下的详细过滤信息 ## 免责声明 本工具按“原样”提供,不提供任何形式的保证。作者不对因使用本软件而可能产生的任何损害或法律问题负责。请自担风险和责任使用。 ## 版本历史 ### 版本 2.0 (当前版本) - 完全重写,代码结构得到改进 - 更好的错误处理和用户反馈 - 改进的命令行界面 - 全面的过滤选项 ### 版本 1.0 (原始版本) - 具有基本功能的初始版本 - 基本的 DLL 劫持检测
标签:C++, Conpot, DLL劫持, Windows安全, 二进制分析, 云安全监控, 云安全运维, 加密, 动态链接库, 可执行文件分析, 子域名枚举, 导入表分析, 数字签名验证, 数据擦除, 权限分析, 漏洞扫描器, 系统安全, 静态分析