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 预览



## 主要功能
### 静态分析
静态分析在不执行目标文件的情况下检查 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代理, 可视化界面, 合规性检查