
AI駆動の自動脅威分析パイプラインで、ファイル、URL、IP、ドメイン、画像を専門のセキュリティアナライザーにルーティングし、統合されたYARAおよびSigmaルールを使用してプロフェッショナルなPWNDocレポートを生成します。
ファイル、URL、IP、ドメイン、画像のいずれかをドロップするだけで、SecFlowが専用アナライザーに振り分け、AIで分析結果を推論し、YARAルール、SIGMAルール、エクスポート可能なPDFを含むプロフェッショナルなセキュリティレポートを自動生成します。
SecFlowは、セキュリティアナリスト、SOCチーム、研究者向けに構築されたオープンソースの自動脅威分析パイプラインです。個別のツールを手動で実行し、結果を相関させる代わりに、SecFlowは以下の処理を行います。
| 機能 | 詳細 |
|---|---|
| AI駆動ルーティング | Groq qwen/qwen3-32b が各パス後に次のアナライザーを決定 — 手動設定は不要 |
| 5つの専用アナライザー | マルウェア · ステガノグラフィ · 偵察 · Web脆弱性 · マクロ/Office |
| スマート初回パス | 第1パスでは file + python-magic の決定論的ルール — AIはタイプがあいまいな場合のみ呼び出される |
| ダウンロード&分析 | IOCsを追跡 — 生の出力で見つかったペイロードをダウンロードし、適切なアナライザーにルーティング |
| YARAルール生成 | 分析ごとに2~5のデプロイ可能なYARAルールを自動生成し、それぞれを導き出した正確なエビデンスを引用 |
| SIGMAルール生成 | Splunk / Elastic / Sentinel 向けの2~4のSIGMAルールを自動生成 — 異なるログソースをカバー |
| MITRE ATT&CKマッピング | すべての調査結果を実際のTTP IDと戦術名にマッピング |
| デュアルレポート形式 | HTMLレポート(ブラウザで印刷→PDF)+構造化JSONレポート(さらなる分析のためにAIに直接フィード) |
| Reactダッシュボード | 完全なフロントエンドUI — 分析の送信、ライブパイプラインの進行状況の表示、アナライザーごとの結果の閲覧 |
| VirusTotal統合 | マルウェアとマクロの両方のアナライザーがVT API v3を介して70以上のAVエンジンに問い合わせ |
| 設定可能なループ深度 | 3、4、または5パス — AIがこれ以上のシグナルがないと判断した場合に早期終了 |
| スタンドアロンモード | すべてのアナライザーマイクロサービスが独自のREST APIを公開 — 個別に使用可能 |
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つのコンテナが起動します:
| Service | Port | Role |
|---|---|---|
| `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 |
> **注意:** 初回起動には数分かかる場合があります — Malware Analyzerが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、またはdomainを分析する:```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
Open `http://localhost:5173` — Reactダッシュボードでは分析の送信、パイプラインの進行状況のリアルタイム確認、アナライザーごとの結果の閲覧が可能です。
---
## アナライザー
### マルウェアアナライザー — ポート5001
3層のアプローチで実行ファイルとバイナリを分析:
- **Ghidra 12.0.1** (`pyghidra`経由) — すべての関数の完全な逆コンパイルをC擬似コードに
- **`objdump -d`** — アセンブリレベルでの逆アセンブル
- **VirusTotal API v3** — 70以上のAVエンジンによる検出、動作タグ、ファイルのレピュテーション
**対応形式:** `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 / ドメイン):