Bor-Code/MalwareAnalysisTool

GitHub: Bor-Code/MalwareAnalysisTool

一款结合 C++ 引擎与 Tauri GUI 的 Windows 恶意软件分析工具,提供静态与实验性动态分析及风险评估功能。

Stars: 1 | Forks: 0

# MalwareAnalysisTool MalwareAnalysisTool 是一个专注于 Windows 的恶意软件分析项目,它将 C++ PE 分析引擎与现代的 Tauri 桌面 GUI 结合在一起。 该项目支持静态 PE 分析、实验性动态分析、生成 TXT/JSON 报告、风险评分、SHA-256 哈希计算、可疑 API 检测、可疑 DLL 摘要、区块熵分析,以及 Matrix 主题的桌面界面。 该项目的主要目标是为学习、初步筛查和防御性研究提供一个轻量级的恶意软件分析工作流程。 ## GUI 预览 ![MalwareAnalysisTool GUI 1](https://raw.githubusercontent.com/Bor-Code/MalwareAnalysisTool/main/assets/1.png) ![MalwareAnalysisTool GUI 2](https://raw.githubusercontent.com/Bor-Code/MalwareAnalysisTool/main/assets/2.png) ![MalwareAnalysisTool GUI 3](https://raw.githubusercontent.com/Bor-Code/MalwareAnalysisTool/main/assets/3.png) ## 主要功能 ### 静态分析 静态分析在不执行目标文件的情况下检查 PE 文件。 它可以提取并报告: * DOS 头验证 * PE 头验证 * 区块信息 * 区块熵值 * 区块风险等级 * 导入的 DLL * 导入的 API * 可疑 API 使用情况 * 可疑 API 类别 * 可疑 API 严重程度等级 * 可疑 DLL 摘要 * 目标文件大小 * SHA-256 哈希 * 静态风险评分 * 静态风险等级 * TXT 和 JSON 报告 静态模式更安全,因为它不会执行被分析的文件。 ### 动态分析 动态分析使用 Windows 调试 API 执行目标文件。 它可以捕获与运行时相关的事件,例如: * 与进程相关的事件 * 与文件相关的事件 * 捕获到的 API 活动 * 事件时间戳 * 事件 ID * 分析持续时间 * 超时状态 动态分析是实验性的。 请仅在隔离的 Windows 虚拟机内部使用此模式。 ### 桌面 GUI 该项目包含一个基于 Tauri 的现代桌面 GUI。 该 GUI 提供: * 静态分析模式 * 动态分析模式 * 原生文件选择 * TR/EN 语言切换 * Matrix 主题界面 * 清洁 / 可疑 / 高风险判定结果显示 * 风险评分显示 * 风险等级显示 * SHA-256 显示 * 文件大小显示 * TXT/JSON 报告预览 * 动态模式超时输入 * 动态分析文件类型验证 GUI 在后台使用现有的 `pe_analyzer.exe` 分析引擎。 ## 项目结构 ``` MalwareAnalysisTool/ ├── include/ │ └── analyzer/ │ ├── pe_parser.hpp │ └── dynamic_analyzer.hpp ├── src/ │ ├── main.cpp │ ├── pe_parser.cpp │ └── dynamic_analyzer.cpp ├── gui/ │ ├── src/ │ │ ├── main.ts │ │ └── styles.css │ └── src-tauri/ │ ├── src/ │ │ └── lib.rs │ ├── capabilities/ │ └── tauri.conf.json ├── assets/ │ ├── 1.png │ ├── 2.png │ └── 3.png ├── CMakeLists.txt ├── README.md └── LICENSE ``` ## 环境要求 ### CLI 要求 * Windows * CMake * 兼容 C++17 的编译器 * Visual Studio Build Tools 或 Visual Studio Community ### GUI 要求 * Node.js * npm * Rust * Cargo * 针对 Windows 的 Tauri 依赖项 * WebView2 Runtime ## 构建 CLI 在项目根目录下执行: ``` cmake -B build cmake --build build --config Release ``` CLI 可执行文件将生成在: ``` build/Release/pe_analyzer.exe ``` ## CLI 用法 ### 帮助 ``` .\build\Release\pe_analyzer.exe -help ``` 你也可以使用: ``` .\build\Release\pe_analyzer.exe --help .\build\Release\pe_analyzer.exe -h ``` ### 静态分析 ``` .\build\Release\pe_analyzer.exe -static C:\Windows\System32\notepad.exe ``` 指定自定义输出目录: ``` .\build\Release\pe_analyzer.exe -static C:\Windows\System32\notepad.exe -out reports ``` 静态分析不会执行目标文件。 ### 动态分析 ``` .\build\Release\pe_analyzer.exe -dynamic C:\Windows\System32\notepad.exe ``` 设置超时时间: ``` .\build\Release\pe_analyzer.exe -dynamic C:\Windows\System32\notepad.exe -timeout 30 ``` 设置超时时间并指定自定义输出目录: ``` .\build\Release\pe_analyzer.exe -dynamic C:\Windows\System32\notepad.exe -timeout 30 -out reports ``` 动态分析会执行目标文件。 请仅在隔离的 Windows 虚拟机内部使用它。 ## 运行 GUI 在项目根目录下执行: ``` cd gui npm install npm run tauri dev ``` 构建 GUI: ``` cd gui npm run build npm run tauri build ``` GUI 会在后台使用 C++ CLI 引擎。 在运行 GUI 分析之前,请确保 CLI 已构建完成: ``` cmake -B build cmake --build build --config Release ``` ## 报告输出 ### 静态分析报告 静态分析生成: ``` static_analysis_report.txt static_analysis_report.json ``` 当使用 `-out reports` 时,文件将生成在: ``` reports/ ├── static_analysis_report.txt └── static_analysis_report.json ``` JSON 元数据示例: ``` { "targetFileSize": 360448, "sha256": "ab15a95de88ab0624307ae0e28e333756a2a522f650a0be78749901f7dc32ecf" } ``` 风险摘要示例: ``` { "summary": { "risk": { "score": 39, "level": "Medium" } } } ``` ### 动态分析报告 动态分析生成: ``` dynamic_analysis_report.txt dynamic_analysis_report.json ``` 当使用 `-out reports` 时,文件将生成在: ``` reports/ ├── dynamic_analysis_report.txt └── dynamic_analysis_report.json ``` 动态报告可能包含捕获到的运行时事件,例如: * 事件 ID * 时间戳 * API 名称 * 捕获到的事件计数 * 超时状态 * 分析持续时间 ## 静态风险评分 静态风险评分是根据可疑 API 的严重程度和区块风险指标计算得出的。 | 指标 | 分数 | | ------------------------------ | ----: | | 高严重程度可疑 API | +5 | | 中严重程度可疑 API | +2 | | 低严重程度可疑 API | +1 | | 高区块风险 | +3 | | 中区块风险 | +1 | 分数最高为 100。 风险等级: | 分数范围 | 风险等级 | | --------: | -------- | | 0-19 | 低 | | 20-49 | 中 | | 50+ | 高 | 示例: ``` Overall Risk Risk Score: 39 Risk Level: Medium ``` ## 可疑 API 检测 静态分析器会检查导入的 API,并按类别和严重程度对可疑函数进行分类。 示例类别包括: * 文件活动 * 注册表活动 * 进程活动 * 内存活动 * 网络活动 * 服务活动 * 反分析相关活动 JSON 输出示例: ``` { "api": "CreateFileW", "dll": "api-ms-win-core-file-l1-1-0.dll", "category": "File", "severity": "Medium" } ``` ## 可疑 DLL 摘要 分析器还会总结可疑 DLL 的使用情况。 TXT 输出示例: ``` Suspicious DLL Summary api-ms-win-core-file-l1-1-0.dll: 5 api-ms-win-core-registry-l1-1-0.dll: 3 api-ms-win-core-processthreads-l1-1-0.dll: 2 ``` JSON 输出示例: ``` { "suspiciousDlls": { "api-ms-win-core-file-l1-1-0.dll": 5, "api-ms-win-core-registry-l1-1-0.dll": 3, "api-ms-win-core-processthreads-l1-1-0.dll": 2 } } ``` ## SHA-256 和文件元数据 静态报告包含用于识别和比对的文件元数据。 TXT 报告包含: ``` Target File Size: 360448 bytes SHA-256: ab15a95de88ab0624307ae0e28e333756a2a522f650a0be78749901f7dc32ecf ``` JSON 报告包含: ``` { "targetFileSize": 360448, "sha256": "ab15a95de88ab0624307ae0e28e333756a2a522f650a0be78749901f7dc32ecf" } ``` 这有助于识别被分析的文件,即使文件名已更改。 ## 安全注意事项 * 静态分析不会执行目标文件。 * 动态分析会执行目标文件。 * 动态模式仅应在隔离的 Windows 虚拟机内使用。 * 请勿在您的主系统上运行未知或可疑的文件。 * 本项目仅用于教育和防御性研究目的。 * 这不能替代专业的恶意软件沙盒解决方案。 ## 当前局限性 * 动态分析是实验性的。 * 动态模式仅适用于 Windows。 * DLL 文件应使用静态模式进行分析。 * 动态模式适用于可执行文件。 * API 捕获范围仅限于已实现的 hook。 * 该工具不执行完整的行为沙盒测试。 * 该工具不能替代防病毒软件或 EDR 产品。 ## 路线图 未来可能的改进: * GUI 中的打开 TXT/JSON 报告按钮 * 将 GUI 结果导出为 PDF * 更多的可疑 API 类别 * 更详细的进程行为追踪 * 网络行为摘要 * 注册表行为摘要 * YARA 规则支持 * 哈希数据库查询 * 改进的动态分析稳定性 * 更好的 GUI 报告可视化 * GUI 构建的安装程序支持 ## 许可证 本项目基于 MIT 许可证发布。 ## AI 辅助声明 本项目在规划、代码组织、文档编写、调试、UI 迭代和技术说明方面得到了 AI 的辅助指导。
标签:Bash脚本, MITM代理, 可视化界面, 合规性检查