拖入任何文件、URL、IP、域名或图像。SecFlow 将其路由至专用分析器,借助 AI 推理发现结果,并自动生成包含 YARA 规则、SIGMA 规则以及可导出 PDF 的专业安全报告。
SecFlow 是一款开源自动化威胁分析流水线,专为安全分析师、SOC 团队和研究人员打造。相比于手动运行零散工具并关联结果,SecFlow 能够:
User Input (file / URL / IP / domain / image) │ ▼ ┌────────────────────────────────┐ │ Input Classifier │ file + python-magic → deterministic rule │ (Rule-based, pass 1 only) │ unknown type? → Groq AI fallback └───────────────┬────────────────┘ │ first analyzer selected ▼ ┌────────────────────────────────────────────────────────┐ │ Analyzer Loop (N = 3 / 4 / 5 passes) │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Run Analyzer (HTTP → Docker microservice) │ │ │ │ Malware · Steg · Recon · Web · Macro │ │ │ └───────────────┬──────────────────────────────────┘ │ │ │ findings + raw_output │ │ ┌───────────────▼──────────────────────────────────┐ │ │ │ AI Routing Engine (Groq qwen/qwen3-32b) │ │ │ │ IOC extraction → next_tool + target │ │ │ └───────────────┬──────────────────────────────────┘ │ │ │ │ │ ┌───────┴──────────────────┐ │ │ next tool null │ │ │ │ │ │ │ Download HTTP payloads │ │ │ from raw_output → re-analyze │ │ └──────────────── repeat ────────────────────┘│ └─────────────────┬──────────────────────────────────────┘ │ ▼ ┌────────────────────────────────┐ │ Findings Store │ All passes · all findings accumulated └───────────────┬────────────────┘ │ ▼ ┌────────────────────────────────────────────┐ │ Threat Intelligence Engine │ │ (Groq llama-3.3-70b-versatile) │ │ ├─ Threat Summary + MITRE ATT&CK TTPs │ │ ├─ YARA Detection Rules (2–5 rules) │ │ └─ SIGMA SIEM Rules (2–4 rules) │ └───────────────┬────────────────────────────┘ │ ▼ ┌────────────────────────────────┐ │ PWNDoc HTML Report │ Groq summary → browser-rendered HTML │ │ One-click Export PDF button └────────────────────────────────┘
---
## 快速开始
### 前提条件
- Docker + Docker Compose
- Groq 和 VirusTotal 的 API 密钥(免费套餐可用)
### 1. 克隆仓库```bash
git clone https://github.com/aradhyacp/SecFlow.git
cd SecFlow/backend
cp .env.example .env
编辑 `.env` 文件并填入你的密钥:```env
# Required
GROQ_API_KEY=your_groq_api_key_here
VIRUSTOTAL_API_KEY=your_vt_api_key_here
# Optional — unlock additional OSINT capabilities
NUMVERIFY_API_KEY=your_numverify_key # Phone number lookups
THREATFOX_API_KEY=your_threatfox_key # Higher ThreatFox rate limits
ipAPI_KEY=your_ipapi_key # Higher ip-api.com rate limits
# Pipeline control
MAX_PASSES=3 # 3 | 4 | 5
docker compose up -d
这会启动6个容器:
| 服务 | 端口 | 角色 |
|---|---|---|
| `orchestrator` | `5000` | 流水线控制器 — 主入口点 |
| `malware-analyzer` | `5001` | Ghidra 反编译 + VirusTotal |
| `steg-analyzer` | `5002` | binwalk + zsteg + steghide + ExifTool |
| `recon-analyzer` | `5003` | ip-api + ThreatFox + OSINT |
| `web-analyzer` | `5005` | HTTP 漏洞扫描器 + 标头审计 |
| `macro-analyzer` | `5006` | oletools (olevba) + VirusTotal |
> **注意:** 首次启动可能需要几分钟 — 恶意软件分析器会下载 Ghidra 12.0.1(约 500 MB),并且需要 JDK 21 JVM。
### 4. 运行你的第一次分析
**分析一个文件:**```bash
curl -X POST http://localhost:5000/api/smart-analyze \
-F "file=@/path/to/suspicious.exe" \
-F "passes=3"
分析一个URL、IP或域名:```bash
curl -X POST http://localhost:5000/api/smart-analyze
-H "Content-Type: application/json"
-d '{"target": "192.168.1.100", "passes": 3}'
**响应:**```json
{
"job_id": "a1b2c3d4",
"findings": [...],
"report_paths": {
"json": "/api/report/a1b2c3d4/json",
"html": "/api/report/a1b2c3d4/html"
}
}
在浏览器中打开 http://localhost:5000/api/report/<job_id>/html 查看完整报告并导出为PDF。
cd ../frontend npm install npm run dev
打开 `http://localhost:5173` — React 仪表盘可让你提交分析、实时查看管道进度,并按分析器浏览结果。
---
## 分析器
### 恶意软件分析器 — 端口 5001
采用三层方法分析可执行文件和二进制文件:
- **Ghidra 12.0.1**(通过 `pyghidra`)— 将所有函数完整反编译为 C 伪代码
- **`objdump -d`** — 汇编级反汇编
- **VirusTotal API v3** — 70+ 反病毒引擎检测、行为标签、文件信誉
**支持格式:** `exe`、`dll`、`so`、`elf`、`bin`、`o`、`out` · 最大 50 MB · 需要 4 GB RAM(Ghidra JVM)
---
### 隐写分析器 — 端口 5002
使用多种方法检测图像中隐藏的数据:
- **binwalk** — 检测并提取二进制偏移处的嵌入文件
- **foremost** — 从原始二进制流中恢复文件
- **zsteg** — PNG/BMP 中的 LSB 隐写检测
- **steghide** — 基于密码的 JPEG/BMP 隐写检测
- **ExifTool** — 元数据提取与异常检测
**提取嵌入的存档并将其排队等待下一个管道轮次的重新分析**。
**支持格式:** PNG、JPG、BMP、GIF、TIFF、WebP
---
### 侦察分析器 — 端口 5003
对网络标识符执行威胁情报和开源情报(OSINT)分析:
**扫描模式**(IP / 域名):
| 模块 | 来源 | 检查内容 |
|---|---|---|
| `ipapi` | ip-api.com | 国家、ISP、ASN、地理位置 |
| `talos` | Cisco Talos 黑名单 | IP 信誉 / 黑名单 |
| `tor` | Tor 项目出口列表 | Tor 出口节点检测 |
| `tranco` | Tranco 排名列表 | 域名流行度排名 |
| `threatfox` | abuse.ch ThreatFox | 活跃 IOC / 恶意软件关联 |
**足迹模式**(电子邮件 / 电话 / 用户名):
- **电子邮件** — XposedOrNot 泄露数据库(泄露次数、严重性、密码风险)
- **电话** — NumVerify 运营商 + 国家 + 线路类型验证
- **用户名** — Sagemode 多线程跨社交平台资料发现
---
### Web 漏洞分析器 — 端口 5005
审计 URL 和 Web 端点:
- 安全头部分析(CSP、HSTS、X-Frame-Options 等)
- 技术指纹识别(服务器、框架、CMS)
- HTTP 响应分析与重定向链追踪
- 针对常见错误配置的基本漏洞扫描
---
### 宏 / Office 分析器 — 端口 5006
分解 Office 文档以查找恶意宏:
- **oletools (olevba)** — 提取并反编译 VBA/XLM 宏
- **自动执行检测** — 标记在打开/关闭时自动运行的宏
- **IOC 提取** — 宏代码中嵌入的 URL、IP、文件路径
- **混淆检测** — Base64、Chr() 链、十六进制编码
- **VirusTotal API v3** — 文件信誉交叉检查
**支持格式:** `doc`、`docx`、`docm`、`xls`、`xlsx`、`xlsm`、`xlsb`、`ppt`、`pptx`、`pptm`、`rtf`
---
## 报告输出
每次管道运行会生成 **两种报告格式**,保存到 `backend/reports/<job_id>/`:
### HTML 报告(`report.html`)
在任何浏览器中打开。点击 **导出 PDF** 即可打印 — 无需服务器端 PDF 渲染,无依赖。
包含:执行摘要 · YARA 规则 · SIGMA 规则 · MITRE TTP · 每轮证据面板 · VirusTotal 引擎徽章。
### JSON 报告(`report.json`)
完全结构化的机器可读输出。当你想要以下用途时使用此格式:
- 直接将发现结果输入另一个 AI 模型进行更深入分析
- 导入 SIEM 或工单系统
- 以编程方式比较两份报告
- 构建自定义仪表盘
JSON 与 HTML 完全对应 — 每项发现、YARA 规则、SIGMA 规则、IOC 和 TTP 都以清晰、类型化的模式呈现。
参见 [`examples/`](https://github.com/aradhyacp/secflow/blob/HEAD/examples/) 获取示例输入文件,以及 [`example_reports`](https://github.com/aradhyacp/secflow/blob/HEAD/example_reports/) 获取开发过程中生成的实际报告输出。
---
### 执行摘要
AI 生成的叙述(Groq `qwen/qwen3-32b`)涵盖:
- 识别的威胁名称和攻击者类型分类
- 攻击链重建(逐步)
- 置信度评级和总体风险评分
### YARA 检测规则
**2-5 条生产就绪的 YARA 规则**,由 `llama-3.3-70b-versatile` 生成,每条规则:
- 遵循 `SecFlow_[ThreatCategory]_[IndicatorType]` 命名规范
- 包含有效的 YARA 4.x 语法 — 可导入任何兼容 YARA 的扫描器
- 包含一个 `reasoning` 字段,引用分析中形成该规则的确切证据
- 涵盖不同方面:文件签名、嵌入字符串、C2 指标、加壳器签名、内存模式```yara
rule SecFlow_Trojan_C2StringIndicator {
meta:
description = "Detects C2 callback string found in Ghidra decompilation"
author = "SecFlow AI"
severity = "high"
strings:
$c2 = "evil.sh/drop.exe"
$ua = "Mozilla/4.0 (compatible; MSIE 6.0)"
condition:
any of them
}
2–4 条 SIGMA 规则用于即时 SIEM 部署,每条规则:
sigma-cli 0.x 和 pySigma### MITRE ATT&CK TTPs
每个识别的行为都映射到真实的攻击技术ID,包含战术名称和推理说明。
### 每次分析证据
每个分析器运行的可折叠面板显示:
- Ghidra反编译输出(深色代码块,可折叠)
- objdump反汇编(可折叠)
- VirusTotal引擎检测(颜色编码的严重性徽章)
- 原始分析器发现结果JSON
### 导出PDF
一键浏览器打印对话框预配置为PDF导出——无需服务器端生成PDF。
---
## 示例流水线运行
示例输入文件位于 [`examples/`](https://github.com/aradhyacp/secflow/blob/HEAD/examples/) — 包含真实的恶意软件样本(`RealMalware.exe`、`ColorBug.exe`、`EarlyEnd.exe`、`.out` ELF二进制文件)和一个恶意Office文档(`nuclear_motor_example.docm`)。对应的报告输出位于 [`backend/reports/`](https://github.com/aradhyacp/secflow/blob/HEAD/backend/reports/)。
### 恶意Office文档```
Input: invoice.xlsm
Passes: 3
Pass 1 ─ Rule: .xlsm extension → Macro Analyzer
olevba: AutoExec macro found
IOC: http://evil.sh/drop.exe
VT: 12/70 engines flagged
Pass 2 ─ AI: URL found in IOCs → Web Analyzer
http://evil.sh/drop.exe — alive, 302 redirect to CDN
Pass 3 ─ AI: no further tool, but HTTP URL in raw_output
Download: drop.exe → Malware Analyzer
Ghidra: C2 callback string, packed PE
VT: 45/70 detections — Trojan.GenericKDZ
Report ─ PWNDoc HTML generated
YARA: 4 rules (string, byte sig, packer, C2 domain)
SIGMA: 3 rules (process_creation, network, registry)
MITRE: T1566.001, T1059.005, T1071.001
Input: profile.png Passes: 3
Pass 1 ─ Rule: image/png → Steg Analyzer binwalk: embedded ELF binary at offset 0x8200 Archive extracted → queued for re-analysis
Pass 2 ─ Queue: extracted ELF → Malware Analyzer Ghidra: C2 callout to 192.168.1.100 objdump: packed UPX section
Pass 3 ─ AI: IP found → Recon Analyzer Talos: blacklisted Tor: confirmed exit node ThreatFox: associated with AsyncRAT
Report ─ Full chain documented YARA: 3 rules (ELF magic, UPX sig, C2 string) SIGMA: 2 rules (network_connection, dns_query)
### 可疑域名```
Input: malicious-domain.ru
Passes: 3
Pass 1 ─ Rule: domain regex → Recon Analyzer
ipapi: RU, ISP: HostMaster LLC
Talos: on blocklist
ThreatFox: linked to Raccoon Stealer, confidence 95
Pass 2 ─ AI: ThreatFox hit → Web Analyzer
/login endpoint returns 200, harvesting form detected
Pass 3 ─ AI: no futher signals — loop exits early
Report ─ Executive summary + TTPs + SIGMA network rules
SecFlow/ ├── backend/ │ ├── compose.yml # All 6 services on secflow-net │ ├── .env.example # All required + optional API keys │ │ │ ├── orchestrator/ # Pipeline controller (port 5000) │ │ ├── app/ │ │ │ ├── routes.py # POST /api/smart-analyze │ │ │ ├── orchestrator.py # Pipeline loop + download-and-analyze │ │ │ ├── classifier/ │ │ │ │ ├── classifier.py # file + python-magic type detection │ │ │ │ └── rules.py # Deterministic routing rules │ │ │ ├── ai/ │ │ ├── engine.py # Groq qwen/qwen3-32b routing decisions │ │ ├── threat_intel.py # YARA rules + SIGMA rules + threat summary │ │ │ │ └── keywords.txt # Grep fallback keyword list │ │ │ ├── adapters/ # Translate analyzer responses → contract │ │ │ │ ├── malware_adapter.py │ │ │ │ ├── steg_adapter.py │ │ │ │ ├── recon_adapter.py │ │ │ │ ├── web_adapter.py │ │ │ │ └── macro_adapter.py │ │ │ ├── store/ │ │ │ │ └── findings_store.py # Thread-safe findings accumulator │ │ │ └── reporter/ │ │ │ └── report_generator.py # PWNDoc HTML + Export PDF │ │ ├── Dockerfile │ │ └── requirements.txt │ │ │ ├── Malware-Analyzer/ # Ghidra + objdump + VirusTotal (port 5001) │ ├── Steg-Analyzer/ # binwalk + zsteg + steghide (port 5002) │ ├── Recon-Analyzer/ # ip-api + ThreatFox + OSINT (port 5003) │ ├── Web-Analyzer/ # HTTP vuln scanner (port 5005) │ └── macro-analyzer/ # oletools + VirusTotal (port 5006) │ ├── frontend/ # React + Vite dashboard (port 5173) │ └── src/ │ ├── pages/dashboard/ # Per-analyzer pages + smart pipeline UI │ ├── components/ # Reusable UI components │ └── pages/LandingPage.jsx # Public landing page │ ├── examples/ # Sample input files for testing │ ├── RealMalware.exe # Real malware sample │ ├── ColorBug.exe / EarlyEnd.exe # PE test samples │ ├── sample.out / sample2.out # ELF binaries │ └── nuclear_motor_example.docm # Malicious Office document │ ├── docs/ # Architecture + pipeline + analyzer docs ├── AGENTS.md # Agent architecture + coding conventions └── Readme.md
## AI 模型
SecFlow 使用 **Groq** 进行所有 AI 推理——免费层,无需信用卡。
| 角色 | 模型 | 理由 |
|---|---|---|
| **流水线路由** | `qwen/qwen3-32b` | 可靠的结构化 JSON 输出;`/no_think` 模式跳过思维链以实现快速路由决策 |
| **威胁情报** | `llama-3.3-70b-versatile` | 更强的推理能力,用于生成 YARA/SIGMA 和映射 MITRE TTP |
| **报告摘要** | `qwen/qwen3-32b` | 执行摘要 + 建议 |
SecFlow 使用 **兼容 OpenAI 的 API 规范**,通过标准的 `openai` Python SDK——无需特定供应商的 SDK。这意味着你可以通过仅更改 `base_url` 和模型名称来替换任何兼容 OpenAI 的模型提供商(OpenAI、Groq、Together、Ollama 等):```python
from openai import OpenAI
# Groq (current — free tier)
client = OpenAI(api_key=GROQ_API_KEY, base_url="https://api.groq.com/openai/v1")
# OpenAI (drop-in swap)
client = OpenAI(api_key=OPENAI_API_KEY) # base_url defaults to api.openai.com
# Local Ollama (fully offline)
client = OpenAI(api_key="ollama", base_url="http://localhost:11434/v1")
为何选择 Groq + 免费套餐? SecFlow 的设计宗旨是易于使用——运行完整流程无需付费 API。Groq 的免费套餐可覆盖所有路由和报告生成,完全免费。若需处理更大工作负载或希望赞助该项目,请访问 GitHub Sponsors 页面。
所有请求均发送至协调器 http://localhost:5000。
POST /api/smart-analyze提交文件或目标进行分析。
文件输入:```bash
curl -X POST http://localhost:5000/api/smart-analyze
-F "[email protected]"
-F "passes=4"
**目标输入(URL / IP / 域名):**```bash
curl -X POST http://localhost:5000/api/smart-analyze \
-H "Content-Type: application/json" \
-d '{"target": "https://suspicious-site.com", "passes": 5}'
GET /api/report/<job_id>/html返回完整的 PWNDoc HTML 报告——在浏览器中打开,点击导出 PDF即可保存。
GET /api/report/<job_id>/json返回原始发现结果的 JSON 格式,供程序化使用。
GET /api/health健康检查——返回 {"status": "healthy"}。
欢迎贡献!SecFlow 是开源项目,并持续维护中。
git checkout -b feat/your-feature适合新手的问题: 新的 IOC 提取模式、SIGMA 规则改进、额外的 OSINT 模块、前端分析器页面、报告导出改进。
如果 SecFlow 对您的工作或研究有帮助,请考虑赞助该项目——这有助于维持免费层级的基础设施和开发工作。
MIT 许可证——详情请参阅 LICENSE。
专为需要答案而非更多工具的安全分析师构建。
如果 SecFlow 对您有帮助,请为其加星——这有助于更多人发现该项目。
#cybersecurity #threatintelligence #malwareanalysis #yara #sigma #soc #dfir #infosec #osint #reverseengineering #steganography #virustotal #ghidra #docker
| 特性 | 详情 |
|---|
| AI 驱动的路由 | Groq qwen/qwen3-32b 在每轮分析后决定下一个分析器——无需手动配置 |
| 5 个专用分析器 | 恶意软件 · 隐写分析 · 侦察 · Web 漏洞 · 宏/Office |
| 智能首轮 | 第一轮使用 file + python-magic 确定性规则——仅在类型不明确时调用 AI |
| 下载并分析 | 追踪 IOC——下载原始输出中发现的载荷,并通过正确分析器进行分析 |
| YARA 规则生成 | 每次分析自动生成 2–5 条可部署的 YARA 规则,每条规则均引用产生它的确切证据 |
| SIGMA 规则生成 | 自动生成 2–4 条适用于 Splunk / Elastic / Sentinel 的 SIGMA 规则——覆盖不同日志源 |
| MITRE ATT&CK 映射 | 每条发现映射到真实 TTP ID,附带战术名称 |
| 双报告格式 | HTML 报告(浏览器打印为 PDF)+ 结构化 JSON 报告(可直接喂给 AI 进行进一步分析) |
| React 仪表板 | 完整前端 UI——提交分析、查看实时流水线进度、按分析器浏览结果 |
| VirusTotal 集成 | 恶意软件和宏分析器均通过 VT API v3 查询 70+ 杀毒引擎 |
| 可配置循环深度 | 3、4 或 5 轮——若 AI 判定无更多信号则提前退出 |
| 独立模式 | 每个分析器微服务暴露独立 REST API——可单独使用 |
| 变量 | 服务 | 必需 | 描述 |
|---|
GROQ_API_KEY | orchestrator | ✅ | AI 路由 + 威胁情报 + 报告生成 |
VIRUSTOTAL_API_KEY | malware, macro | ✅ | VirusTotal API v3 文件/URL 分析 |
NUMVERIFY_API_KEY | recon | 可选 | 电话号码验证(NumVerify) |
THREATFOX_API_KEY | recon | 可选 | ThreatFox IOC 查询的更高速率限制 |
ipAPI_KEY | recon | 可选 | ip-api.com 的更高速率限制 |
MAX_PASSES | orchestrator | 可选 | 循环深度——3(默认)/ 4 / 5 |
| 组件 | 状态 |
|---|
| Orchestrator + Classifier + AI Engine | ✅ 已完成 |
| Malware Analyzer (Ghidra + VirusTotal) | ✅ 已完成 |
| Steg Analyzer (binwalk + zsteg + steghide) | ✅ 已完成 |
| Recon Analyzer (ip-api + ThreatFox + OSINT) | ✅ 已完成 |
| Web Vulnerability Analyzer | ✅ 已完成 |
| Macro Analyzer (oletools + VirusTotal) | ✅ 已完成 |
| Download-and-Analyze payload fallback | ✅ 已完成 |
| YARA Rule Auto-Generation | ✅ 已完成 |
| SIGMA Rule Auto-Generation | ✅ 已完成 |
| MITRE ATT&CK TTP Mapping | ✅ 已完成 |
| HTML Report + JSON Report + Export PDF | ✅ 已完成 |
| React Frontend Dashboard | ✅ 已完成 |
| 文档 | 描述 |
|---|
| AGENTS.md | 代理架构、服务合约和 AI 编码说明 |
| ProjectDetails.md | 项目完整规范与设计决策 |
| docs/architecture.md | 系统组件与数据流图 |
| docs/pipeline-flow.md | 详细的管道循环逻辑与决策树 |
| docs/analyzers.md | 各分析器的功能与接口规范 |
| docs/migration.md | 分析器微服务的集成指南 |
| backend/Readme.md | 后端设置、开发与故障排查指南 |
#python#openSource#automation#mitre#attackframework#secops#blueTeam#incidentResponse#siem#edr#ioc#pwndoc#groq#llm#aiSecurity