Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Nimbus Vestige — 클라우드 및 ID 사고 대응을 위한 포렌식 재구성 엔진 | Kitploit
도구/GitLabGitLab/dobybaxter127/nimbus-vestige
ReconnaissanceDigital ForensicsPenetration TestingCloud SecurityThreat IntelligenceIdentity & Access Management (IAM)Learning & EducationIncident ResponseLog Analysis
GitLabdobybaxter127/nimbus-vestige

Nimbus Vestige

클라우드 및 ID 사고 대응을 위한 포렌식 재구성 엔진

2353일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

Nimbus Vestige (NV)

클라우드 및 아이덴티티 사고 대응을 위한 포렌식 재구성 엔진.

파편화된 클라우드, SaaS, 아이덴티티 텔레메트리 — 컨트롤 플레인 로그, 로그인 이벤트, 토큰 및 동의 활동 — 가 주어지면, NV는 침입이 계정과 서비스 전반에 걸쳐 가장 유력하게 어떻게 이동했는지 재구성하고, 침입이 취할 수 있었던 다른 유력 경로들을 열거하며, 모든 단계를 보정되고 설명 가능한 신뢰도와 함께 보고합니다. 증거가 뒷받침할 수 없는 것은 단정하기를 거부합니다.

탐지는 무언가가 일어났다는 사실을 알려줍니다. Nimbus Vestige는 어떻게 일어났는지 — 그리고 그 밖에 무엇이 있었는지를 알려줍니다.


존재 이유

현대의 침입은 "침입"하지 않습니다. 그들은 로그인합니다. 아이덴티티는 이제 주요 공격 수단이며, 대다수의 클라우드 IR 조사에 연루되어 있고, 대부분의 침입은 아이덴티티와 클라우드, SaaS, 엔드포인트 등 여러 표면에 걸쳐 있습니다. 이를 기록하는 텔레메트리는 파편화되고 일관성이 없어, 대응자들은 이미 불완전한 데이터로부터 사건의 이야기를 수작업으로 재구성해야 합니다.

이러한 수작업 재구성은 느리고, 예측 가능한 방식으로 실패합니다. 대응자가 첫 번째 그럴듯한 서사에 닻을 내리고 진짜 서사를 놓치는 것입니다. NV는 재구성을 자동화하고, 단일한 이야기가 아닌 그럴듯한 경로들의 순위가 매겨진 공간을 항상 제시함으로써 바로 그 실패 모드를 정면으로 공격합니다.

결정적으로, NV는 정직함을 제품으로 삼아 이를 수행합니다. 시장이 내세우는 적은 블랙박스 신뢰도 — 작업 과정을 보여주지 않고 결론을 단정하는 도구입니다. NV가 산출하는 모든 수치는 그것을 정당화한 특정 증거로 추적 가능하며, 뒷받침할 수 없는 것은 추측하는 대신 보류됩니다.


무엇이며, 무엇이 아닌가

NV는 탐지기, 스캐너, 감사기, 공격 실행기가 아닙니다. 그런 도구들은 무언가가 일어났다는 사실을 알려주고 그것을 측정합니다. NV는 파편화된 아이덴티티 자산 전반에 걸쳐 패턴으로부터 메커니즘을 귀추적으로 재구성하며 역방향으로 작동합니다.

  • 탐지기가 아님 — 활동에 대해 경보를 발생시키지 않고, 활동이 어떻게 맞물리는지 설명합니다.
  • SIEM이 아님 — 로그 플랫폼이 아니라 좁은 쐐기(사후 사건 서사 재구성)를 통해 진입합니다.
  • 규칙 엔진이 아님 — 알려진 패턴과 일치하는 것이 없을 때도 재구성하며, 눈이 멀어지는 대신 우아하게 성능이 저하됩니다.

장기적으로 유효한 이유

  1. 블루 팀은 재생성하고, 레드 팀은 상품화된다. 공격 도구는 유한하고 패치 가능한 취약점 집합을 찾아내며 자동화된 CI/CD 안전 파이프라인으로 흡수되고 있습니다. 침입이 어떻게 일어났는지 재구성하는 일은 결코 해결되지 않습니다. 공격자들은 계속 새로운 것을 만들어내므로, 그 필요는 영구적이고 스스로 갱신됩니다.

  2. 엔진은 기반에 독립적이다. 핵심 로직 — 보정된 신뢰도와 정지 레일을 갖춘, 패턴으로부터의 메커니즘 재구성 — 은 클라우드/아이덴티티에 우선적으로 집중되어 있지만, 이후 네트워크, 엔드포인트, OT로 이식됩니다. 논지를 다시 쓰지 않고도 대상은 바뀔 수 있습니다.

  3. 재구성은 강화를 가능하게 한다. 그들이 어떻게 들어왔는지 — 그리고 어떤 다른 문이 열려 있었는지 — 를 알게 되면, 방어를 구축합니다. 취해지지 않았지만 그럴듯한 경로들은 강화 백로그이며, 대부분의 침해가 새로운 공격 기법이 아니라 예방 가능한 노출을 악용하기 때문에 종종 재구성 자체보다 더 가치가 있습니다.

  4. 새로운 침입 — 가장 중요한 바로 그 사건 — 에서 우아하게 성능이 저하된다. 시그니처/규칙 엔진은 제로데이에서 눈이 멀어지지만, NV의 귀추적 코어는 여전히 가장 유력한 경로를 산출하며, 정직하게 더 낮은 신뢰도로 표시됩니다.

  5. 정직함은 해자다. 순위가 매겨진 대안과 함께하는 보정된 사례 기반 신뢰도는 시장이 원한다고 말하는 바로 그것이며, 블랙박스 경쟁자들이 재설계 없이는 구조적으로 제공할 수 없는 것입니다.


