ammarlouah/Dynamic-Malware-Analysis-using-AI-Agent-and-RL
GitHub: ammarlouah/Dynamic-Malware-Analysis-using-AI-Agent-and-RL
基于深度强化学习的动态恶意软件分析系统,通过DQN Agent智能调度沙箱分析流程,实现样本的自动化分类与证据提取。
Stars: 1 | Forks: 0
# 使用 AI Agent 和 Reinforcement Learning 进行动态恶意软件分析
[](https://www.python.org/)
[](https://pytorch.org/)
[](LICENSE)
## 目录
- [概述](#overview)
- [主要功能](#key-features)
- [系统架构](#system-architecture)
- [项目结构](#project-structure)
- [需求](#requirements)
- [安装](#installation)
- [自动安装](#automated-setup)
- [手动安装](#manual-setup)
- [使用](#usage)
- [快速开始](#quick-start)
- [分析单个文件](#analyzing-single-files)
- [批量分析](#batch-analysis)
- [使用 MALVADA](#using-malvada)
- [高级选项](#advanced-options)
- [训练](#training)
- [数据集](#dataset)
- [工作原理](#how-it-works)
- [结果](#results)
- [故障排除](#troubleshooting)
- [贡献](#contributing)
- [引用](#citation)
- [许可证](#license)
## 概述
本项目实现了一个 **AI 驱动的动态恶意软件分析系统**,该系统结合了:
- **CAPEv2 Sandbox**:业界标准的恶意软件分析沙箱,用于在隔离环境中执行可疑文件
- **MALVADA Framework**:用于 CAPE 报告的验证和标准化框架
- **Deep Reinforcement Learning**:经过训练的 DQN agent,能够做出智能的分析决策
- **Automated Pipeline**:从文件提交到分类的端到端自动化
该系统自主决定分析哪些特征,在分析深度与计算成本之间取得平衡,最终以高准确率将文件分类为 **MALWARE** 或 **BENIGN**。
## 主要功能
- **智能决策制定**:DQN agent 学习最优分析策略
- **渐进式分析**:从低成本检查开始,逐步深入调查
- **成本感知**:在保持准确性的同时最大限度地减少分析时间
- **多源特征**:从 CAPE 报告中提取 35+ 个特征
- **自动化工作流**:文件提交 → 分析 → 分类 → 报告
- **鲁棒性**:优雅地处理缺失字段和格式错误的报告
- **可扩展**:支持批量处理以分析多个样本
- **可配置**:广泛的 CLI 选项用于超时控制
- **经过验证**:使用 MALVADA 框架进行报告验证
## 系统架构
```
┌─────────────────┐
│ Suspicious │
│ File Sample │
└────────┬────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ CAPEv2 Sandbox │
│ ┌──────────────────────────────────────┐ │
│ │ Dynamic Execution in VM │ │
│ │ - Process monitoring │ │
│ │ - Memory analysis │ │
│ │ - Network traffic capture │ │
│ │ - File system monitoring │ │
│ └──────────────────────────────────────┘ │
└────────┬────────────────────────────────────────┘
│
▼
┌─────────────────┐ Optional ┌──────────────────┐
│ CAPE Report │ ───────────────────▶│ MALVADA │
│ (JSON) │ Validation │ Framework │
└────────┬────────┘ └──────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ AI Agent (DQN) │
│ ┌──────────────────────────────────────┐ │
│ │ Feature Extraction (35 features) │ │
│ │ - Basic: file type, size, processes │ │
│ │ - Memory: injection, anomalies │ │
│ │ - Filesystem: read/write/dropped │ │
│ │ - Network: DNS, HTTP, connections │ │
│ └──────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ Action Selection (7 actions) │ │
│ │ 0: CONTINUE │ │
│ │ 1: FOCUS_MEMORY │ │
│ │ 2: FOCUS_FILESYSTEM │ │
│ │ 3: FOCUS_NETWORK │ │
│ │ 4: MEMORY_DUMP │ │
│ │ 5: TERMINATE_MALWARE │ │
│ │ 6: TERMINATE_BENIGN │ │
│ └──────────────────────────────────────┘ │
└────────┬────────────────────────────────────────┘
│
▼
┌─────────────────┐
│ Classification │
│ MALWARE/BENIGN │
│ + Evidence │
└─────────────────┘
```
## 项目结构
```
.
├── AI_Agent/ # Main AI agent implementation
│ ├── ai_agent.py # Core AI agent logic
│ ├── dqn_agent.py # DQN model architecture
│ ├── cape_integration.py # CAPEv2 API integration
│ ├── malvada_integration.py # MALVADA integration
│ ├── run_analysis.py # Main CLI interface
│ ├── requirements.txt # Python dependencies
│ ├── models/ # Trained models
│ │ └── dqn_cape.pth # Pre-trained DQN model
│ ├── reports/ # Analysis output directory
│ └── utils/ # Utility scripts
│ ├── benign_simulator.py
│ ├── malware_simulator.py
│ └── build_test_files.py
│
├── CAPEv2/ # CAPEv2 sandbox (cloned repo)
│ ├── cuckoo.py # Main CAPE daemon
│ ├── conf/ # Configuration files
│ ├── storage/ # Analysis results storage
│ ├── utils/ # CAPE utilities
│ ├── requirements.txt # CAPE dependencies
│ └── cape-venv/ # CAPE virtual environment
│
├── MALVADA/ # MALVADA validation framework
│ ├── src/
│ │ └── malvada.py # Main MALVADA script
│ ├── requirements.txt # MALVADA dependencies
│ └── malvada_venv/ # MALVADA virtual environment
│
├── Training/ # Model training artifacts
│ ├── Model Training Notebook.ipynb # Jupyter notebook
│ └── dqn_cape.pth # Trained model
│
├── README.md # This file
└── setup.sh # Automated setup script
```
## 需求
### 系统需求
- **OS**: Linux (推荐 Ubuntu 18.04+, Debian 10+, Kali Linux)
- **RAM**: 最低 8GB (推荐 16GB+)
- **存储**: 50GB+ 可用空间
- **CPU**: 推荐多核处理器
- **虚拟化**: KVM/QEMU 或 VirtualBox (用于 CAPEv2 VMs)
### 软件需求
- **Python**: 3.8 或更高版本
- **pip**: 最新版本
- **virtualenv**: 用于环境隔离
- **Git**: 用于仓库管理
- **Bash**: 用于执行安装脚本
### 可选需求
- **CUDA**: 用于 GPU 加速 (PyTorch)
- **Docker**: 替代部署方法
## 安装
### 自动安装
设置整个项目的最简单方法:
```
# 1. 克隆仓库
git clone https://github.com/ammarlouah/dynamic-malware-analysis-using-ai-agent-and-rl.git
cd dynamic-malware-analysis-using-ai-agent-and-rl
# 2. 使设置脚本可执行
chmod +x setup.sh
# 3. 运行自动设置
./setup.sh
# 按照交互式提示进行:
# - Virtual environment 创建
# - Dependency 安装
# - CAPEv2 配置
# - MALVADA 设置
# - Model 下载
```
**注意**:安装脚本将会:
- 创建 3 个独立的虚拟环境 (AI_Agent/venv, CAPEv2/cape-venv, MALVADA/malvada_venv)
- 安装所有必需的依赖项
- 检查系统先决条件
- 提供配置指导
### 手动安装
如果您更喜欢手动安装或自动脚本失败:
#### 步骤 1:设置 AI Agent 环境
```
cd AI_Agent
# 创建 Virtual environment
python3 -m venv venv
source venv/bin/activate
# 安装 Dependencies
pip install --upgrade pip
pip install -r requirements.txt
# 下载训练好的 Model
# 将 dqn_cape.pth 放入 AI_Agent/models/
```
#### 步骤 2:设置 CAPEv2
```
cd ../CAPEv2
# 创建 Virtual environment
python3 -m venv cape-venv
source cape-venv/bin/activate
# 安装 CAPEv2 dependencies
pip install --upgrade pip
pip install -r requirements.txt
# 配置 CAPEv2
# 根据您的设置编辑 conf/cuckoo.conf
# 设置虚拟机 (参见 CAPEv2 文档)
```
**重要的 CAPEv2 配置**:
- 配置至少一个分析 VM (Windows 10)
- 设置网络路由以供 VM 访问互联网
- 配置 PostgreSQL 用于存储
- 参见:https://capev2.readthedocs.io/en/latest/
#### 步骤 3:设置 MALVADA
```
cd ../MALVADA
# 创建 Virtual environment
python3 -m venv malvada_venv
source malvada_venv/bin/activate
# 安装 Dependencies
pip install --upgrade pip
pip install -r requirements.txt
```
#### 步骤 4:验证安装
```
# 测试 AI Agent
cd ../AI_Agent
source venv/bin/activate
python -c "import torch; print(f'PyTorch: {torch.__version__}')"
python -c "from ai_agent import AIMalwareAgent; print('AI Agent OK')"
# 测试 CAPEv2
cd ../CAPEv2
source cape-venv/bin/activate
python cuckoo.py --help
# 测试 MALVADA
cd ../MALVADA
source malvada_venv/bin/activate
python src/malvada.py --help
```
## 使用
### 快速开始
```
# 1. 在一个终端中启动 CAPEv2
cd CAPEv2
source cape-venv/bin/activate
python3 cuckoo.py
# 2. 在另一个终端中,激活 AI Agent
cd AI_Agent
source venv/bin/activate
# 3. 分析文件
python run_analysis.py /path/to/suspicious.exe
```
### 分析单个文件
#### 基本分析
```
python run_analysis.py /path/to/malware.exe
```
#### 使用 MALVADA 验证
```
python run_analysis.py /path/to/malware.exe --malvada
```
#### 使用自定义超时
```
python run_analysis.py /path/to/malware.exe \
--cape-wait-timeout 600 \
--process-timeout 120 \
--malvada-timeout 180
```
#### 使用现有的 CAPE 报告
```
python run_analysis.py --report /path/to/report.json
```
### 批量分析
分析文件夹中的多个文件:
```
# 基础批量分析
python run_analysis.py /path/to/malware/folder --batch
# 使用 MALVADA 验证
python run_analysis.py /path/to/malware/folder --batch --malvada
# 结果保存至 batch_results.json
```
**支持的文件类型**:
- `.exe` - Windows 可执行文件
- `.dll` - 动态链接库
- `.ps1` - PowerShell 脚本
- `.vbs` - VBScript 文件
- `.bat` - 批处理文件
- `.py` - Python 脚本
- `.js` - JavaScript 文件
- `.jar` - Java 归档文件
### 使用 MALVADA
MALVADA 验证并标准化 CAPE 报告:
```
# 启用 MALVADA 处理
python run_analysis.py sample.exe --malvada
# 配置 MALVADA 超时
python run_analysis.py sample.exe --malvada --malvada-timeout 300
```
**MALVADA 的功能**:
1. 检测不正确/格式错误的报告
2. 删除重复的报告
3. 清理并匿名化敏感数据
4. 添加 AVClass 共识标签
5. 生成统计数据
### 高级选项
#### 列出最近的 CAPE 任务
```
python run_analysis.py --list-tasks
```
#### 跳过 CAPE 运行检查
```
python run_analysis.py sample.exe --skip-cape-check
```
#### 自定义 CAPE 目录
```
python run_analysis.py sample.exe --cape-dir /path/to/CAPEv2
```
#### 自定义模型路径
```
python run_analysis.py sample.exe --model /path/to/custom_model.pth
```
#### 所有超时选项
```
python run_analysis.py sample.exe \
--cape-cmd-timeout 30 \ # Commands in CAPE venv
--submit-timeout 120 \ # File submission
--cape-wait-timeout 600 \ # Analysis completion
--process-timeout 60 \ # Report generation
--getreport-timeout 120 \ # Report retrieval
--malvada-timeout 180 # MALVADA processing
```
## 训练
该模型使用 Deep Q-Learning 在 WinMET 数据集的一个子集上进行了训练。
### 数据集详情
- **来源**:WinMET (Windows Malware Execution Traces) Dataset
- **原始数据集**:[Zenodo Link](https://doi.org/10.5281/zenodo.12647555)
- **训练子集**:[Kaggle Dataset](https://www.kaggle.com/datasets/ammarlouah/winmet-windows-malware-execution-traces-dataset)
- 268 个良性样本
- 1,039 个恶意软件样本
- 总计:1,307 份 CAPE 报告
### 训练 Notebook
有关完整的训练详情,请参见 `Training/Model Training Notebook.ipynb`:
```
# 查看训练 Notebook
cd Training
jupyter notebook "Model Training Notebook.ipynb"
```
**训练过程**:
1. **数据加载**:CAPE JSON 报告的延迟加载
2. **特征提取**:35 维状态表示
3. **状态构建**:基于动作的渐进式特征可用性
4. **DQN 训练**:具有优先经验回放的 Dueling DQN 架构
5. **评估**:在留出测试集上进行验证
**模型架构**:
- **网络**:具有独立价值和优势流的 Dueling DQN
- **状态维度**:35 个特征
- **动作空间**:7 个动作(包括 2 个终止动作)
- **隐藏层**:256 → 128 → 输出
- **激活函数**:ReLU with Dropout (0.1)
## 数据集
### WinMET 数据集
**Windows Malware Execution Traces (WinMET)** 数据集包含来自 Windows 恶意软件的详细执行跟踪:
- **格式**:CAPE JSON 报告
- **大小**:约 10,000 个样本(原始数据集)
- **内容**:进程跟踪、API 调用、内存事件、网络活动、文件系统操作
- **验证**:所有报告均使用 MALVADA 框架进行验证
### 自定义子集
为了提高训练效率,创建了一个平衡的子集:
- **训练集**:80% (1,046 个样本)
- **验证集**:10% (130 个样本)
- **测试集**:10% (131 个样本)
**类别分布**:
- 恶意软件:79.5%
- 良性:20.5%
## 工作原理
### 1. 文件提交
```
# AI Agent 将文件提交给 CAPEv2
task_id = cape.submit_file("malware.exe")
```
### 2. 动态分析
- CAPEv2 在隔离的 Windows VM 中执行文件
- 监控行为 120-300 秒
- 捕获:
- 进程创建和终止
- API 调用和参数
- 内存操作和注入
- 网络连接 (DNS, HTTP, TCP)
- 文件系统更改(读、写、删除)
- 注册表修改
### 3. 报告生成
- CAPEv2 生成全面的 JSON 报告
- 可选通过 MALVADA 进行验证处理
### 4. 特征提取
AI Agent 跨类别提取 35 个特征:
**基本特征 (9)**:
- 文件大小、类型、CAPE 类型代码
- 进程数、线程数、进程树深度
- API 调用总数
**内存特征 (2)**:
- 增强事件计数
- 注入指示符
**文件系统特征 (6)**:
- 读取/写入/删除的文件
- 丢弃文件的数量和大小
**网络特征 (6)**:
- DNS 查询、HTTP 请求
- TCP/UDP 连接
- 联系的唯一域名/IP
**签名特征 (7)**:
- 类别中的签名匹配
- 严重级别签名
**复杂度特征 (5)**:
- 唯一 API 计数
- Mutex 操作
- 线程复杂度
- API 多样性指标
### 5. 智能决策循环
```
while not done:
action = agent.select_action(state, available_actions)
if action == Action.CONTINUE:
# Examine basic features
state = extract_basic_features()
elif action == Action.FOCUS_MEMORY:
# Deep dive into memory operations
state = extract_memory_features()
# ... other actions ...
elif action in TERMINAL_ACTIONS:
# Classify and terminate
done = True
```
### 6. 分类
- Agent 做出最终决定:**MALWARE** 或 **BENIGN**
- 提供置信度分数
- 列出证据和采取的行动
- 保存报告
## 结果
### 模型性能
**训练结果**(在 WinMET 子集上):
- **准确率**:~95%
- **精确率**:96%
- **召回率**:97%
- **F1-Score**:0.965
- **平均分析步骤**:每个样本 3-5 个动作
### 示例输出
```
============================================================
AI AGENT ANALYSIS
============================================================
Analysis Result:
Decision: MALWARE
Steps: 4
Confidence: 0.947
Evidence Found:
- injection_indicators: 23
- suspicious_signatures: 15
- network_connections: 8
- dropped_files: 3
Actions Taken:
Step 1: CONTINUE (basic analysis)
Step 2: FOCUS_MEMORY (memory inspection)
Step 3: FOCUS_NETWORK (network analysis)
Step 4: TERMINATE_MALWARE (classification)
============================================================
ANALYSIS COMPLETE
============================================================
File: suspicious_sample.exe
Result: MALWARE
Steps taken: 4
Report saved in: reports/
```
## 故障排除
### 常见问题
#### 1. CAPEv2 未运行
```
Error: Could not connect to CAPEv2
Solution:
cd CAPEv2
source cape-venv/bin/activate
python3 cuckoo.py
```
#### 2. 找不到模型
```
Error: Model file not found: models/dqn_cape.pth
Solution:
# 从 Training 文件夹或 Kaggle 下载
cp ../Training/dqn_cape.pth models/
```
#### 3. 虚拟环境问题
```
Error: No module named 'torch'
Solution:
# 确保您处于正确的 venv 中
source venv/bin/activate
pip install -r requirements.txt
```
#### 4. CAPE 分析超时
```
Error: Timeout waiting for analysis
Solution:
# 增加超时时间
python run_analysis.py sample.exe --cape-wait-timeout 900
```
#### 5. MALVADA 失败
```
Error: MALVADA processing failed
Solution:
# MALVADA 是可选的 - 系统将回退到 CAPE 报告
# 或修复 MALVADA venv:
cd ../MALVADA
source malvada_venv/bin/activate
pip install -r requirements.txt
```
#### 6. 权限被拒绝
```
Error: Permission denied
Solution:
chmod +x setup.sh
chmod +x AI_Agent/run_analysis.py
```
## 贡献
欢迎贡献!改进领域:
- [ ] 向训练集添加更多恶意软件家族
- [ ] 实现多类分类(恶意软件家族)
- [ ] 添加实时可视化仪表板
- [ ] 支持 Linux/Android 恶意软件
- [ ] Docker 容器化
- [ ] 用于远程分析的 REST API
- [ ] Web 界面
## 引用
### 本项目
如果您在研究中使用本项目,请引用:
```
@misc{malware_rl_analysis_2026,
author = {Ammar Louah},
title = {Dynamic Malware Analysis using AI Agent and Reinforcement Learning},
year = {2026},
publisher = {GitHub},
url = {}
}
```
### WinMET 数据集
```
@article{RADUCU2025_MALVADA,
title = {MALVADA: A framework for generating datasets of malware execution traces},
journal = {SoftwareX},
volume = {30},
year = {2025},
author = {Razvan Raducu and Alain Villagrasa-Labrador and Ricardo J. Rodríguez and Pedro Álvarez},
doi = {https://doi.org/10.1016/j.softx.2025.102082}
}
```
### CAPEv2
```
@misc{capev2,
author = {Kevin O'Reilly and the CAPE Community},
title = {CAPEv2: Malware Configuration And Payload Extraction},
year = {2024},
url = {https://github.com/kevoreilly/CAPEv2}
}
```
## 许可证
本项目采用 GNU General Public License v3.0 (GPLv3) 许可。
### 组件许可证
本仓库包含或集成了受多个许可证涵盖的代码:
- **本仓库 (AI_Agent/, Training/)**:GPLv3(本项目)
- **CAPEv2**:GPLv3 - https://github.com/kevoreilly/CAPEv2/blob/master/LICENSE
- **MALVADA**:GPLv3 - https://github.com/reverseame/MALVADA/blob/main/LICENSE
- **WinMET Dataset**:CC BY 4.0 - https://doi.org/10.5281/zenodo.12647555
如果您重新分发本项目(全部或部分),您必须遵守
GPLv3 关于源代码可用性和许可的要求。有关 GPLv3 的全文,请参见 [LICENSE](LICENSE)
文件。
## 相关链接
- **CAPEv2 文档**:https://capev2.readthedocs.io/
- **MALVADA 仓库**:https://github.com/reverseame/MALVADA
- **WinMET 数据集(原始)**:https://doi.org/10.5281/zenodo.12647555
- **WinMET 子集**:https://www.kaggle.com/datasets/ammarlouah/winmet-windows-malware-execution-traces-dataset
- **PyTorch 文档**:https://pytorch.org/docs/
## 作者
**Ammar Louah**
如有任何问题、议题或合作机会,请在仓库中提交 issue。
## 致谢
- **CAPEv2 团队**:感谢优秀的恶意分析沙箱
- **MALVADA 作者**:感谢数据集生成和验证框架
- **WinMET 数据集创建者**:感谢提供高质量的执行跟踪
- **PyTorch 团队**:感谢深度学习框架
- **开源社区**:感谢各种工具和库
**⭐ 如果您觉得这个项目有用,请考虑给它一个 Star! ⭐**
标签:AMSI绕过, Apex, CAPEv2, DQN, Homebrew安装, MALVADA, Python, PyTorch, 二进制分类, 人工智能, 凭据扫描, 动态恶意软件分析, 威胁检测, 强化学习, 恶意软件防御, 成本感知, 无后门, 机器学习, 样本分析, 沙箱技术, 深度学习, 用户模式Hook绕过, 结构化查询, 网络安全, 自动化分析, 自动化安全, 跨站脚本, 逆向工具, 隐私保护