NuclearOX/ai-malware-detection-pipeline
GitHub: NuclearOX/ai-malware-detection-pipeline
一个由三智能体AI流水线驱动的恶意软件静态分析平台,整合了传统逆向工具链与多模型推理,实现从二进制上传到威胁情报报告的自动化全流程。
Stars: 1 | Forks: 0
# AI 恶意软件检测流水线
一个由 3-agent AI 流水线驱动的端到端静态恶意软件分析平台。上传一个二进制文件,即可获得自动化的 PE 分析、MITRE ATT&CK 映射、YARA/Sigma 规则生成、Ghidra 反编译以及关键性评估——所有这些都能在一个界面中完成。
## 架构
```
Frontend (React + Vite)
│
▼
Backend (FastAPI)
│
├── pefile → PE structure, imports, sections, entropy
├── CAPA → Capability detection
├── FLOSS → String deobfuscation
├── Ghidra → Deep decompilation (optional, via pyhidra)
├── VirusTotal API → Hash reputation (70+ AV engines)
│
└── Groq API (3-agent pipeline)
├── Agent 1: Triage (llama-4-scout-17b)
├── Agent 2: Threat Intel (llama-3.3-70b)
└── Agent 3: Critic (qwen3-32b)
```
**3-Agent 流水线(在线模式):**
| Agent | 模型 | 角色 |
|-------|-------|------|
| Triage | `meta-llama/llama-4-scout-17b-16e-instruct` | PE 分类,功能提取 |
| Threat Intel | `llama-3.3-70b-versatile` | MITRE 映射,YARA/Sigma 生成 |
| Critic | `qwen/qwen3-32b` | 关键性评估,置信度得分,行为时间线 |
## 环境要求
- [Docker](https://www.docker.com/) 和 Docker Compose
- 一个 [Groq API key](https://console.groq.com/) — 免费,无需信用卡
- 一个 [MalwareBazaar API key](https://bazaar.abuse.ch/) — 免费
- 一个 [VirusTotal API key](https://www.virustotal.com) — 免费(4 次请求/分钟,500 次/天)
- 可选:[Ollama](https://ollama.com/) 用于本地模型推理
## 配置说明
### 1. 克隆代码库
```
git clone
cd ai-malware-detection-pipeline
```
### 2. 配置环境变量
在 backend/ 目录下创建一个 .env 文件,使用 .env.example 作为参考:
```
cp backend/.env.example backend/.env
```
编辑 `backend/.env` 并填入你的 API key:
```
GROQ_API_KEY=your_groq_api_key_here
MALWAREBAZAAR_API_KEY=your_malwarebazaar_api_key_here
VIRUSTOTAL_API_KEY=your_virustotal_api_key_here
```
| Key | 获取地址 | 是否必需 |
|-----|----------------|----------|
| `GROQ_API_KEY` | [console.groq.com](https://console.groq.com/) | 是(在线模式) |
| `MALWAREBAZAAR_API_KEY` | [bazaar.abuse.ch](https://bazaar.abuse.ch/) | 是(威胁情报源) |
| `VIRUSTOTAL_API_KEY` | [virustotal.com](https://www.virustotal.com) | 是(VT 查询) |
### 3. 启动完整技术栈
首次运行时,需要构建 Docker 镜像:
```
docker compose up --build
```
后续运行时,只需启动容器(包含后端和前端):
```
docker compose up
```
后端和前端都会自动启动:
- 前端:`http://localhost:5173`
- 后端 API:`http://localhost:8000`
## 使用说明
### 分析样本
1. 转到 **[ ANALYSIS ]** 标签页
2. 选择 **⚡ Online (Groq)** 或 **💻 Local (Ollama)**
3. 可选择启用 **🔬 Ghidra 深度分析**
4. 上传一个二进制文件(`.exe`、`.dll`、`.bin` 等)
5. 点击 **Start Analysis**
流水线按顺序执行:
| 步骤 | 工具 | 输出 |
|------|------|--------|
| 1 | pefile | PE 头、节区、导入表、熵值 |
| 2 | CAPA | 功能性能力 |
| 3 | FLOSS | 去混淆字符串 |
| 4 | Ghidra | 反编译的可疑函数(如果启用) |
| 5 | VirusTotal | 在 70 多个 AV 引擎中的哈希信誉 |
| 6 | Agent 1 / Triage | 恶意软件家族分类 |
| 7 | Agent 2 / Threat Intel | MITRE ATT&CK,YARA 规则,Sigma 规则 |
| 8 | Agent 3 / Critic | 置信度得分,行为时间线,关键性评估 |
### Debug 模式
启用 **🔧 Static Analysis Only** 可跳过 AI 流水线,仅显示静态分析结果(PE、CAPA、FLOSS、VT、Ghidra)。这适用于在不消耗 API token 的情况下测试工具。
### 威胁流
**[ THREAT STREAM ]** 标签页实时显示来自 MalwareBazaar 的最新样本。点击 **WEB** 可在 MalwareBazaar 中打开某个样本,手动下载它,然后在 Analysis 标签页中上传。
### 本地模式(Ollama)
确保 Ollama 正在本地运行,然后拉取一个模型:
```
ollama pull gemma3:1b # lightweight, fast
ollama pull llama3.2 # better quality
ollama pull mistral # good balance
```
选择 **💻 Local (Ollama)**,输入模型名称,并运行分析。
## 导出
分析完成后,使用 **JSON** 和 **PDF** 按钮导出完整报告:
- **JSON** — 包含所有分析字段的结构化数据,适合进行后续处理
- **PDF** — 格式化的报告,可用于归档或展示
## 项目结构
```
.
├── backend/
│ ├── ai/
│ │ └── ai_client.py # 3-agent Groq pipeline + Ollama support
│ ├── analyzers/
│ │ ├── pe_analyzer.py # PE parsing, CAPA, FLOSS, Ghidra, entropy
│ │ └── extract_suspicious_functions.py # (legacy, unused)
│ ├── api/
│ │ ├── routes.py # FastAPI endpoints
│ │ ├── malwarebazaar.py # MalwareBazaar API client
│ │ └── virustotal.py # VirusTotal API client
│ ├── main.py # FastAPI app entry point
│ ├── Dockerfile # Ubuntu 24.04 + Java 21 + CAPA + FLOSS + Ghidra
│ ├── requirements.txt
│ ├── .env # Your API keys (not committed)
│ └── .env.example # Template
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── AnalysisDashboard.tsx
│ │ │ └── ThreatStream.tsx
│ │ ├── services/
│ │ │ └── aiService.ts
│ │ ├── types.ts
│ │ └── App.tsx
│ ├── index.html
│ ├── package.json
│ └── vite.config.ts
├── docker-compose.yml
└── README.md
```
## 注意事项
- **建议不要在生产机器上上传真实的恶意软件。** 请使用隔离的 VM(例如 Kali Linux)。
- 所有上传的文件在分析完成后都会自动从服务器中删除。
- 由于完整的反汇编和反编译过程,每个二进制文件的 Ghidra 分析大约需要 3 分钟。
- 在线模式会向 Groq 发出 3 次顺序 API 调用 —— AI 的总耗时通常为 30–90 秒。
- AI 流水线在处理合法的二进制文件时可能会产生误报或幻觉。请务必查看 **LLM Critical Self-Evaluation** 部分。
- Groq 免费层级限制:30 RPM,TPM 限制视模型而定在 6K–30K 之间。速率限制错误会自动重试(最多 3 次,并带有退避机制)。
## 文档
- [LLM 关键性评估](docs/llm_limitations.md) — 限制、幻觉风险及缓解策略
标签:AI风险缓解, ATT&CK映射, DAST, DInvoke, DLL 劫持, DNS 反向解析, Sysdig, YARA规则生成, 云安全监控, 云资产清单, 大语言模型, 威胁情报, 开发者工具, 恶意软件分析, 网络信息收集, 自动化攻击, 请求拦截, 逆向工具, 逆向工程, 速率限制处理, 静态分析