아키텍처

원시 공급자 로그 → 정규화된 이벤트/엔티티 그래프 → 재구성 엔진 → 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)

GUI는 순수 뷰 계층입니다 — 엔진 출력을 렌더링하고 분석가가 신뢰 하한선을 조정할 수 있게 해줍니다. 자체적인 재구성 로직은 포함하지 않습니다.


신뢰도 모델 (제품 전체의 신뢰성)

모든 단계는 [0, 1] 범위의 신뢰도를 가지며, 증거 상호 검증을 통해 산출됩니다:

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)
  • verified — 신뢰도 ≥ 0.70 그리고 두 개 이상의 독립적인 신호가 일치함.
  • pattern-only — 신뢰 하한선 위이지만 약하게 또는 단일하게 뒷받침됨.
  • withheld — 신뢰 하한선 아래; 회색으로 표시되며, 조용히 추측하거나 숨기지 않음.

경로 점수는 기하평균으로 링크를 구성하므로, 하나의 약한 링크는 평균에 묻히지 않고 정직하게 경로 전체를 끌어내린다.

위의 모든 가중치 — 기법별 기본 비율, 신호별 보너스, 누락 패널티 — 는 nv/confidence.py의 단일 PARAMS 테이블에 존재한다. 이는 NV의 v1 사전(prior)이며, 보정 가능하다: nv/calibration.py가 레이블이 지정된 정답(ground truth)에 대해 이를 재적합할 수 있고, 엔진은 그 결과를 로드하며, 보정이 제공되지 않으면 v1 사전으로 폴백한다(아래 참조).

신뢰 하한선

withhold 규칙은 UI만이 아니라 엔진의 출력 계약에 내장되어 있다. 하한선 아래에서는 단계가 보류된다. 하한선을 조정하는 것은 정직성 대 커버리지의 트레이드오프를 물리적으로 만드는 것이다: 엄격함/높은 신뢰를 위해 올리고, 관대함/높은 커버리지를 위해 내린다. 기본 하한선은 분석가가 손대기 전 NV가 어디에 위치하는지에 대한 편집적 결정이다.


정답에 대한 신뢰도 보정

v1 가중치는 방어 가능하지만 사전(prior)일 뿐이다. nv/calibration.py는 레이블이 지정된 정답 — 어떤 이벤트가 침입의 일부였고 어떤 것이 정상이었는지 알 수 있는 이벤트 — 에 대해 이를 조정하며, 결정적으로 조정이 실제로 도움이 되었는지를 측정하여, 단순히 숫자만 움직이는 것이 아니라 보정 오차를 낮출 때만 보정이 채택된다.

보정된 신뢰도는 한 가지를 의미한다: 단계에 대한 NV의 신뢰도는 그 단계가 실제로 공격 경로 상에 있었을 확률과 같아야 한다. 따라서 각 레이블 이벤트의 신뢰도는 예측 확률로 취급되며, 하네스는 다음을 적합한다:

  • 작업별 기본 비율 — 해당 작업의 경험적 적중률로, 작은 표본이 과적합되지 않도록 v1 사전 쪽으로 베이지안 축소됨; 그리고
  • 신호별 보너스와 두 가지 패널티 — v1 값 쪽으로 L2 끌어당김을 적용하여 Brier 점수를 최소화하는 경계 있는 좌표 하강법(coordinate descent)으로.

verified/withheld 임계값은 보정이 아니라 정책이며, 그대로 둔다.

이는 Brier 점수, 로그 손실(log-loss), ECE, AUC, 신뢰도 테이블(reliability table), 그리고 신뢰 하한선 스윕(각 하한선에서의 실제 단계 재현율 대 정상 오탐률)을 전후로 보고하므로, 정직성 대 커버리지의 트레이드오프가 단일 숫자가 아니라 읽을 수 있는 형태로 드러난다.

