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规则生成, 云安全监控, 云资产清单, 大语言模型, 威胁情报, 开发者工具, 恶意软件分析, 网络信息收集, 自动化攻击, 请求拦截, 逆向工具, 逆向工程, 速率限制处理, 静态分析