
Конвейер автоматического анализа угроз на основе ИИ, который направляет файлы, URL-адреса, IP-адреса, домены или изображения через специализированные анализаторы безопасности и генерирует профессиональные отчеты PWNDoc со встроенным правилом YARA и Sigma.
Передайте любой файл, URL, IP-адрес, домен или изображение. SecFlow направляет их через специализированные анализаторы, анализирует результаты с помощью ИИ и автоматически формирует профессиональный отчёт по безопасности с 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
- Ключи API для Groq и VirusTotal (бесплатные версии подходят)
### 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
This starts 6 containers:
| 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 МБ) и требует 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+ антивирусных движков, поведенческие теги, репутация файлов
**Поддерживаются:** `exe`, `dll`, `so`, `elf`, `bin`, `o`, `out` · Максимум 50 МБ · Требуется 4 ГБ ОЗУ (JVM для Ghidra)
---
### Анализатор стеганографии — порт 5002
Обнаруживает скрытые данные, встроенные в изображения, несколькими методами:
- **binwalk** — обнаружение и извлечение встроенных файлов по двоичным смещениям
- **foremost** — восстановление файлов из сырого двоичного потока
- **zsteg** — обнаружение LSB-стеганографии в PNG/BMP
- **steghide** — обнаружение стеганографии на основе пароля в JPEG/BMP
- **ExifTool** — извлечение метаданных и обнаружение аномалий
**Извлекает встроенные архивы и ставит их в очередь для повторного анализа** на следующем этапе конвейера.
**Поддерживаются:** PNG, JPG, BMP, GIF, TIFF, WebP
---
### Анализатор разведки — порт 5003
Выполняет анализ угроз и OSINT для сетевых идентификаторов:
**Режим сканирования** (IP / домен):
| Модуль | Источник | Что проверяет |
|---|---|---|
| `ipapi` | ip-api.com | Страна, провайдер, ASN, геолокация |
| `talos` | Cisco Talos blocklist | Репутация IP / черный список |
| `tor` | Tor Project exit list | Обнаружение узлов выхода Tor |
| `tranco` | Tranco ranking list | Рейтинг популярности домена |
| `threatfox` | abuse.ch ThreatFox | Активные IOC / связь с вредоносным ПО |
**Режим следа** (email / телефон / имя пользователя):
- **Email** — XposedOrNot — база данных утечек (количество утечек, серьезность, риск для пароля)
- **Телефон** — NumVerify — проверка оператора, страны и типа линии
- **Имя пользователя** — Sagemode — многопоточное обнаружение профилей в социальных платформах
---
### Анализатор веб-уязвимостей — порт 5005
Анализирует URL-адреса и веб-конечные точки:
- Анализ заголовков безопасности (CSP, HSTS, X-Frame-Options и т. д.)
- Идентификация технологий (сервер, фреймворки, CMS)
- Анализ HTTP-ответов и отслеживание цепочки перенаправлений
- Базовое сканирование уязвимостей на предмет распространенных ошибок конфигурации
---
### Анализатор макросов / Office — порт 5006
Анализирует документы Office на предмет вредоносных макросов:
- **oletools (olevba)** — извлечение и декомпиляция макросов VBA/XLM
- **Обнаружение AutoExec** — выявляет макросы, запускающиеся автоматически при открытии/закрытии
- **Извлечение 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`)
Открывается в любом браузере. Нажмите **Export PDF**, чтобы распечатать — не требуется серверная генерация PDF, нет зависимостей.
Содержит: исполнительное резюме · правила YARA · правила SIGMA · MITRE TTP · панели доказательств по этапам · значки движков VirusTotal.
### JSON-отчет (`report.json`)
Полностью структурированный машиночитаемый вывод. Используйте его, когда нужно:
- Передать результаты напрямую в другую модель ИИ для более глубокого анализа
- Импортировать в 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/) для реальных отчетов, созданных в процессе разработки.
---
### Исполнительное резюме
Созданное ИИ резюме (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### TTPs MITRE ATT&CK
Каждое выявленное поведение сопоставлено с реальными ID техник, названиями тактик и обоснованием.
### Свидетельства каждого прохода
Сворачиваемые панели для каждого прохода анализатора, показывающие:
- Вывод декомпиляции Ghidra (тёмный блок кода, сворачиваемый)
- Дизассемблирование objdump (сворачиваемое)
- Обнаружения движков VirusTotal (цветовые значки серьезности)
- Сырые результаты анализатора в формате JSON
### Экспорт в PDF
Диалог печати браузера в один клик, предварительно настроенный для экспорта в PDF — не требуется генерация PDF на сервере.
---
## Примеры запусков конвейера
Примеры входных файлов находятся в [`examples/`](https://github.com/aradhyacp/secflow/blob/HEAD/examples/) — включают реальные образцы вредоносного ПО (`RealMalware.exe`, `ColorBug.exe`, `EarlyEnd.exe`, ELF-бинарники `.out`) и вредоносный документ 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
## Модели ИИ
SecFlow использует **Groq** для всех вычислений ИИ — бесплатный тариф, кредитная карта не требуется.
| Роль | Модель | Почему |
|---|---|---|
| **Маршрутизация пайплайна** | `qwen/qwen3-32b` | Надёжный структурированный JSON-вывод; режим `/no_think` пропускает цепочку размышлений для быстрых решений по маршрутизации |
| **Аналитика угроз** | `llama-3.3-70b-versatile` | Более сильное рассуждение для генерации YARA/SIGMA и сопоставления MITRE TTP |
| **Сводка отчёта** | `qwen/qwen3-32b` | Краткое резюме + рекомендации |
SecFlow использует **API-спецификацию, совместимую с OpenAI**, через стандартный Python SDK `openai` — не требуется SDK от конкретного вендора. Это означает, что вы можете заменить любого поставщика моделей, совместимого с OpenAI (OpenAI, Groq, Together, Ollama и т.д.), просто изменив `base_url` и имя модели:```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Возвращает полный HTML-отчёт PWNDoc — откройте в браузере, нажмите Export 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
| Функция | Подробности |
|---|
| Маршрутизация на основе ИИ | Groq qwen/qwen3-32b решает, какой анализатор использовать после каждого прохода — без ручной настройки |
| 5 специализированных анализаторов | Вредоносное ПО · Стеганография · Разведка · Веб-уязвимости · Макросы/Oфис |
| Умный первый проход | file + python-magic — детерминированные правила на первом проходе, ИИ вызывается только при неоднозначном типе |
| Загрузка и анализ | Отслеживает индикаторы компрометации — загружает полезные нагрузки, найденные в необработанном выводе, и направляет их в нужный анализатор |
| Генерация YARA-правил | Автоматически создаёт 2–5 готовых к использованию YARA-правил для каждого анализа, каждое с указанием точных доказательств |
| Генерация SIGMA-правил | Автоматически создаёт 2–4 SIGMA-правила для Splunk / Elastic / Sentinel, охватывающих разные источники журналов |
| Привязка к MITRE ATT&CK | Каждое обнаружение сопоставляется с реальными идентификаторами TTP и названиями тактик |
| Два формата отчёта | HTML-отчёт (печать в PDF из браузера) + структурированный JSON-отчёт (подача напрямую в ИИ для дальнейшего анализа) |
| Панель управления на React | Полноценный фронтенд — отправляйте запросы, наблюдайте за ходом конвейера в реальном времени, просматривайте результаты по анализаторам |
| Интеграция с VirusTotal | Анализаторы вредоносного ПО и макросов опрашивают более 70 антивирусных движков через API VT v3 |
| Настраиваемая глубина цикла | 3, 4 или 5 проходов — досрочное завершение, если ИИ сообщает об отсутствии дальнейших сигналов |
| Автономный режим | Каждый анализатор-микросервис предоставляет собственный REST API — используйте их независимо |
| Переменная | Сервис | Обязательно | Описание |
|---|
GROQ_API_KEY | orchestrator | ✅ | Маршрутизация ИИ + анализ угроз + генерация отчётов |
VIRUSTOTAL_API_KEY | malware, macro | ✅ | Анализ файлов/URL через VirusTotal API v3 |
NUMVERIFY_API_KEY | recon | Опционально | Валидация номеров телефонов (NumVerify) |
THREATFOX_API_KEY | recon | Опционально | Повышенный лимит запросов к ThreatFox IOC |
ipAPI_KEY | recon | Опционально | Повышенный лимит запросов к ip-api.com |
MAX_PASSES | orchestrator | Опционально | Глубина цикла — 3 (по умолчанию) / 4 / 5 |
| Компонент | Статус |
|---|
| Оркестратор + Классификатор + AI-движок | ✅ Завершено |
| Анализатор вредоносного ПО (Ghidra + VirusTotal) | ✅ Завершено |
| Анализатор стеганографии (binwalk + zsteg + steghide) | ✅ Завершено |
| Анализатор разведки (ip-api + ThreatFox + OSINT) | ✅ Завершено |
| Анализатор веб-уязвимостей | ✅ Завершено |
| Анализатор макросов (oletools + VirusTotal) | ✅ Завершено |
| Загрузка-и-анализ (запасной вариант для пейлоадов) | ✅ Завершено |
| Автоматическая генерация YARA-правил | ✅ Завершено |
| Автоматическая генерация SIGMA-правил | ✅ Завершено |
| Привязка к MITRE ATT&CK TTP | ✅ Завершено |
| HTML-отчёт + JSON-отчёт + Экспорт в PDF | ✅ Завершено |
| Панель управления на React | ✅ Завершено |
| Документ | Описание |
|---|
| AGENTS.md | Архитектура агентов, контракты сервисов и инструкции по кодированию ИИ |
| 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