
Un motor de reconstrucción forense para la respuesta a incidentes en la nube y de identidad.
Un motor de reconstrucción forense para respuesta a incidentes en la nube y de identidad.
Dado un conjunto fragmentado de telemetría de nube, SaaS e identidad — registros del plano de control, eventos de inicio de sesión, actividad de tokens y consentimientos — NV reconstruye cómo una intrusión probablemente se desplazó entre cuentas y servicios, enumera las demás rutas más probables que podría haber tomado, y reporta cada paso con una confianza calibrada y explicable. Se niega a afirmar lo que la evidencia no puede sustentar.
La detección te dice que algo ocurrió. Nimbus Vestige te dice cómo — y qué más.
Las intrusiones modernas no "irrumpen". Inician sesión. La identidad es ahora el principal vehículo de ataque, implicada en la gran mayoría de las investigaciones de IR en la nube, y la mayoría de las intrusiones abarcan múltiples superficies — identidad más nube más SaaS más endpoint. La telemetría que las registra está fragmentada e inconsistente, lo que ya obliga a los respondedores a reconstruir la historia a mano a partir de datos incompletos.
Esa reconstrucción manual es lenta, y falla de una manera predecible: el respondedor se ancla en la primera narrativa plausible y pasa por alto la real. NV automatiza la reconstrucción y ataca directamente ese modo de fallo al presentar siempre el espacio clasificado de rutas plausibles, no una única historia.
De manera crucial, NV hace esto con la honestidad como producto. El enemigo declarado del mercado es la confianza de caja negra — una herramienta que afirma una conclusión sin mostrar su trabajo. Cada número que produce NV es rastreable hasta la evidencia específica que lo ganó, y cualquier cosa que no pueda sustentar se retiene en lugar de adivinarse.
NV no es un detector, un escáner, un auditor ni un ejecutor de ataques. Esas herramientas te dicen que algo ocurrió y lo miden. NV trabaja hacia atrás — reconstrucción abductiva del mecanismo a partir de patrones, a través de un patrimonio de identidad fragmentado.
El equipo azul se regenera; el equipo rojo se mercantiliza. El instrumental ofensivo encuentra un conjunto finito y parcheable de agujeros y se está plegando hacia pipelines automatizados de seguridad CI/CD. Reconstruir cómo ocurrió una intrusión nunca se resuelve — los atacantes siguen inventando, así que la necesidad es permanente y autorrenovable.
El motor es independiente del sustrato. La lógica central — reconstruir el mecanismo a partir de patrones, con confianza calibrada y un riel de parada — está comprometida con nube/identidad primero, pero se porta a red, endpoint y OT más adelante. El objetivo puede cambiar sin reescribir la tesis.
La reconstrucción habilita el endurecimiento. Una vez que sabes cómo entraron — y qué otras puertas estaban abiertas — construyes las defensas. Las rutas no tomadas pero plausibles son un backlog de endurecimiento, a menudo más valioso que la reconstrucción misma, porque la mayoría de las brechas explotan exposición prevenible, no técnicas novedosas.
Se degrada con elegancia ante la intrusión novedosa — el incidente mismo que más importa. Un motor de firmas/reglas se queda ciego ante un zero-day; el núcleo abductivo de NV aún produce una ruta más probable, honestamente marcada como de menor confianza.
La honestidad es un foso. La confianza calibrada, basada en casos, con alternativas clasificadas es exactamente lo que el mercado dice querer y lo que los competidores de caja negra estructuralmente no pueden ofrecer sin rediseñarse.
Logs crudos del proveedor → grafo normalizado de eventos/entidades → motor de reconstrucción → JSON → GUI.
O365 / Entra audit logs nv_extract_identity_events.py
AWS CloudTrail (IAM/STS/S3) nv_extract_cloudtrail_events.py (ingest + normalize)
▼
normalized identity events (JSONL) ← one event model, any substrate
│ nv/graph.py (typed per-actor timelines)
▼
reconstruction engine
├─ nv/patterns.py known layer: ATT&CK identity pattern library
├─ nv/providers.py provider packs: per-substrate op→ATT&CK vocab (Entra + AWS)
├─ nv/validation.py Phase 3: provenance + integrity gate on every pattern
├─ nv/feeds.py live ATT&CK STIX / TAXII / Sigma clients + scheduler
├─ nv/confidence.py evidence-corroboration scorer (calibratable weights)
├─ nv/calibration.py fit + measure confidence against labeled ground truth
├─ nv/reconstruct.py most-likely chain + ranked competing paths + trust floor
└─ nv/scope.py authorized-scope gate (refuses unauthorized tenants/accounts)
│ run_nv.py
▼
reconstruction.json ──► nv_gui.html (embedding canvas + two-column view + trust slider)
La GUI es una capa de vista pura — renderiza la salida del motor y permite al analista mover el umbral de confianza. No contiene lógica de reconstrucción propia.
Cada paso lleva una confianza en [0, 1], construida mediante corroboración de evidencia:
confidence = per-technique base rate
+ bonus for each independent corroborating signal
(source IP, device, successful outcome, temporal adjacency, broad-consent flags)
− penalty for missing signals (e.g. no source IP to corroborate origin)
Las puntuaciones de las rutas componen sus eslabones mediante la media geométrica, de modo que un eslabón débil arrastra honestamente una ruta hacia abajo en lugar de quedar diluido en el promedio.
Cada peso anterior — las tasas base por técnica, las bonificaciones por señal, las penalizaciones por datos faltantes — reside en una única tabla PARAMS en nv/confidence.py. Esos son los priors v1 de NV, y son calibrables: nv/calibration.py puede reajustarlos contra una verdad de referencia etiquetada y el motor cargará el resultado, recurriendo a los priors v1 cuando no se proporcione calibración (véase más abajo).
La regla de retención, integrada en el contrato de salida del motor — no solo en la interfaz. Por debajo del umbral, un paso se retiene. Mover el umbral es el compromiso entre honestidad y cobertura hecho tangible: hacia arriba para estricto/alta confianza, hacia abajo para permisivo/alta cobertura. El umbral por defecto es una decisión editorial sobre dónde se sitúa NV antes de que el analista lo toque.
Los pesos v1 son defendibles, pero son priors. nv/calibration.py los ajusta contra una verdad de referencia etiquetada — eventos en los que sabemos cuáles formaron parte de la intrusión y cuáles fueron benignos — y, de forma crucial, mide si el ajuste realmente ayudó, de modo que una calibración solo se adopta si reduce el error de calibración en lugar de simplemente mover números de un lado a otro.