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 地址批量处理, 威胁检测, 恶意软件分析, 机器学习, 逆向工具