
Um mecanismo de reconstrução forense para resposta a incidentes em nuvem e identidade.
Um motor de reconstrução forense para resposta a incidentes em cloud e identidade.
Dado telemetria fragmentada de cloud, SaaS e identidade — logs de control-plane, eventos de início de sessão, atividade de tokens e consentimentos — o NV reconstrói como uma intrusão muito provavelmente se moveu entre contas e serviços, enumera os outros caminhos mais prováveis que poderia ter tomado, e reporta cada passo com confiança calibrada e explicável. Recusa-se a afirmar o que a evidência não consegue sustentar.
A deteção diz-lhe que algo aconteceu. O Nimbus Vestige diz-lhe como — e o que mais.
As intrusões modernas não "arrombam". Elas iniciam sessão. A identidade é agora o principal veículo de ataque, implicada na grande maioria das investigações de IR em cloud, e a maioria das intrusões abrange múltiplas superfícies — identidade mais cloud mais SaaS mais endpoint. A telemetria que as regista é fragmentada e inconsistente, o que já obriga os respondedores a reconstruir a história à mão a partir de dados incompletos.
Essa reconstrução manual é lenta, e falha de forma previsível: o respondedor ancora-se na primeira narrativa plausível e perde a real. O NV automatiza a reconstrução e ataca diretamente esse modo de falha ao apresentar sempre o espaço classificado de caminhos plausíveis, e não uma única história.
Crucialmente, o NV faz isto com honestidade como produto. O inimigo declarado do mercado é a confiança de caixa negra — uma ferramenta que afirma uma conclusão sem mostrar o seu trabalho. Cada número que o NV produz é rastreável à evidência específica que o justificou, e tudo o que não consegue sustentar é retido em vez de adivinhado.
O NV não é um detetor, um scanner, um auditor, nem um executor de ataques. Essas ferramentas dizem-lhe que algo aconteceu e medem-no. O NV trabalha para trás — reconstrução abdutiva do mecanismo a partir de padrões, através de um património de identidade fragmentado.
A blue team regenera-se; a red team mercantiliza-se. O ferramental ofensivo encontra um conjunto finito e corrigível de falhas e está a fundir-se em pipelines automatizados de segurança CI/CD. Reconstruir como uma intrusão aconteceu nunca se resolve — os atacantes continuam a inventar, pelo que a necessidade é permanente e autorrenovável.
O motor é independente do substrato. A lógica central — reconstruir o mecanismo a partir de padrões, com confiança calibrada e um travão de paragem — está comprometida primeiro com cloud/identidade, mas porta-se depois para rede, endpoint e OT. O alvo pode mudar sem reescrever a tese.
A reconstrução permite o endurecimento. Assim que sabe como entraram — e que outras portas estavam abertas — constrói as defesas. Os caminhos não tomados mas plausíveis são um backlog de endurecimento, muitas vezes mais valioso do que a própria reconstrução, porque a maioria das violações explora exposição evitável, não tradecraft inovadora.
Degrada graciosamente na intrusão inédita — o próprio incidente que mais importa. Um motor de assinaturas/regras fica cego perante um zero-day; o núcleo abdutivo do NV ainda produz um caminho mais provável, honestamente sinalizado como de menor confiança.
A honestidade é um fosso. Confiança calibrada e baseada em casos, com alternativas classificadas, é exatamente o que o mercado diz querer e o que os concorrentes de caixa negra estruturalmente não conseguem oferecer sem uma reformulação.
Logs brutos do fornecedor → grafo normalizado de eventos/entidades → motor de reconstrução → 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)
A GUI é uma camada de visualização pura — ela renderiza a saída do motor e permite que o analista mova o limite de confiança. Ela não contém lógica de reconstrução própria.
Cada etapa carrega uma confiança em [0, 1], construída por corroboração de evidências:
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)
As pontuações de caminho compõem seus elos por média geométrica, de modo que um elo fraco honestamente puxa um caminho para baixo em vez de ser diluído pela média.
Cada peso acima — as taxas-base por técnica, os bônus por sinal, as penalidades
por ausência — vive em uma única tabela PARAMS em nv/confidence.py. Esses são os
priors v1 do NV, e eles são calibráveis: nv/calibration.py pode reajustá-los contra
ground truth rotulado e o motor carregará o resultado, recorrendo aos priors v1 quando
nenhuma calibração for fornecida (veja abaixo).
A regra de retenção, incorporada ao contrato de saída do motor — não apenas à UI. Abaixo do piso, um passo é retido. Arrastar o piso é o tradeoff entre honestidade e cobertura tornado físico: para cima para estrito/alta confiança, para baixo para permissivo/alta cobertura. O piso padrão é uma decisão editorial sobre onde o NV se posiciona antes de o analista tocá-lo.
Os pesos v1 são defensáveis, mas são priors. nv/calibration.py os ajusta
contra ground truth rotulado — eventos em que sabemos quais foram parte da
intrusão e quais foram benignos — e, crucialmente, mede se o ajuste realmente
ajudou, de modo que uma calibração só é adotada se reduzir o erro de calibração em vez de apenas
mover números de um lado para o outro.
Confiança calibrada significa uma coisa: a confiança do NV para um passo deve ser igual à probabilidade de que o passo realmente estava no caminho do ataque. Assim, a confiança de cada evento rotulado é tratada como uma probabilidade prevista, e o harness ajusta: