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 进行动态恶意软件分析 [![Python](https://img.shields.io/badge/Python-3.8%2B-blue.svg)](https://www.python.org/) [![PyTorch](https://img.shields.io/badge/PyTorch-2.0%2B-orange.svg)](https://pytorch.org/) [![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](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绕过, 结构化查询, 网络安全, 自动化分析, 自动化安全, 跨站脚本, 逆向工具, 隐私保护