Flowsint: La Plataforma Open Source de OSINT Basada en Grafos para Investigaciones Digitales
Flowsint es una plataforma moderna de código abierto diseñada para investigaciones basadas en grafos, especializada en OSINT (Open Source Intelligence), ciberseguridad y análisis de relaciones complejas entre entidades de datos. A diferencia de las herramientas tradicionales que devuelven resultados fragmentados en terminales o tablas, Flowsint los conecta visualmente en un grafo interactivo donde cada nodo es una entidad (dominio, IP, email, persona) y cada arista representa una relación descubierta. Todo se ejecuta localmente mediante Docker, sin enviar datos a servidores externos.
¿Qué es Flowsint y por qué es diferente?
El ecosistema OSINT está repleto de herramientas especializadas: Shodan para dispositivos expuestos, theHarvester para emails, subfinder para subdominios, sherlock para perfiles en redes sociales. El problema es que los resultados viven en silos. Tienes que copiar y pegar entre herramientas, construir manualmente las relaciones y mantener hojas de cálculo para no perder el hilo de la investigación.
Flowsint resuelve exactamente ese problema. Actúa como un hub central donde todos los enriquecedores depositan sus resultados, conectados visualmente en tiempo real. El investigador parte de una entidad inicial —un dominio sospechoso, una dirección IP, un email— y expande el grafo iterativamente hasta descubrir la infraestructura completa detrás de un actor de amenaza, una campaña de phishing o una red de corrupción.
- Local-first: Todos los datos se almacenan en bases de datos containerizadas en tu máquina (Neo4j + PostgreSQL). Nada sale de tu entorno.
- Código abierto: Licencia AGPL-3.0, repositorio en
github.com/reconurge/flowsint, auditable y modificable. - Más de 30 enriquecedores: Operaciones automatizadas que convierten una entidad en docenas de nuevos nodos relacionados.
- Flujos encadenables: Automatiza secuencias completas de recopilación sin intervención manual.
- Integración con n8n: Conecta tu investigación con más de 500 servicios externos mediante webhooks REST.
Arquitectura técnica
Flowsint sigue una arquitectura modular de microservicios orquestada con Docker Compose. Cada componente tiene una responsabilidad clara:
┌─────────────────────────────────────────┐
│ flowsint-app (Frontend) │
│ React + TypeScript │ Puerto 5173 │
└───────────────┬─────────────────────────┘
│ REST
┌───────────────▼─────────────────────────┐
│ flowsint-api (Backend) │
│ FastAPI (Python) │ Puerto 5001 │
└──────┬────────────────┬─────────────────┘
│ │
┌──────▼──────┐ ┌──────▼──────────────────┐
│ Neo4j │ │ flowsint-core │
│ (grafos) │ │ Autenticación, modelos │
│ Port 7474 │ │ PostgreSQL (usuarios) │
└─────────────┘ └──────┬──────────────────┘
│
┌──────────▼──────────┐
│ flowsint-enrichers │
│ 30+ enriquecedores │
│ Python │ Docker │
└─────────────────────┘
Los cinco componentes principales son:
- flowsint-app: Interfaz gráfica React con visualizador de grafos interactivo, editor de flujos y panel de investigación.
- flowsint-api: API REST en FastAPI que expone endpoints para autenticación, operaciones sobre el grafo y ejecución de transformaciones.
- flowsint-core: Librería compartida con conexiones a bases de datos, modelos Pydantic, sistema de autenticación y logging.
- flowsint-enrichers: Módulos reutilizables para recolección de datos desde fuentes externas. Pueden ser scripts Python, contenedores Docker o llamadas a APIs.
- flowsint-types: Definiciones de tipos TypeScript/Python compartidas entre componentes para coherencia en los esquemas de datos.
Instalación con Docker Compose
Los requisitos mínimos son 4 GB de RAM, 10 GB de espacio en disco, Docker y Docker Compose instalados. La instalación completa se realiza en cuatro comandos:
# 1. Clonar el repositorio oficial
git clone https://github.com/reconurge/flowsint.git
cd flowsint
# 2. Iniciar todos los servicios en modo producción
make prod
# El comando make prod ejecuta internamente:
# docker compose -f docker-compose.prod.yml up -d --build
# 3. Verificar que todos los contenedores están corriendo
docker compose ps
# flowsint-app running 0.0.0.0:5173->5173/tcp
# flowsint-api running 0.0.0.0:5001->5001/tcp
# flowsint-neo4j running 0.0.0.0:7474->7474/tcp
# flowsint-postgres running 5432/tcp
# 4. Acceder a la interfaz web
# Abrir http://localhost:5173 en el navegador
# Crear cuenta en la página de registro
Configuración de enriquecedores externos
Algunos enriquecedores requieren claves API de servicios de terceros. Se configuran mediante variables de entorno en el archivo .env que Flowsint genera automáticamente:
# Editar el archivo .env del repositorio
nano .env
# Variables para servicios externos (opcionales pero recomendadas):
SHODAN_API_KEY=tu_clave_de_shodan
WHOXY_API_KEY=tu_clave_de_whoxy
WHOISXMLAPI_KEY=tu_clave_de_whoisxmlapi
# Reiniciar los servicios para aplicar cambios
make restart
# o bien:
docker compose -f docker-compose.prod.yml restart
Enriquecedores: el motor de la inteligencia
Un enriquecedor (llamado transform en la interfaz) es una operación que toma una entidad como entrada y genera nuevas entidades de salida. Cada enriquecedor representa un pivote de inteligencia: de un dominio a sus IPs, de una IP a su propietario, de un email a sus cuentas asociadas.
Categorías de enriquecedores
ENRIQUECEDORES NATIVOS (sin dependencias externas)
──────────────────────────────────────────────────
Domain → IPs Resolución DNS
Domain → Subdominios Certificate Transparency Logs
Domain → WHOIS Información de registro
IP → Hostname Reverse DNS
Domain → Certificados SSL Análisis TLS/SSL
HERRAMIENTAS DOCKER (contenedores integrados)
─────────────────────────────────────────────
subfinder → Enumeración de subdominios por fuerza bruta
asnmap → Mapeo de Autonomous System Numbers (ASN)
HERRAMIENTAS PYTHON (instaladas en el entorno)
──────────────────────────────────────────────
sherlock → Username → Perfiles en redes sociales
maigret → Email/username → Información de persona
recontrack → Seguimiento de entidades en el tiempo
reconcrawl → Rastreo web automatizado
reconspread → Propagación de búsquedas en masa
SERVICIOS EXTERNOS (requieren API key)
──────────────────────────────────────
Shodan → IP/dominio → Dispositivos y puertos expuestos
Whoxy → Email/nombre → Dominios registrados por esa persona
WhoisXmlAPI → Dominio → WHOIS detallado e histórico
Flujo de una investigación típica
Supongamos que investigas un dominio sospechoso. Este es el flujo natural en Flowsint:
1. Añadir entidad inicial
└─ Nodo: dominio "sospechoso.com"
2. Enriquecedor: Domain → IPs (DNS resolution)
└─ Nodos nuevos: 203.0.113.10, 203.0.113.11
3. Enriquecedor: Domain → Subdominios
└─ Nodos nuevos: mail.sospechoso.com, admin.sospechoso.com, vpn.sospechoso.com
4. Enriquecedor: IP → Shodan
└─ Nodos nuevos: puertos 22, 80, 443, 8080 abiertos
└─ Banner: Apache/2.4.41 (Ubuntu), SSH OpenSSH 7.6
5. Enriquecedor: Domain → WHOIS
└─ Nodos nuevos: registrante "John Smith", email "john@protonmail.com"
6. Enriquecedor: Email → Whoxy (dominios registrados por ese email)
└─ Nodos nuevos: otrodominio.com, malware-c2.net, phishing-bank.org
7. Resultado: red de infraestructura de 23 nodos visible en el grafo
→ 4 dominios, 6 IPs, 8 subdominios, 5 metadatos WHOIS
Automatización con flujos
La característica más poderosa de Flowsint es la capacidad de encadenar enriquecedores en flujos automatizados. Un flujo define qué transforms ejecutar sobre qué tipos de entidades, en qué orden, y bajo qué condiciones. Una vez definido, el investigador solo necesita añadir la entidad inicial y el flujo se ejecuta solo.
Ejemplo de flujo automatizado: "Reconocimiento de dominio completo"
PASO 1: Entidad tipo Domain recibida
↓
PASO 2: Ejecutar en paralelo:
├─ DNS Resolution → IPs
├─ Certificate Transparency → Subdominios
└─ WHOIS → Datos de registro
↓
PASO 3: Por cada IP descubierta:
├─ Shodan lookup → Puertos y servicios
└─ Reverse DNS → Hostnames adicionales
↓
PASO 4: Por cada email en WHOIS:
├─ Whoxy → Otros dominios registrados
└─ Sherlock → Perfiles en redes sociales
↓
PASO 5: Notificar vía webhook (n8n) al completar
Duración estimada: 2-5 minutos para un dominio desconocido
Resultados típicos: 20-80 nodos y relaciones nuevas
Integración con n8n para automatización avanzada
# Flowsint expone un webhook REST que n8n puede invocar
# Ejemplo: trigger automático cuando aparece un nuevo dominio malicioso
# En n8n, configurar un nodo HTTP Request:
curl -X POST http://localhost:5001/api/investigations/trigger \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $FLOWSINT_TOKEN" \
-d '{
"investigation_id": "inv_abc123",
"entity": {
"type": "domain",
"value": "nuevo-dominio-sospechoso.com"
},
"flow": "reconocimiento-completo"
}'
# Casos de uso con n8n:
# - Leer feeds de Threat Intelligence y añadir IoCs automáticamente
# - Monitorizar dominios similares al tuyo (typosquatting)
# - Alertar por Slack/email cuando se descubren nuevas IPs en un rango
# - Exportar el grafo a un informe PDF periódicamente
Casos de uso prácticos
Análisis de infraestructura de amenazas
Un analista SOC recibe un indicador de compromiso (IoC): la IP 198.51.100.42 aparece en logs de firewall. En Flowsint puede, en minutos, expandir ese nodo único hasta descubrir los dominios de C2 asociados, otros servidores del actor amenaza, campañas relacionadas y técnicas de evasión usadas (hosting bulletproof, rotación de IPs, etc.).
Investigación de phishing
Un equipo de respuesta a incidentes recibe reportes de un correo de phishing. Toman el dominio del remitente y lo insertan en Flowsint. El flujo automatizado descubre en qué infraestructura está alojado, qué otros dominios de phishing comparte servidor, si el certificado SSL fue emitido para otros dominios fraudulentos, y el historial de registros WHOIS del actor.
Investigación periodística
Un periodista investiga una red de empresas offshore. Introduce el nombre de un dominio web de una empresa sospechosa. Flowsint conecta el email del registrante con otros 14 dominios, todos asociados a empresas en distintos países que comparten la misma infraestructura de hosting — visualizando la red en un grafo imposible de descubrir manualmente en tiempo razonable.
Reconocimiento en red teaming
# Flujo típico en un ejercicio de red team autorizado:
# 1. Comenzar con el dominio del objetivo
entidad_inicial = "objetivo.com"
# 2. Flowsint descubre automáticamente:
# - Subdominios (incluyendo dev.objetivo.com, staging.objetivo.com)
# - Tecnologías expuestas (headers HTTP, banners de servicios)
# - Rangos IP de la organización (ASN mapping)
# - Empleados con cuentas en LinkedIn/GitHub/HackerNews
# - Repositorios públicos con código de la empresa
# - Emails corporativos expuestos en brechas de datos
# 3. Exportar grafo para el informe de reconocimiento
# 4. Identificar superficie de ataque y vectores potenciales
Comparativa con alternativas
Flowsint no es la única herramienta de OSINT basada en grafos, pero tiene ventajas claras frente a sus alternativas más conocidas:
┌──────────────┬───────────┬──────────────┬─────────────┬──────────────┐
│ Característica│ Flowsint │ Maltego │ OSINTBuddy │ SpiderFoot │
├──────────────┼───────────┼──────────────┼─────────────┼──────────────┤
│ Licencia │ AGPL-3.0 │ Comercial │ MIT/OSS │ MIT/OSS │
│ Precio │ Gratis │ $999+/año │ Gratis │ Gratis │
│ Visualización │ Grafo │ Grafo │ Grafo │ Web/tabla │
│ Local-first │ ✓ │ Parcial │ ✓ │ ✓ │
│ Enriquec. │ 30+ │ 300+ (pago) │ ~20 │ 200+ │
│ Flujos auto. │ ✓ │ ✓ │ Limitado │ ✓ │
│ API REST │ ✓ │ Parcial │ No │ ✓ │
│ Docker │ ✓ │ No │ ✓ │ ✓ │
│ Integración │ n8n/REST │ TDS │ No │ Limitada │
└──────────────┴───────────┴──────────────┴─────────────┴──────────────┘
La principal ventaja de Flowsint frente a Maltego (el estándar de la industria)
es el precio y la privacidad. Maltego envía consultas a sus servidores Transform
Distribution Server (TDS). Flowsint procesa todo localmente.
Consideraciones éticas y legales
OSINT es información pública, pero su recopilación automatizada puede tener implicaciones legales dependiendo de la jurisdicción y el objetivo. Antes de usar Flowsint en cualquier investigación, considera:
- Autorización explícita: En contextos corporativos o de seguridad, obtén siempre autorización escrita antes de investigar infraestructura de terceros.
- GDPR y leyes de privacidad: La recopilación y almacenamiento de datos personales (emails, nombres, perfiles) está regulada. El hecho de que Flowsint sea local no exime de cumplir la normativa.
- Términos de servicio: Algunas APIs externas (Shodan, LinkedIn, etc.) prohíben el scraping automatizado. Revisa sus ToS antes de usarlas como enriquecedores.
- Proporcionalidad: El propósito de la investigación debe ser legítimo y proporcional. Herramientas de OSINT no deben usarse para acoso, vigilancia no autorizada o discriminación.
- Documentación: En investigaciones forenses o periodísticas, documenta tu metodología, fuentes y timestamps para mantener la cadena de custodia.
Conclusión
Flowsint representa una solución madura y accesible para un problema real del trabajo de inteligencia: la fragmentación de datos entre herramientas aisladas. Su enfoque local-first garantiza privacidad, su arquitectura Docker elimina problemas de dependencias, y la visualización en grafos hace comprensibles redes de relaciones que serían imposibles de analizar en tablas.
Para equipos de ciberseguridad, analistas OSINT y periodistas investigadores que buscan una alternativa open source a Maltego, Flowsint es hoy la opción más completa. La curva de aprendizaje es baja para quien ya conoce conceptos de grafos, y la comunidad activa en GitHub garantiza evolución continua. Si trabajas con inteligencia digital, merece un lugar permanente en tu arsenal de herramientas.