dhruvjuneja100/Static-_Malware_Analysis_using_AI
GitHub: dhruvjuneja100/Static-_Malware_Analysis_using_AI
基于熵融合与多模型机器学习的静态恶意软件检测系统,提供交互式Web仪表板用于PE文件实时分析。
Stars: 0 | Forks: 0
# 🛡️ 基于熵融合的静态恶意软件检测
**“基于熵融合的静态恶意软件检测与基于多模型机器学习的变异谱系分析”** 的生产就绪实现——具有用于实时 PE 分析的交互式 Web 仪表板。



## 🎯 性能结果
| 指标 | 目标值 |
|----------|---------|
| Accuracy | ~98.5% |
| AUC-ROC | ~0.998 |
| FPR | ~1.3% |
## 📦 项目结构
```
staticmalwareproject/
│
├── main.py # Full pipeline orchestration (10 steps)
├── train.py # Training-only entry point
├── retrain_optimized.py # Hyperparameter tuning & retraining
├── validate_model.py # Model validation & benchmarking
├── generate_visualizations.py # Plot generation utility
├── requirements.txt # All dependencies (ML + Backend)
├── .env.example # Environment variable template
├── .gitignore # Git exclusions
│
├── configs/
│ └── config.yaml # All hyperparameters & paths
│
├── data/
│ ├── ember_loader.py # EMBER 2018 dataset loading (JSONL)
│ ├── dataset.py # PyTorch DataLoader wrapper
│ └── vectorized/ # Cached numpy arrays (gitignored)
│
├── features/
│ ├── pe_parser.py # PE file parsing (pefile + lief)
│ ├── entropy.py # Shannon entropy + 32-dim fusion vector
│ └── feature_pipeline.py # EMBER(2381) + Entropy(32) = 2413-dim
│
├── models/
│ ├── random_forest.py # RF (500 trees, depth 20)
│ ├── xgboost_model.py # XGBoost (300, depth 8, lr 0.1)
│ ├── lightgbm_model.py # LightGBM (500, leaf-wise)
│ ├── mlp.py # PyTorch MLP (512→256→128)
│ └── entropy_fusion.py # 2-stage GBDT fusion (paper contribution)
│
├── training/
│ ├── trainer.py # Unified multi-model trainer
│ └── cross_validation.py # 5-fold stratified CV
│
├── evaluation/
│ ├── evaluator.py # Metrics + ROC curves + comparison tables
│ └── ablation.py # 4-config ablation study
│
├── explainability/
│ └── shap_analysis.py # TreeSHAP + DeepSHAP analysis
│
├── lineage/
│ └── mutation_graph.py # Cosine similarity lineage graph
│
├── utils/
│ ├── helpers.py # Seeding, logging, device detection
│ └── metrics.py # All 8 evaluation metrics
│
├── backend/ # Flask Web Application
│ ├── app.py # Flask app factory
│ ├── config.py # Backend configuration (env-based)
│ ├── routes/
│ │ ├── upload.py # File upload endpoint
│ │ ├── analysis.py # PE analysis + ML inference endpoint
│ │ ├── virustotal.py # VirusTotal integration
│ │ └── chatbot.py # Gemini-powered AI assistant
│ ├── services/
│ │ ├── pe_analyzer.py # PE parsing service
│ │ ├── model_inference.py # ML model inference service
│ │ ├── file_validator.py # Upload validation
│ │ ├── vt_client.py # VirusTotal API client
│ │ └── chatbot_engine.py # Gemini chatbot engine
│ ├── static/
│ │ ├── css/style.css # Dashboard styling
│ │ └── js/app.js # Frontend logic
│ ├── templates/
│ │ └── index.html # Dashboard HTML
│ └── uploads/ # Runtime file storage (gitignored)
│
└── outputs/ # All generated outputs (gitignored)
├── models/ # Saved model checkpoints
├── models_v2/ # Optimized model checkpoints
├── plots/ # ROC curves, SHAP plots, etc.
└── logs/ # Pipeline logs
```
## 🔧 系统要求
- **Python**: 3.9+
- **GPU**: NVIDIA RTX 3050/3060(可选,自动检测)
- **RAM**: 8–16 GB
- **OS**: Windows / Linux
## 🚀 设置说明
### 第 1 步:克隆仓库
```
git clone https://github.com/YOUR_USERNAME/staticmalwareproject.git
cd staticmalwareproject
```
### 第 2 步:创建虚拟环境
```
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
```
### 第 3 步:安装依赖
```
pip install -r requirements.txt
```
### 第 4 步:配置环境变量
```
# 复制模板并填入你的 API keys
cp .env.example .env
```
使用您的密钥编辑 `.env`:
- **VirusTotal API Key**:从 [virustotal.com](https://www.virustotal.com/gui/my-apikey) 获取
- **Gemini API Key**:从 [Google AI Studio](https://aistudio.google.com/apikey) 获取
### 第 5 步:下载 EMBER 2018 数据集
**选项 A:使用 ember 包**
```
pip install ember
python -c "import ember; ember.create_vectorized_features('data/ember2018')"
```
**选项 B:手动下载**
1. 从以下地址下载:https://github.com/elastic/ember
2. 将 EMBER 2018 数据集文件放置在 `data/` 目录中
**选项 C:使用合成数据(用于测试)**
如果 EMBER 不可用,pipeline 会自动生成合成数据以验证 pipeline 的端到端工作。
## ▶️ 运行 Pipeline
### 完整 Pipeline(全部 10 个步骤)
```
python main.py --config configs/config.yaml
```
### 快速测试(单一 seed,无 SHAP/谱系)
```
python main.py --single-seed --skip-shap --skip-lineage
```
### 仅训练
```
python train.py --config configs/config.yaml
python train.py --model xgboost --seed 42
python train.py --single-seed
```
### Web 仪表板
```
python -m backend.app
# 在浏览器中打开 http://127.0.0.1:5000
```
上传任何 PE 可执行文件(.exe、.dll、.sys)以获取:
- 使用 5 个 ML 模型进行实时威胁分析
- 节区熵可视化
- VirusTotal 多引擎扫描
- 用于分析问答的 AI 驱动聊天机器人
### CLI 参数
| 标志 | 描述 |
|------|-------------|
| `--config` | config YAML 的路径(默认:`configs/config.yaml`) |
| `--single-seed` | 仅运行 1 个 seed 而非 5 个 |
| `--seed` | 随机 seed(默认:42) |
| `--skip-ablation` | 跳过消融研究 |
| `--skip-shap` | 跳过 SHAP 可解释性分析 |
| `--skip-lineage` | 跳过变异谱系图 |
## 📊 输出
所有输出均保存到 `outputs/` 目录(已通过 .gitignore 忽略——通过运行 pipeline 重新生成):
```
outputs/
├── models/ # Saved model checkpoints
│ ├── random_forest_seed42.joblib
│ ├── xgboost_seed42.joblib
│ ├── lightgbm_seed42.joblib
│ ├── mlp_seed42.pth
│ ├── entropy_fusion_seed42.joblib
│ └── feature_pipeline.joblib
├── plots/
│ ├── roc_curves.png
│ ├── shap_summary_*.png
│ ├── shap_bar_*.png
│ ├── lineage_graph.png
│ └── comparison_table.txt
└── logs/
└── pipeline.log
```
## 🧠 架构细节
### 熵融合向量 (32 维)
```
v = [H(s1), ..., H(sN), PS, PSw, variance, skewness, ∇H1, ..., ∇HM, 0, ..., 0]
```
其中:
- `H(si)` = 节区 i 的 Shannon 熵:`H(s) = -Σ p(x) log₂ p(x)`
- `PS` = 加壳分数:`(1/n) Σ I(H(si) > 7.2)`
- `PSw` = 加权加壳分数:`Σ(size(si) × I(H(si) > 7.2)) / Σ(size(si))`
- `∇Hi` = 熵梯度:`H(si+1) - H(si)`
### 两阶段熵融合模型
```
Stage 1: GBDT(EMBER features) → P_stage1
Stage 2: GBDT(entropy features + P_stage1) → P_stage2
Final: w1 × P_stage1 + w2 × P_stage2
```
### 全部 5 个模型
| 模型 | 主要超参数 |
|-------|-------------------|
| Random Forest | 500 棵树,max_depth=20 |
| XGBoost | 300 个估计器,depth=8,lr=0.1,λ=1.0,α=0.1 |
| LightGBM | 500 个估计器,leaf-wise GBDT |
| MLP | 512→256→128,ReLU+BN+Dropout(0.3),Adam(lr=0.001) |
| Entropy-Fusion | 两阶段 GBDT,加权平均 |
## 📏 评估指标
所有 8 个指标均在 5 次独立运行中计算并取平均值:
1. **Accuracy**
2. **Precision**
3. **Recall**
4. **F1-Score**
5. **AUC-ROC**
6. **FPR**(假阳性率)
7. **FNR**(假阴性率)
8. **MCC**(Matthews 相关系数)
## 🌐 Web 仪表板功能
| 功能 | 描述 |
|---------|-------------|
| **概览** | 威胁分数仪表盘,节区熵图表,判定徽章 |
| **PE 结构** | 头部,节区表,导入表,安全标志 (ASLR/DEP) |
| **熵分析** | 各节区熵,加壳检测,熵分布 |
| **ML 模型** | 各模型判定,置信度雷达图,特征重要性 |
| **VirusTotal** | 70 多个引擎扫描结果,检测率,对比视图 |
| **字符串** | 可疑 API 指标,URL,IP 地址,关键字 |
| **AI 聊天机器人** | 基于 Gemini 的分析问答助手 |
## 📄 参考文献
基于:*“基于熵融合的静态恶意软件检测与基于多模型机器学习的变异谱系分析”*
## 📝 许可证
本项目仅供学术/研究目的使用。
标签:AMSI绕过, Apex, DNS 反向解析, EMBER数据集, Flask, PE文件分析, Python, PyTorch, Web仪表盘, 云安全监控, 人工智能, 凭据扫描, 分类模型, 变异系谱分析, 多模型融合, 威胁检测, 安全可视化, 恶意代码分析, 无后门, 机器学习, 深度学习, 熵分析, 特征工程, 用户模式Hook绕过, 端点安全, 网络安全, 补丁管理, 逆向工具, 配置文件, 隐私保护, 静态分析