duyhoang05/windows-malware-api-call-analysis
GitHub: duyhoang05/windows-malware-api-call-analysis
基于Frida动态插桩与机器学习的Windows恶意软件行为分析工具,通过实时监控API调用实现自动化检测、分类与风险评分。
Stars: 0 | Forks: 0
# 🛡️ 恶意软件 API 分析器
**用于 Windows 恶意软件分析的现代 GUI 应用程序**
这是一款动态插桩工具,它使用 Frida 监控 Windows API 调用,检测恶意行为模式,并使用 Machine Learning 进行分类。
## ✨ 功能
### 🎯 核心能力
- **动态 API Hooking** - 使用 Frida 实时监控 100 多个 Windows API
- **行为检测** - 识别恶意模式(注入、镂空、勒索软件等)
- **Machine Learning** - 使用随机森林分类器预测恶意软件/正常软件
- **MITRE ATT&CK 映射** - 自动化技术识别
- **IOC 提取** - 提取域名、IP、文件、注册表项
- **现代 GUI** - 美观、用户友好的界面
### 🔍 检测类别
- 进程注入(经典注入、APC、进程镂空)
- 文件操作与勒索软件模式
- 注册表持久化机制
- 网络通信与 C2 信标
- 凭据转储(LSASS 访问)
- 反分析与规避技术
- 服务创建与权限提升
## 🚀 快速开始
### 方法 1:双击运行(最简单)
1. **双击 `RUN_ANALYZER.bat`**
2. GUI 将自动启动
3. 选择您的恶意软件样本
4. 点击“开始分析”
### 方法 2:直接使用 Python
```
# 启动现代 GUI
python gui.py
# 或使用 command line
python main.py sample.exe -t 30
```
## 📦 安装
### 前置条件
- **Windows 10/11**(Windows API 分析必需)
- 已安装并添加到 PATH 的 **Python 3.8+**
- **管理员权限**(用于 Frida 插桩)
### 安装依赖
```
pip install -r requirements.txt
```
或手动安装:
```
pip install frida frida-tools scikit-learn joblib pandas
```
## 📖 使用指南
### GUI 应用程序
1. **选择目标**
- 点击“浏览”选择可执行文件(.exe 或 .dll)
- 或直接输入路径
2. **配置设置**
- 设置超时时间(5-300 秒)
- 启用/禁用 Machine Learning 预测
3. **运行分析**
- 点击“▶️ 开始分析”
- 观察实时控制台输出
- 查看实时更新的统计数据
4. **查看结果**
- 点击“📄 查看报告”以查看详细分析
- 点击“📊 打开日志”以访问原始的 CSV/JSONL 日志
### 命令行界面
```
# 基本用法
python main.py malware.exe -t 30
# 禁用 ML
python main.py malware.exe -t 60 --no-ml
# 更长时间的监控
python main.py malware.exe -t 120
```
## 📊 输出文件
分析将在各自的文件夹中生成多个输出文件:
### `logs/`
- **api_log.csv** - CSV 格式的 API 调用序列
- **api_log.jsonl** - JSONL 格式的详细事件
### `reports/`
- **report.txt** - 包含以下内容的综合分析报告:
- 执行摘要
- API 调用序列
- 检测到的行为链
- 可疑指标
- IOC 提取
- MITRE ATT&CK 映射
- 风险评分和分类
- ML 预测结果
### `models/`
- **api_rf_model.pkl** - 训练好的随机森林模型
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────────────┐
│ GUI Layer │
│ (gui.py) │
└───────────────────────────────┬─────────────────────────────┘
│
┌───────────────────────────────▼─────────────────────────────┐
│ Orchestration Layer │
│ (main.py) │
└──────┬────────────────────────┬─────────────────────────────┘
│ │
┌──────▼──────────┐ ┌─────────▼────────────┐
│ Frida Hooking │ │ Analyzer Engine │
│ (hook.js) │ │ (analyzer.py) │
│ │ │ │
│ • 100+ APIs │ │ • Behavior chains │
│ • Native APIs │ │ • Indicators │
│ • Child tracking│ │ • IOC extraction │
└─────────────────┘ │ • MITRE mapping │
│ • Scoring │
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ ML Module │
│ (ml/predict_ml.py) │
│ │
│ • Random Forest │
│ • Feature extraction │
│ • Reliability check │
└──────────────────────┘
```
## 🎨 GUI 功能
### 现代设计
- 带有强调色的**深色主题**
- **实时统计数据** - 事件、API、风险评分、风险等级
- **颜色编码输出** - 信息、成功、警告、错误、API 调用
- **进度指示器** - 动画进度条
- **自定义按钮** - 现代悬停效果
### 实时监控
- 带有语法高亮的实时控制台输出
- 统计数据每秒更新
- 带有颜色编码的风险评分可视化:
- 🟢 低危 (0-39):绿色
- 🟡 可疑 (40-49):黄色
- 🟠 中危 (50-79):橙色
- 🔴 高危 (80+):红色
## 🔧 配置
### 超时设置
- **短 (5-15s)**:快速分流
- **中 (30-60s)**:标准分析
- **长 (120-300s)**:深度行为分析
### Machine Learning
- 启用以进行自动分类
- 需要在 `models/` 目录中提供训练好的模型
- 提供置信度分数和可靠性评估
## 🛡️ 安全与最佳实践
### ⚠️ 重要警告
1. **在隔离的虚拟机/沙箱中运行** - 切勿在主机系统上分析恶意软件
2. **分析前打快照** - 启用虚拟机快照以便还原更改
3. **禁用网络**(可选) - 防止恶意软件连接 C2 服务器
4. **管理员权限** - Frida 插桩所必需
5. **防病毒软件排除项** - 可能需要将分析器文件夹加入白名单
### 推荐设置
```
Host Machine (Safe)
└─> Virtual Machine (Isolated)
├─> Windows 10/11
├─> Python + Dependencies
├─> Malware Analyzer
└─> Malware Samples
```
## 📚 训练 ML 模型
如果您想训练自己的模型:
```
# 下载 dataset (Kaggle IEEE API Call Sequence Dataset)
# 放入 dataset/ 文件夹
# 训练 model
python ml/train_ml_kaggle.py \
--csv dataset/dynamic_api_call_sequence_per_malware_100_0_306.csv \
--model models/api_rf_model.pkl \
--malware-ratio 3
```
## 🐛 故障排除
### 常见问题
**1. “未安装 Frida”**
```
pip install frida frida-tools
```
**2. “拒绝访问”错误**
```
# 以管理员身份运行
Right-click → Run as Administrator
```
**3. “未找到模型”**
```
# 训练或下载 model
python ml/train_ml_kaggle.py --csv dataset/...
```
**4. “未找到目标”**
- 检查文件路径是否正确
- 使用绝对路径或将样本放在 `samples/` 文件夹中
**5. GUI 无法启动**
```
# 检查 Python 版本
python --version # Should be 3.8+
# 检查 tkinter
python -c "import tkinter"
```
## 📈 理解结果
### 风险等级
- **低危 (0-24)**:极少可疑行为
- **可疑 (25-39)**:存在一些令人担忧的模式
- **中危 (40-79)**:存在多个可疑指标
- **高危 (80+)**:确凿的恶意软件证据
### MITRE ATT&CK 技术
检测到的常见技术:
- **T1055** - 进程注入
- **T1105** - 入口工具转移(下载)
- **T1486** - 为影响而加密数据(勒索软件)
- **T1547.001** - 注册表 Run 键(持久化)
- **T1543.003** - Windows 服务(持久化)
- **T1497** - 虚拟化/沙箱规避
## 📝 项目结构
```
malware_api_analyzer/
├── gui.py # Modern GUI application
├── RUN_ANALYZER.bat # One-click launcher ⭐ NEW
├── requirements.txt # Dependencies ⭐ NEW
├── main.py # CLI entry point
├── analyzer.py # Core analysis engine
├── hook.js # Frida JavaScript hooks
├── rules.py # Detection rules
├── ml/ # Machine Learning module
│ ├── train_ml_kaggle.py
│ ├── predict_ml.py
│ ├── ml_features.py
│ └── api_mapping.py
├── dataset/ # Training datasets
├── samples/ # Test malware samples
├── logs/ # Analysis logs
├── reports/ # Generated reports
└── models/ # ML models
```
## 📄 许可证
这是一个用于恶意软件分析研究和教育的学术项目。
**⚠️ 仅用于:**
- 安全研究
- 恶意软件分析培训
- 学术目的
- 授权的渗透测试
**❌ 请勿用于:**
- 恶意目的
- 未经授权的系统访问
- 违反法律法规
## 🎓 学术背景
**项目类型**:期末项目 / 毕业设计
**主题**:恶意软件分析与动态插桩
**技术栈**:Python、Frida、Machine Learning、Windows APIs
**主要学习成果**:
- Windows API 内部原理
- 动态插桩技术
- 恶意软件行为分析
- Machine Learning 在网络安全中的应用
- 软件工程最佳实践
## 📞 支持
如有问题或疑问:
1. 查看上方的故障排除部分
2. 检查控制台输出中的错误信息
3. 查看 `logs/` 文件夹中的日志
4. 确保以管理员身份运行
## 🌟 致谢
- **Frida** - 动态插桩框架
- **scikit-learn** - Machine Learning 库
- **Kaggle IEEE Dataset** - ML 模型的训练数据
**版本**:2.0(现代版)
**最后更新**:2026-06-06
**状态**:生产就绪 ✅
为网络安全教育倾注 ❤️ 制作
标签:AMSI绕过, Apex, API Hooking, DAST, DNS 反向解析, Docker支持, Frida, IP 地址批量处理, 威胁检测, 恶意软件分析, 机器学习, 逆向工具