
Агрегирует 99+ бесплатных источников OSINT параллельно, преобразует сущности в граф знаний и экспортирует в STIX 2.1, MISP или GraphML с анализом при поддержке LLM.
От создателей LazyOwn Redteam Framework — бесплатный агрегатор и движок корреляции разведывательных данных (OSINT) с открытым исходным кодом, вдохновлённый рабочими процессами Palantir, Bellingcat, Maltego и Citizen Lab.
Чистое переосмысление с открытым исходным кодом оригинальной цепочки инструментов fucklantir /
osint_palantir, с гораздо более обширным каталогом источников,
полноценным графом знаний, структурированными парсерами и многобэкендовым LLM-аналитиком.
Никаких полезных нагрузок. Никакого активного сканирования. Просто 99+ бесплатных публичных источников OSINT, опрашиваемых параллельно и объединяемых в единую разведывательную картину.
+--------------------------+
query "example.com" | Estorides Orchestrator | -> STIX 2.1 bundle
---------------------> | - async fanout | -> MISP event JSON
| - 99+ free sources | -> GraphML for Gephi
| - structured parsers | -> JSONL for training
| - entity resolution |
| - knowledge graph |
| - ontology engine | <- OFAC SDN cross-check
| - MITRE ATT&CK mapper | <- technique auto-tagging
| - SSRF guard | <- blocklist at egress
| - audit log + RL | <- per-IP trail
| - multi-LLM analyst | <- BLUF / tactical / system
+--------------------------+
|
v
Web UI: map / graph / bundles / timeline / results
pip install estorides
estorides serve --port 5050
(При проверке из исходного репозитория эквивалентом будет python3 estorides_cli.py serve --port 5050
или python3 -m estorides_cli serve --port 5050.)
Estorides построен вокруг небольших реестров с единственной ответственностью, поэтому добавление нового источника, бэкенда, инференсера или ленты никогда не требует изменения центрального оркестратора. Пять точек расширения:
| Поверхность | Декоратор | Файл | Назначение |
|---|---|---|---|
| Парсеры источников | @register_parser("name") | estorides_core/parsers.py | Преобразование сырого HTTP в структурированные словари |
| LLM-бэкенды | @register("name") | estorides_llm/manager.py | Добавление LLM-провайдера (ollama, openai, …) |
| Инференсеры связей | @register_inferer("source") | estorides_core/relationship_inference.py | Источник -> рёбра графа |
| Ленты реального времени | подкласс Feed | estorides_core/feeds.py | Слои карты (землетрясения, пожары, новости, самолёты, спутники, запуски) |
| Шифрованные экспортёры | estorides_export.encryption | estorides_export/encryption.py | STIX/MISP + шифрование age |
| Возможность | Оригинал | Estorides |
|---|---|---|
| Количество бесплатных OSINT-источников | ~20 | 99 |
| Категории разведданных | 6 | 12 |
| Модель HTTP-веера | последовательная | асинхронная |
| Повторы + backoff + circuit breaker | базовые | есть |
| Кэш ответов (SQLite) | нет | есть |
| Парсеры для каждого источника | нет | 50+ |
| Извлечение сущностей (IP, домен, CVE…) | только regex | структурированное + дедупликация |
| Граф знаний | нет | NetworkX + GraphML |
| Экспорт STIX 2.1 / MISP | нет | есть |
| Мульти-LLM (Ollama / OpenAI / Anthropic) | только Ollama | 4 бэкенда + заглушка |
| Карта (результаты геолокации) | PyVista 3D | Leaflet 2D |
| Представление графа с силовой раскладкой | нет | D3.js |
| Обработка API-ключей | нет | переменные окружения для каждого источника |
| Поддержка платных источников | нет | опционально через флаг |
| Перекрёстная проверка санкций OFAC SDN | нет | движок онтологий |
| Автоматическая разметка техник MITRE ATT&CK | нет | ~40 техник |
| Защита от SSRF / выхода в приватную сеть | нет | RFC1918 + блокировка облачного IMDS |
| Журнал аудита (на запрос, только добавление) | нет | JSONL с IP+запросом+задержкой |
| Ограничение частоты по IP (скользящее окно) | нет | по умолчанию 30/мин, настраивается через env |
| Шифрованный экспорт (age) | нет | опционально через ?key=age1… |
| Слои лент реального времени | нет | землетрясения + пожары + новости |
| Шифрованный экспорт (age) | нет | опционально через ?key=age1… |
| Возможность | v1.0 | v1.1 (эта) |
|---|---|---|
| Постоянный граф (запросы Cypher) | дамп NetworkX | встроенная БД Kùzu, соединения между запусками |
| Сохранение запусков | добавление в JSONL | кейсы SQLite с FK observations/entities |
| Резолвер сущностей между лентами | нет | Wikidata + OFAC + IP-API + NVD через intel_resolver |
| Нечёткая кластеризация сущностей | точная дедупликация | difflib SequenceMatcher, порог 0.85, псевдонимы выводятся |
| Дополнительные OSINT-эндпоинты (без ключа) | 99 YAML-источников | +7 (BGP, MAC, телефон, GitHub, утечки, CISA KEV, C2 вредоносного ПО) |
| Эндпоинт Cypher только для чтения | нет | /api/intel/graph?q=... с защитой от ключевых слов записи |
| UI истории кейсов | нет | вкладка Cases + полный инспектор сущностей |
Исходный движок был сборщиком данных: fan-out, парсеры, граф, LLM, который обобщает. Спринт v1.4 вводит слой информации: теперь каждое наблюдение несёт обоснованную оценку достоверности; оркестратор и нижестоящие потребители (движок гипотез, обнаружение изменений, LLM-аналитик) перестают использовать собственные ad-hoc эвристики и используют этот единый источник истины.