
AI 기반의 자동 위협 분석 파이프라인으로, 파일, URL, IP, 도메인 또는 이미지를 전문 보안 분석 도구로 라우팅하고 통합된 YARA 및 Sigma 규칙을 사용하여 전문적인 PWNDoc 보고서를 생성합니다.
파일, URL, IP, 도메인, 또는 이미지를 넣기만 하면 SecFlow가 전문화된 분석기로 라우팅하고, AI로 결과를 추론하며, YARA 규칙, SIGMA 규칙 및 내보내기 가능한 PDF가 포함된 전문 보안 보고서를 자동으로 생성합니다.
SecFlow는 보안 분석가, SOC 팀 및 연구자를 위해 구축된 오픈소스 자동 위협 분석 파이프라인입니다. 다양한 도구를 수동으로 실행하고 결과를 상호 연관시키는 대신 SecFlow는 다음과 같은 작업을 수행합니다:
| 기능 | 세부 정보 |
|---|---|
| AI 기반 라우팅 | Groq qwen/qwen3-32b가 각 패스 후 다음 분석기를 결정 — 수동 구성 불필요 |
| 5가지 전문화 분석기 | 악성코드 · 스테가노그래피 · 정찰 · 웹 취약점 · 매크로/오피스 |
| 스마트 첫 번째 패스 | file + python-magic 결정론적 규칙을 첫 번째 패스에서 사용 — 유형이 모호할 때만 AI 호출 |
| 다운로드 및 분석 | IOC를 추적하여 원시 출력에서 발견된 페이로드를 다운로드하고 올바른 분석기로 라우팅 |
| 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개 이상의 안티바이러스 엔진 조회 |
| 구성 가능한 루프 깊이 | 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개의 컨테이너가 시작됩니다:
| 서비스 | 포트 | 역할 |
|---|---|---|
| `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 또는 도메인 분석:```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
실행 파일 및 바이너리를 세 가지 계층으로 분석합니다:
- **Ghidra 12.0.1** (`pyghidra` 경유) — 모든 함수를 C 유사 코드로 완전 디컴파일
- **`objdump -d`** — 어셈블리 수준 디스어셈블리
- **VirusTotal API v3** — 70개 이상의 AV 엔진 탐지, 동작 태그, 파일 평판
**지원 형식:** `exe`, `dll`, `so`, `elf`, `bin`, `o`, `out` · 최대 50MB · 4GB RAM 필요 (Ghidra JVM)
---
### 스테가노그래피 분석기 — 포트 5002
여러 방법을 사용하여 이미지에 숨겨진 데이터를 탐지합니다:
- **binwalk** — 바이너리 오프셋에서 임베디드 파일 탐지 및 추출
- **foremost** — 원시 바이너리 스트림에서 파일 카빙
- **zsteg** — PNG/BMP의 LSB 스테가노그래피 탐지
- **steghide** — JPEG/BMP에서 패스프레이즈 기반 스테그 탐지
- **ExifTool** — 메타데이터 추출 및 이상 탐지
**임베디드 아카이브를 추출하고 다음 파이프라인 단계에서 재분석을 위해 대기시킵니다.**
**지원 형식:** PNG, JPG, BMP, GIF, TIFF, WebP
---
### 정찰 분석기 — 포트 5003
네트워크 식별자에 대한 위협 인텔리전스 및 OSINT를 수행합니다:
**스캔 모드** (IP / 도메인):