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 사고 대응을 위한 포렌식 재구성 엔진

2161개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

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는 **순수한 뷰 레이어**입니다. 엔진 출력을 렌더링하고 분석가가 신뢰 기준(trust floor)을 이동할 수 있게 합니다. 자체적인 재구성 로직은 포함하지 않습니다.

---

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

각 단계는 [0, 1] 범위의 신뢰도를 가지며, **증거 확증(evidence corroboration)**을 통해 구축됩니다:```
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)
  • 검증됨 — 신뢰도 ≥ 0.70 그리고 두 개 이상의 독립 신호가 일치합니다.
  • 패턴 전용 — 신뢰 하한선보다 높지만 약하거나 단일 신호로만 뒷받침됩니다.
  • 보류됨 — 신뢰 하한선보다 낮습니다. 회색으로 표시되며, 절대 조용히 추측되거나 숨겨지지 않습니다.

경로 점수는 링크들을 기하 평균으로 합성하므로, 하나의 약한 링크는 평균에 묻혀 사라지는 대신 정직하게 경로를 끌어내립니다.

위의 모든 가중치 — 기법별 기준 비율, 신호별 보너스, 누락 패널티 — 는 nv/confidence.py의 단일 PARAMS 테이블에 들어 있습니다. 이것들은 NV의 v1 사전 확률이며, 보정 가능합니다: nv/calibration.py는 이들을 레이블된 실측 정답에 맞춰 재조정할 수 있고, 엔진은 결과를 로드하며, 보정이 제공되지 않으면 v1 사전 확률로 폴백합니다(아래 참조).

신뢰 하한선

보류 규칙은 엔진의 출력 계약에 내장되어 있습니다 — UI만이 아니라. 하한선 아래의 단계는 보류됩니다. 하한선을 조정하는 것은 정직성 대 커버리지 트레이드오프를 물리적으로 구현하는 것입니다: 올리면 엄격/고신뢰, 내리면 허용적/고커버리지. 기본 하한선은 분석가가 만지기 전에 NV가 어디에 위치할지에 대한 편집상의 결정입니다.


실측 정답에 대한 신뢰도 보정

v1 가중치는 방어 가능하지만, 이것은 사전 확률입니다. nv/calibration.py는 이들을 레이블된 실측 정답 — 어떤 이벤트가 침입의 일부였고 어떤 것이 정상이었는지 아는 이벤트들 — 에 맞춰 조정하며, 결정적으로 조정이 실제로 도움이 되었는지 측정합니다. 따라서 보정은 단순히 숫자를 이리저리 옮기는 것이 아니라 보정 오류를 낮추는 경우에만 채택됩니다.

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

  • 운영별 기준 비율 — 해당 운영에 대한 경험적 적중률로, 작은 표본이 과적합되지 않도록 v1 사전 확률 쪽으로 베이지안 축소된 값; 그리고
  • 신호별 보너스와 두 패널티 — v1 값 쪽으로 L2 당김(L2 pull)이 있는 제한된 좌표 하강법(bounded coordinate descent)으로 Brier 점수를 최소화합니다.

검증/보류 임계값은 정책이지 보정이 아니므로 그대로 둡니다.

이 도구는 보정 전후의 Brier 점수, log-loss, ECE, AUC, 신뢰도 테이블, 그리고 신뢰 하한선 스윕(각 하한선에서 실제 단계 재현율과 정상 이벤트 오탐률)을 보고합니다. 즉, 정직성 대 커버리지 트레이드오프가 단일 숫자가 아니라 명확히 읽을 수 있게 됩니다.```bash

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 실행에서 수집된 원격 계측(telemetry)이며, 통합 감사 로그를 공격 도구 자체의 활동 기록과 조인해 레이블을 붙입니다(도구가 유발한 모든 이벤트는 온체인(on-chain)에 있고, 그 외 모든 것은 정상 활동입니다 — `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는 인가 목록에 없는 환경(estate)에서는 실행을 거부합니다. 조사가 허용된 각 환경마다 `--authorize <tenant-domain>`을 사용하여 실행하세요.

- **패턴 소스 검증** (`nv/validation.py`) — 패턴은 (1) 신뢰할 수 있는 소스 허용 목록, (2) 콘텐츠 체크섬/변조 검사, (3) 스키마 정상성, (4) 유효한 ATT&CK 스타일 기술 ID를 모두 통과하지 않으면 라이브러리에 들어갈 수 없습니다. 승인된 모든 패턴은 감사 기록을 유지하고, 거부된 패턴은 이유와 함께 기록됩니다. 오염되거나 잘못된 형태의 피드는 거짓 재구성을 제조하기 전에 상류에서 차단됩니다. 이는 엔진이 증거에 적용하는 것과 동일한 회의주의를 패턴 자체로 옮긴 것입니다.

---

## 지식 최신성 유지 (공격자의 진화에 앞서 나가기)

재구성 엔진의 최신성은 패턴 라이브러리와, 라이브러리가 한 번도 본 적 없는 것을 처리하는 능력에 달려 있습니다. NV는 설계상 **두 개의 독립된 전선**에서 노후화 문제를 해결합니다:

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

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

- **MITRE ATT&CK (STIX)** — 권위 있는 테크닉 분류 체계입니다. 커넥터는 ATT&CK STIX 인덱스를 읽고 최신 enterprise 릴리스를 가져와 NV가 추론하는 모든 작업(operation)에 대한 권위 있는 테크닉 이름과 전술(tactic)을 갱신합니다 — ATT&CK가 이후 철회하거나 폐기한 테크닉은 제외합니다. NV는 작업→테크닉 바인딩과 기본 비율 사전(base-rate prior)의 소유권을 유지하고, ATT&CK는 분류 체계를 소유합니다.
- **TAXII 2.1을 통한 검증된 CTI** — 전체 discovery → api-root → collection → objects 클라이언트입니다. 검증된 CTI 컬렉션에서 STIX attack-pattern 객체를 가져와 NV가 추적하는 테크닉을 갱신합니다. ATT&CK보다 낮은 가중치를 가집니다.
- **Sigma 커뮤니티 규칙 세트** — git 아카이브로 가져옵니다. O365/Entra 작업을 명명하고 `attack.tXXXX` 태그를 포함하는 각 클라우드/아이덴티티 규칙은 작업→테크닉 후보가 되며, 기본 비율은 규칙 자체의 심각도 `level`에서 파생된 후 커뮤니티 소스 가중치로 축소됩니다. 매핑되지 않는 규칙은 이유와 함께 건너뛰며, 추측하지 않습니다.
도구 다운로드