goswamiankit1302/Ai-mailware-Detection-System

GitHub: goswamiankit1302/Ai-mailware-Detection-System

一个使用随机森林算法对 PE 可执行文件进行特征提取与分类,以检测恶意软件的机器学习安全分析系统。

Stars: 0 | Forks: 0

# MalGuard AI — 恶意软件检测系统 ## 项目结构 ``` malguard/ ├── backend/ │ ├── app.py ← Flask API server │ ├── train_model.py ← ML training pipeline │ ├── requirements.txt ← Python dependencies │ ├── model/ │ │ ├── malguard_model.pkl (generated after training) │ │ └── scaler.pkl (generated after training) │ └── static/ │ └── graphs/ │ ├── confusion_matrix.png │ ├── roc_curve.png │ ├── feature_importance.png │ └── accuracy_bar.png └── frontend/ └── index.html ← Full dashboard UI ``` ## 设置(分步说明) ### 1. 安装 Python 依赖 ``` cd backend pip install -r requirements.txt ``` ### 2. 训练模型 ``` # 选项 A:使用合成 demo data(无需 dataset) python train_model.py # 选项 B:使用你自己的 CSV dataset python train_model.py --data path/to/your_dataset.csv # CSV 必须包含 feature columns + 一个 "label" column(0=safe,1=malware) ``` 这将: - 训练一个随机森林分类器 - 将模型保存到 `model/malguard_model.pkl` - 将评估图表保存到 `static/graphs/` - 打印准确率、精确率、召回率和 F1-score ### 3. 启动后端 ``` python app.py # Server 运行于 http://localhost:5000 ``` ### 4. 打开前端 只需在浏览器中打开 `frontend/index.html` 即可。 前端不需要服务器——它会自动连接到 Flask 后端。 ## API Endpoints | 方法 | Endpoint | 描述 | |--------|---------------|--------------------------| | GET | `/health` | 检查模型是否已加载 | | POST | `/scan` | 扫描上传的文件 | | GET | `/model-info` | 获取模型详细信息 | ### 扫描请求示例 ``` curl -X POST http://localhost:5000/scan \ -F "file=@/path/to/suspicious.exe" ``` ### 响应示例 ``` { "filename": "suspicious.exe", "verdict": "MALWARE", "is_malware": true, "confidence": 94.7, "file_size_bytes": 512000, "sha256": "a3f2...", "features": { "byte_entropy": 7.21, "pe_imports": 142, "file_size": 512000, "section_count": 7, "api_calls": 6, "string_count": 312, "header_flags": 1 }, "scanned_at": "2025-01-01T10:00:00" } ``` ## 提取的特征 | 特征 | 描述 | 重要性原因 | |----------------|--------------------------------------------|-----------------------------------------| | `byte_entropy` | 文件字节的香农熵 (0–8) | 加壳/加密的恶意软件具有很高的熵 | | `pe_imports` | 导入函数的数量 | 恶意软件会导入许多可疑的 API | | `file_size` | 文件大小(字节) | 异常的文件大小十分可疑 | | `section_count`| PE 区段数量 | 额外的区段通常意味着代码注入 | | `api_calls` | 发现的可疑 API 模式 | 例如 CreateProcess, VirtualAlloc | | `string_count` | 可打印的 ASCII 字符串(最少 4 个字符) | 恶意软件通常包含较少的可读字符串 | | `header_flags` | 是否存在有效的 MZ/PE 头 (1/0) | 确认其为可执行文件 | ## 推荐的数据集 1. **EMBER Dataset** — https://github.com/elastic/ember - 包含从 100 多万个样本中预先提取的 PE 特征 - 最适合本项目 2. **Kaggle Microsoft Malware Classification** - https://www.kaggle.com/c/malware-classification 3. **VirusShare** — https://virusshare.com(需要注册) ## 项目答辩要点 - “该系统基于行为模式而非特征签名来检测以前未知的(zero-day)恶意软件。” - “字节熵可以检测到传统杀毒软件遗漏的加壳/加密恶意软件。” - “选择随机森林是因为其具有可解释性且能抵抗过拟合。” - “特征重要性显示了哪些属性最能区分恶意软件和良性文件。” ## 模型性能(合成演示数据) | 指标 | 分数 | |-----------|--------| | Accuracy | 98.4% | | Precision | 97.1% | | Recall | 98.0% | | F1-Score | 97.5% | | ROC-AUC | 0.997 |
标签:Apex, Flask, Web仪表盘, 后端开发, 机器学习, 逆向工具, 随机森林