Threat Intelligence
El agente ReAct
El corazon de la threat intelligence es un agente ReAct (Reasoning + Acting) implementado con LangGraph. A diferencia de pipelines fijos, el agente:
- Razona sobre el tipo de IOC y decide que herramientas usar
- Ejecuta las herramientas seleccionadas
- Observa los resultados
- Razona de nuevo sobre lo que encontro
- Repite hasta tener suficiente informacion para escribir la evaluacion
Ejemplo de razonamiento interno
Para 185.220.101.34:
Pensamiento: Es una IP. Debo consultar VirusTotal para reputacion,AbuseIPDB para reportes de abuso, Shodan para servicios expuestos,AlienVault para pulsos de amenaza, e IPInfo para geolocalización.
Accion: virustotal_ip_lookup("185.220.101.34")Observacion: 87 detecciones AV, clasificado como "TOR exit node"
Pensamiento: Alta deteccion. Shodan puede revelar mas sobre los servicios.Accion: shodan_host_lookup("185.220.101.34")Observacion: Puerto 9001 abierto (Tor relay), 9030 (Tor directory)
Pensamiento: Confirmado como nodo Tor. Riesgo alto. Voy a verificarlos dominios asociados para hacer pivot...Seleccion automatica de herramientas
El agente selecciona herramientas basandose en el tipo de IOC detectado:
| Tipo IOC | Herramientas primarias | Herramientas secundarias |
|---|---|---|
| IP | VirusTotal, AbuseIPDB, Shodan, AlienVault, IPInfo | Threat Feeds, History |
| Dominio | VirusTotal, WHOIS, DNS, crt.sh, AlienVault | URLScan, Threat Feeds |
| URL | URLScan, VirusTotal, DNS | Threat Feeds |
| Hash | VirusTotal | History |
| Consulta contextual | GDELT, RSS, ACLED, Country Risk | Financial, AIS |
Auto-pivot
Cuando una herramienta devuelve IOCs relacionados, el agente los extrae y los investiga automaticamente:
IP 185.220.101.34 ↓ VirusTotal devuelve dominios asociados ├─ evil-c2.example.com → investiga └─ malware-host.net → investiga ↓ WHOIS devuelve email del registrant └─ attacker@protonmail.com → nota para informeParametros configurables:
MAX_PIVOTS=2 # Profundidad maxima de pivot (default: 2)Risk Dashboard
El sistema de puntuacion agrega senales de multiples fuentes en un score compuesto 0-100:
| Score | Nivel | Color | Significado |
|---|---|---|---|
| 0-20 | LIMPIO | Verde | Sin indicios de actividad maliciosa |
| 21-40 | BAJO | Amarillo | Indicios menores, monitorizar |
| 41-60 | MEDIO | Naranja | Actividad sospechosa, investigar |
| 61-80 | ALTO | Rojo claro | Alta probabilidad de malicia |
| 81-100 | CRITICO | Rojo | Malicioso con alta confianza |
Factores que contribuyen al score
- Detecciones AV en VirusTotal (peso alto)
- Score de abuso en AbuseIPDB (peso alto)
- Presencia en threat feeds (peso muy alto)
- Pulsos en AlienVault OTX (peso medio)
- Puertos/servicios sospechosos en Shodan (peso medio)
- Historial en investigaciones previas (peso bajo)
Cache inteligente
Para evitar llamadas redundantes a las APIs (especialmente con rate limits), todos los resultados se cachean en SQLite:
CACHE_TTL_SECONDS=86400 # 24 horas (default)El cache es transparente — las herramientas comprueban primero el cache antes de hacer la llamada real. Puedes ver el estado del cache con:
osint> /cache statsFeeds de amenazas en vivo
El agente puede analizar IOCs directamente desde feeds:
| Feed | Que contiene | Comando |
|---|---|---|
| Feodo Tracker | IPs de C2 de botnets activas | --feed feodo |
| URLhaus | URLs distribuyendo malware | --feed urlhaus |
| IPsum | IPs maliciosas por numero de fuentes | --feed ipsum |
| C2IntelFeeds | Infraestructura C2 conocida | --feed c2intel |
osint-agent --feed feodo --limit 5 # Investiga las 5 IPs C2 mas recientesosint-agent --feed urlhaus --limit 3 # Investiga las 3 URLs de malware mas recientesInformes de threat intelligence
Tras una sesion de investigacion, genera un informe Markdown con:
- Resumen ejecutivo: principales hallazgos en pocas frases
- Evaluaciones por IOC: analisis detallado de cada indicador
- Dashboard de riesgo: tabla con todos los IOCs y sus scores
- Timeline: orden cronologico de los eventos investigados
- Recomendaciones: acciones sugeridas basadas en los hallazgos
osint> /report save# → reports/osint-report-2026-03-07-143022.md