# calibrate against a real, labeled BadZure / MAAD-AF run
python3 calibrate.py --labeled run_labeled.jsonl --origin live \
    --run-label "badzure-2026-07 tenant-x" --out calibration.json

# demonstrate on the bundled documented-shape proxy corpus
python3 calibrate.py --out calibration.json

# run the engine on calibrated weights (opt-in; v1 priors are the default)
python3 run_nv.py events.jsonl out.json --authorize t.onmicrosoft.com \
    --calibration calibration.json

Ground truth 소스. 정직한 입력은 실제 테넌트에서 BadZure / MAAD-AF를 실행한 텔레메트리이며, 통합 감사 로그를 공격 도구 자체의 활동 기록과 조인하여 레이블링합니다(도구가 유발한 모든 이벤트는 온체인에 있고, 나머지는 모두 정상입니다 — nv/calibration.py의 LABELED_SCHEMA 참조). 실제 실행에 연결하기 전까지는 eval/calibration_cases.py가 문서화된 형태의 프록시 코퍼스를 제공하며, 여기서 적합된 모든 아티팩트는 출처에 source="proxy"가 찍혀 프록시 적합이 라이브 적합으로 오인될 수 없습니다. calibration.proxy.json이 바로 그 번들 프록시 아티팩트입니다.

번들 프록시 코퍼스에서 적합 결과는 명확한 개선입니다 — Brier 0.398 → 0.045, ECE 0.576 → 0.081, AUC 0.81 → 0.91이며, 0.60 하한에서의 정상 오탐률은 0.69에서 0.00으로 급감합니다(v1 사전 확률은 정상 활동에 대해 심하게 과신하고 있었습니다). 프록시는 의도적으로 보수적이며, 실제로 배포해야 할 가중치는 라이브 테넌트 실행에서 나옵니다.

신뢰 무결성 (Phase 3)

두 가지 일급 제어가 재구성을 잘못된 입력으로부터 보호합니다:

  • 권한 범위 게이트 (nv/scope.py) — NV는 승인 목록에 없는 어떤 에스테이트에서도 실행을 거부합니다. 조사가 허용된 각 에스테이트마다 --authorize <tenant-domain>으로 실행하십시오. 게이트가 어떤 에스테이트에도 배치할 수 없는 행(도메인도 테넌트도 계정도 없는 행위자)도 범위 내에 있음을 입증할 수 없으므로 거부됩니다. 해당 행을 조사할 권한이 있는 경우에만 --allow-unscoped를 전달하십시오. 그래도 출력에는 계속 집계됩니다.

  • 패턴 소스 검증 (nv/validation.py) — 어떤 패턴도 다음을 통과하지 않고는 라이브러리에 들어가지 않습니다: (1) 신뢰 소스 허용 목록, (2) 필수 콘텐츠 체크섬, (3) 스키마 정형성, (4) 유효한 ATT&CK 스타일 기법 id. 허용된 모든 패턴은 감사 기록을 유지하며, 거부는 사유와 함께 기록됩니다. 잘못되었거나 정책을 벗어난 피드 항목은 거짓 재구성을 만들어내기 전에 업스트림에서 차단됩니다. 이는 엔진이 증거에 적용하는 것과 동일한 회의주의를 패턴 자체로 옮긴 것입니다.

    체크섬은 일관성 검사입니다: 패턴이 구축될 때 패턴 자체의 콘텐츠로부터 계산되므로, 이후에 변경된 콘텐츠(편집된 캐시나 커밋된 라이브러리 파일)를 잡아냅니다. 소스에서 오염된 피드는 잡아낼 수 없습니다. 이를 위해서는 신뢰하는 피드 페이로드의 원시 sha256을 update_feeds.py --pin URL=SHA256으로 고정하십시오. 그러면 해당 URL의 다른 페이로드는 검증 전에 거부됩니다.


지식의 최신성 유지 (공격자 진화보다 앞서가기)

재구성 엔진은 패턴 라이브러리와, 라이브러리가 한 번도 본 적 없는 것을 처리하는 능력만큼만 최신입니다. NV는 설계상 두 개의 독립적인 전선에서 진부화를 해결합니다:

1. 알려진 계층은 검증된 업데이트 파이프라인을 통해 최신 상태를 유지합니다

라이브러리는 하드코딩되지 않습니다 — nv/patterns.py는 (내장 세트를 포함한) 모든 패턴을 nv/validation.py를 통해 로드하므로, 외부 피드도 동일한 신뢰 경로로 들어옵니다. 이러한 피드를 일정에 따라 가져오는 라이브 네트워크 클라이언트는 nv/feeds.py에 구현되어 있으며 update_feeds.py로 구동됩니다. 신뢰 등급별 소스는 다음과 같습니다:

도구 다운로드