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, 后端开发, 安全沙箱, 恶意软件分析, 数据可视化, 机器学习, 逆向工具