UMESHJV/malware-analysis-platform

GitHub: UMESHJV/malware-analysis-platform

一个基于 Flask 和 MongoDB 构建的全栈恶意软件分析平台,整合 VirusTotal、Cuckoo 沙箱和 ML 分类实现文件自动化检测与风险评分。

Stars: 0 | Forks: 0

# MalwareLab — 恶意软件分析平台 一个使用 **Flask**、**MongoDB**、**HTML/CSS/JavaScript** 构建的全栈恶意软件分析 Web 应用程序。 ## 功能 | 阶段 | 功能描述 | |---|---| | 用户登录 / 注册 | 无 JWT 的 session 认证,使用 bcrypt 进行密码哈希处理 | | 文件上传 | 支持拖拽上传;限制 50 MB;扩展名白名单过滤 | | SHA256 生成 | 在服务端计算以用于去重 | | VirusTotal 检测 | 通过 VT API v3 进行哈希查询(支持 70+ AV 引擎) | | Cuckoo 沙箱 | 将文件提交至 Cuckoo REST API;轮询行为报告 | | 特征提取 | 熵值、PE header、字符串提取、UPX 检测 | | ML 分类 | 启发式模型(可放入 sklearn 模型进行替换) | | 风险评分 | 加权综合评分:VT (40%) + Cuckoo (35%) + ML (25%) | | PDF 报告 | 基于 ReportLab 生成的下载报告 | | 邮件告警 | 检测到高风险时触发 SMTP 告警 | | Dashboard | 使用 Chart.js 展示趋势与分布图表 | | 管理后台 | 用户管理 + 完整的分析日志 | ## 配置 ### 1. 前置条件 - Python 3.10+ - 本地运行 MongoDB (`mongod`) - (可选)Cuckoo Sandbox 实例 - (可选)VirusTotal API key(免费版 = 500 次请求/天) ### 2. 安装依赖 ``` cd malware-analysis python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt ``` ### 3. 配置环境 ``` cp .env.example .env # 使用你的 API keys 和 SMTP 凭证编辑 .env ``` ### 4. 运行 ``` python app.py ``` 访问 **http://localhost:5000** 默认管理员登录信息: - Email: `admin@malwarelab.io` - Password: `Admin@1234` ## 项目结构 ``` malware-analysis/ ├── app.py # Flask app + all routes ├── requirements.txt ├── .env.example ├── templates/ │ ├── base.html # Nav + layout shell │ ├── login.html │ ├── register.html │ ├── dashboard.html # Stats + Chart.js │ ├── upload.html # Upload + live pipeline progress │ ├── analysis.html # Full analysis report │ └── admin.html # Admin monitoring ├── static/ │ ├── css/main.css # Dark terminal design system │ └── js/main.js # Toast notifications + utils ├── utils/ │ ├── virustotal.py # VT API v3 hash lookup │ ├── cuckoo.py # Cuckoo submit + poll report │ ├── features.py # Entropy, strings, PE detection │ ├── ml_model.py # Heuristic classifier │ ├── risk_score.py # Composite risk scoring │ ├── pdf_report.py # ReportLab PDF generation │ └── email_alert.py # SMTP alert emails ├── uploads/ # Uploaded files (gitignored) └── reports/ # Generated PDFs (gitignored) ``` ## 替换启发式 ML 模型 将 `utils/ml_model.py` 替换为真实的 sklearn pipeline: ``` import joblib model = joblib.load('models/malware_classifier.pkl') def classify_file(features: dict) -> dict: X = [[features['entropy'], features['file_size'], int(features['is_pe']), ...]] label = model.predict(X)[0] proba = model.predict_proba(X)[0] return {'label': label, 'confidence': float(max(proba)), 'probabilities': {...}} ``` ## 生产环境清单 - [ ] 设置 `FLASK_ENV=production` 并配置强 `SECRET_KEY` - [ ] 在 Gunicorn 后运行:`gunicorn -w 4 app:app` - [ ] 使用 Nginx 作为反向代理 - [ ] 将分析任务迁移至 Celery 任务队列(使用 Redis 作为 broker) - [ ] 将上传文件存储在 S3 / MinIO,而不是本地磁盘 - [ ] 启用 MongoDB 认证与 TLS
标签:Apex, DAST, Flask, MongoDB, 后端开发, 安全沙箱, 恶意软件分析, 数据可视化, 机器学习, 逆向工具