kryptbakar/Malware-Analysis-Triage-Pipeline
GitHub: kryptbakar/Malware-Analysis-Triage-Pipeline
一个自动化且可解释的 Windows PE 恶意软件分诊流水线,结合静态分析、机器学习、SHAP 归因与 ATT&CK 映射,将分析师级别的一小时研判压缩至数秒完成。
Stars: 0 | Forks: 0
# 🧪 恶意软件分析分诊流水线
**自动化、可解释的 Windows-PE 分诊。** 输入一个可疑文件;返回一份分析师级别的判定结果,该结果结合了静态分析、ML 分类器、MITRE ATT&CK 映射和 IOC 提取 —— 并提供 **SHAP 解释,使得每一个判定都有理可依**,而非主观断言。
它将一级分析师需要耗时一小时完成的工作,压缩成了一条可重复的、耗时仅几秒的流水线。
```
┌─────────────── SAFE (no execution) ───────────────┐
File ──▶ Ingest ──▶ Static ──▶ Features ──▶ ML + SHAP ──┐
hash/type PE parse EMBER-style verdict + │
dedupe entropy vectors reasons │
quarantine imports/ ▼
strings/YARA ATT&CK mapping
│
┌──── ISOLATED LAB (execution, v2) ────┐ ▼
File ──▶ CAPEv2 ──▶ behavior + netflow ─────────┴─▶ IOC extract + enrich ──▶ Report
(fake-internet sink, Suricata) (VT/AbuseIPDB, STIX 2.1) HTML/PDF/JSON + UI
```
开发初衷:SOC 经常被海量可疑文件淹没,人工分诊缓慢且不一致,而商业工具(VirusTotal、Joe Sandbox)又是不透明的黑盒。本项目是一个透明、自托管的分诊引擎,**ML 决策结果是可以被解释的**。
## 目前已实现功能
| 阶段 | 状态 | 备注 |
|---|---|---|
| **接收** | ✅ | SHA-256/MD5/imphash、magic-byte 类型识别、SQLite 去重、隔离存储 |
| **静态分析** | ✅ | pefile 解析、逐节区 Shannon 熵、import→capability 提示、字符串/IOC 提取、**YARA**、capa 封装 |
| **ML + SHAP** | ✅ | 基于 1049 维 EMBER 风格向量的 LightGBM 检测器 + 家族分类器;SHAP `TreeExplainer` 提供每次判定的影响因子 |
| **ATT&CK** | ✅ | capabilities/behaviours → techniques → **Navigator layer JSON** (热力图) |
| **IOC + STIX** | ✅ | 提取 → (可选) 丰富 (VT/MalwareBazaar/AbuseIPDB) → **STIX 2.1** bundle |
| **报告生成** | ✅ | Jinja2 → HTML + JSON (+ 通过 WeasyPrint 生成 PDF)、Navigator layer、STIX |
| **API / UI** | ✅ | FastAPI 服务 + 拖拽式 dashboard;可选 Celery/Redis 异步处理 |
| **动态分析** | 🧪 v2 | CAPEv2 提交 + 报告解析器;**默认关闭,仅在隔离实验环境中运行** |
29 个通过的测试 · 当缺少可选的原生工具 (yara/capa/weasyprint/ember) 时能够优雅降级。
## 快速开始
```
pip install -e . # core deps (pefile, lightgbm, shap, fastapi…)
# 可复现的安装替代方案:pip install -r requirements.lock -e . --no-deps
# 可选:pip install -e ".[full]" # yara-python, capa, weasyprint, celery…
python -m ml.train # train the bundled DEMO model (~4s, no dataset needed)
# 生成一个安全、无危害的测试样本
python tests/make_fixture_pe.py samples/suspicious.exe --malicious
# 对其进行分诊
python cli.py analyze samples/suspicious.exe --out out
```
```
🔴 MALICIOUS (score 100.0/100)
file : suspicious.exe [PE32 executable (Windows)]
sha256 : 947e3dfed19cefe86b59b190b5f6f89cc42b9a0bf676c395f8d6f9cd4011345e
ml : 93.1% malicious family=downloader (91%)
tags : downloader, packed, persistence-registry, process-injection
why :
▲ +1.29 2 imported API(s) enabling 'dynamic api resolution'
▲ +0.20 process-injection imports present
att&ck : T1106, T1027, T1055, T1105, T1112, T1134, T1547.001
iocs : 8 extracted (domain, imphash, ip, md5, mutex, registry, sha256, url)
📁 artifacts written to out/:
json / html / navigator.json / stix.json
```
### Web 仪表板
### 编程方式调用
```
from pipeline import triage
from report import write_all
report = triage("sample.exe") # TriageReport dataclass
print(report.verdict, report.score, report.ml.family)
write_all(report, "out/") # json + html + navigator + stix (+pdf)
```
## ML 子系统(核心差异化优势)
| 方面 | 选择 |
|---|---|
| **算法** | LightGBM GBDT — 二分类 (malicious/benign) + 多分类 (family) |
| **特征** | Byte & byte-entropy 直方图、header/section 统计数据、**命名的 per-capability API 计数** (可解释)、哈希化的 imports/DLLs/exports、字符串统计数据、数据目录 → 1049 维向量。详见 `ml/features/pe_features.py`。 |
| **生产数据** | **EMBER 2018** (1.1M PEs, 2381 features),通过 `ml/train_ember.py` 处理;当安装了 `ember` 包时,会自动切换至 EMBER 的 `PEFeatureExtractor` |
| **评估** | ROC-AUC、PR-AUC、**FPR @ 95% TPR** (SOC 关注误报率)、混淆矩阵、family macro-F1 |
| **可解释性** | SHAP `TreeExplainer` → 针对每次判定的正负影响因子 + 人类可读叙述 ("flagged: injection imports + high .text entropy") |
## 仓库结构
```
ingest/ hashing, filetype, dedupe, quarantine
static/ PE parse, entropy, strings, YARA, capa, capability inference
dynamic/ CAPEv2 submit + report parser (v2, isolated lab only)
ml/ features/ · train · predict · explain(SHAP) · eval · train_ember · model_card
attack/ technique registry, behaviour→technique mapping, Navigator layer
iocs/ extract, enrich (VT/AbuseIPDB/MalwareBazaar), STIX 2.1 export
report/ Jinja2 templates → html/pdf/json
api/ FastAPI service + dashboard + Celery scaffold
rules/ YARA rules (demo; drop signature-base here for real coverage)
lab/ Vagrantfile + isolation docs + SAFE_SAMPLES.md
core/ shared config, data models, logging, utils
tests/ pytest suite + safe PE fixture generator
```
## 安全与伦理 ⚠️
只有 `dynamic/` 阶段会执行样本,并且只在**隔离实验环境** (`lab/`) 中运行:仅主机网络、快照、伪互联网接收器 (INetSim/FakeNet-NG)、无共享/自动运行文件夹。**除非设置了 `CAPE_URL`,否则引爆 (Detonation) 是关闭的**。
其他所有阶段绝不会运行样本。
`samples/` 和 `quarantine/` 已被 git 忽略 —— **绝不提交任何活体恶意软件**。样本仅用于防御性研究和教育,且来源于公认的研究仓库。请从 EICAR 和生成的无活性测试夹具 (fixtures) 开始。参见 [`lab/SAFE_SAMPLES.md`](lab/SAFE_SAMPLES.md)。
## 路线图
- [x] **阶段 1** — 静态分析核心 → JSON
- [x] **阶段 2** — EMBER 风格的 LightGBM + SHAP + 评估 + 模型卡片
- [x] **阶段 3** — ATT&CK Navigator layer、STIX 导出、信息丰富
- [x] **阶段 4** — HTML/JSON 报告、FastAPI + dashboard
- [ ] **阶段 5** — CAPE 实验室引爆、behaviour→ATT&CK、样本分析报告
- [ ] 拓展目标 — 自动脱壳、Volatility3 内存取证、YARA 自动生成、对抗性 ML 鲁棒性
## 技术栈
Python · pefile/lief · yara-python · capa · CAPEv2 · INetSim/FakeNet-NG ·
Suricata · LightGBM · scikit-learn · SHAP · EMBER/BODMAS · stix2 ·
mitreattack-python · FastAPI · Celery/Redis · Jinja2/WeasyPrint ·
Vagrant/VirtualBox.
## 许可证
MIT — 详见 [`LICENSE`](LICENSE)。仅供研究和防御性使用。
标签:Apex, DAST, Metaprompt, 云安全监控, 可解释AI, 威胁情报, 开发者工具, 恶意软件分析, 搜索引擎查询, 机器学习, 自动化分诊, 逆向工具, 静态分析