
Agrega más de 99 fuentes OSINT gratuitas en paralelo, resuelve entidades en un grafo de conocimiento y exporta STIX 2.1, MISP o GraphML con análisis asistido por LLM.
De los creadores de LazyOwn Redteam Framework llega un agregador y motor de correlación de inteligencia (OSINT) gratuito y de código abierto, inspirado en los flujos de trabajo de Palantir, Bellingcat, Maltego y Citizen Lab.
Una reinvención completamente de código abierto de la cadena de herramientas original fucklantir / osint_palantir, con un catálogo de fuentes mucho más amplio, un grafo de conocimiento adecuado, parsers estructurados y un analista LLM multi-backend.
Sin payloads. Sin escaneo activo. Solo más de 99 fuentes OSINT públicas y gratuitas, desplegadas en paralelo y fusionadas en una única imagen de inteligencia.
+--------------------------+
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
(Desde una copia de trabajo del código fuente, el equivalente es python3 estorides_cli.py serve --port 5050
o python3 -m estorides_cli serve --port 5050.)
Estorides está estructurado en torno a pequeños registros de responsabilidad única de modo que añadir una nueva fuente, backend, inferidor o feed nunca requiere tocar el orquestador central. Las cinco superficies de plug-in son:
| Superficie | Decorador | Archivo | Usado para |
|---|---|---|---|
| Analizadores de fuentes | @register_parser("name") | estorides_core/parsers.py | Traducir HTTP en bruto a dicts estructurados |
| Backends de LLM | @register("name") | estorides_llm/manager.py | Añadir un proveedor de LLM (ollama, openai, …) |
| Inferidores de relaciones | @register_inferer("source") | estorides_core/relationship_inference.py | Fuente -> aristas del grafo |
| Feeds en tiempo real | subclase de Feed | estorides_core/feeds.py | Capas de mapa (terremotos, incendios, noticias, aeronaves, satélites, lanzamientos) |
| Exportadores cifrados | estorides_export.encryption | estorides_export/encryption.py | STIX/MISP + cifrado age |
| Capacidad | Original | Estorides |
|---|---|---|
| Número de fuentes OSINT gratuitas | ~20 | 99 |
| Categorías de inteligencia | 6 | 12 |
| Modelo de fanout HTTP | secuencial | asíncrono |
| Reintentos + backoff + circuit breaker | básico | sí |
| Caché de respuestas (SQLite) | ninguno | sí |
| Analizadores por fuente | ninguno | 50+ |
| Extracción de entidades (IP, dominio, CVE…) | solo regex | estructurada + deduplicación |
| Grafo de conocimiento | ninguno | NetworkX + GraphML |
| Exportación STIX 2.1 / MISP | ninguno | sí |
| Multi-LLM (Ollama / OpenAI / Anthropic) | solo Ollama | 4 backends + stub |
| Mapa (resultados de geolocalización) | PyVista 3D | Leaflet 2D |
| Vista de grafo dirigido por fuerzas | ninguno | D3.js |
| Gestión de claves de API | ninguno | variables de entorno por fuente |
| Soporte de fuentes de pago | ninguno | opt-in basado en flags |
| Verificación cruzada de sanciones OFAC SDN | ninguno | motor de ontología |
| Etiquetado automático de técnicas MITRE ATT&CK | ninguno | ~40 técnicas |
| Protección de egreso SSRF / red privada | ninguno | RFC1918 + IMDS de nube bloqueados |
| Registro de auditoría (por petición, solo anexar) | ninguno | JSONL con IP+consulta+latencia |
| Límite de tasa por IP (ventana deslizante) | ninguno | por defecto 30/min, ajustable por env |
| Exportación cifrada (age) | ninguno | opt-in vía ?key=age1… |
| Capas de feeds en tiempo real | ninguno | terremotos + incendios + noticias |
| Exportación cifrada (age) | ninguno | opt-in vía ?key=age1… |
| Capacidad | v1.0 | v1.1 (esta) |
|---|---|---|
| Grafo persistente (consultas Cypher) | volcado de NetworkX | BD embebida Kùzu, uniones entre ejecuciones |
| Persistencia de ejecuciones | anexar JSONL | casos SQLite con observaciones/entidades FK |
| Resolutor de entidades entre feeds | ninguno | Wikidata + OFAC + IP-API + NVD vía intel_resolver |
| Agrupamiento difuso de entidades | deduplicación exacta | difflib SequenceMatcher, umbral 0.85, alias expuestos |
| Endpoints OSINT adicionales (sin clave) | 99 fuentes YAML | +7 (BGP, MAC, teléfono, GitHub, filtraciones, CISA KEV, C2 de malware) |
| Endpoint Cypher de solo lectura | ninguno | /api/intel/graph?q=... con protección de palabras clave de escritura |
| UI de historial de casos | ninguno | pestaña Cases + inspector de entidades completo |
El motor original era un recolector de datos: un fan-out, parsers, un grafo, un LLM que resume. El sprint v1.4 introduce la capa de información: cada observación ahora lleva una puntuación de confianza fundamentada; el orquestador y los consumidores posteriores (motor de hipótesis, detección de cambios, analista LLM) dejan de usar sus propias heurísticas ad-hoc y usan esta única fuente de verdad.