Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
NoiseHound — 탐지 인지형 BloodHound 공격 경로 점수 산정 - 감사/EDR/SIEM 계층에 걸쳐 보정된 목표 도달의 가장 은밀한 경로를 찾습니다. | Kitploit
도구/GitHubGitHub/warpedatom/noisehound
Defensive ToolsPrivilege EscalationLateral MovementPost-ExploitationPenetration TestingRed TeamingAdversarial Attack
GitHubwarpedatom/noisehound

NoiseHound

탐지 인지형 BloodHound 공격 경로 점수 산정 - 감사/EDR/SIEM 계층에 걸쳐 보정된 목표 도달의 가장 은밀한 경로를 찾습니다.

저장소 보기
5389일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

NoiseHound

NoiseHound

PyPI Release License Python 3.10+ CI Security policy X (Twitter): @warped_atom

탐지를 고려한 Active Directory 공격 경로 점수화. DreadHost Research | OffsetInspect(PowerShell) 및 OffsetScan(Rust)의 동반 도구

BloodHound(그리고 그 위의 PlumHound)는 목표에 도달하는 하나의 경로를 찾습니다. NoiseHound는 동일한 그래프 데이터를 받아 홉 수 대신 예상 탐지 비용으로 경로를 다시 순위화하므로, 운영자는 단순히 "경로가 무엇인가"가 아니라 "Domain Admin으로 가는 가장 조용한 방법은 무엇인가"를 물을 수 있습니다.

처음이신가요? 운영자 워크스루부터 시작하세요 — 설치부터 라이브 BloodHound CE 개념 증명(점수가 BloodHound UI에 다시 기록됨), DeadAir 엔진, 블루팀 탐지 공백 보고서까지 안내하는 실습형 스크린샷 기반 튜토리얼입니다.

프로젝트 상태(v1.0): 안정적이며 여러 도메인의 실제 BloodHound 데이터로 테스트되었습니다. 코퍼스 엣지 57개 중 30개가 현재 실험실 측정 완료 — 네 가지 탐지 계층(감사, Defender for Endpoint, Elastic SIEM, MDI 포스처)에 걸쳐 있으며, profiles/에서 드롭인 프로필로 제공됩니다. 이 프로필이 경로 순위를 변경한다는 폐루프 증명도 포함됩니다 (docs/VALIDATION.md). 나머지 ~28개 엣지에는 여전히 전문가 추정치가 적용됩니다. 보정 하네스(noisehound-calibrate, docs/CALIBRATION.md)를 통해 이들 및 자체 환경이 측정됩니다. 보정되지 않은 순위는 잘 근거한 지침으로 간주하되, 절대적 진실로 취급하지 마십시오.

승인된 작업에만 사용하세요. 이 도구는 테스트에 대한 서면 허가를 받은 시스템을 대상으로 OPSEC 계획을 위해 공격 경로를 점수화합니다.

NoiseHound는 독립적인 커뮤니티 프로젝트입니다. SpecterOps나 BloodHound 프로젝트와 제휴, 보증, 관련이 없으며 BloodHound의 공개 데이터 형식을 사용합니다.


작동 방식

  1. 수집: BloodHound CE 내보내기(.zip), 원시 JSON 파일, 또는 내보내기 디렉터리를 내부 그래프로 가져옵니다. 정규화된 {nodes, edges} JSON 형식도 오프라인 분석 및 테스트에 허용됩니다. AD CS ESC1-8 에스컬레이션 엣지는 로드 시 BloodHound가 수집하는 인증서 템플릿 및 CA 사실로부터 합성됩니다(아래 참조).
  2. 주석화: 엣지 텔레메트리 코퍼스의 모든 엣지에 effective_noise_score(0-100)를 첨부합니다. 여러 권한이 동일한 노드 쌍을 연결하는 경우 가장 조용한 것이 선택됩니다. 코퍼스에 없는 엣지 유형은 보수적 점수(60)로 기본 설정되어, 과소 보고보다 안전하게 실패합니다. 선택적 환경 프로필은 대상의 선언된 탐지 포스처에 따라 점수를 조정합니다(아래 참조).
  3. 해결: 가장 조용한 경로를 찾습니다. 경로 점수는 병목(bottleneck) + 평균(단순 합이 아님)이므로 Dijkstra로 직접 최적화할 수 없습니다. 솔버는 임계값 스윕(각 고유 소음 수준에 대해 해당 수준을 유지하는 가장 조용한 경로)과 제한된 k-최단 가중치 통과를 결합한 다음 실제 경로 점수로 통합 결과를 다시 순위화합니다. 임계값 스윕은 정확성 백스톱 역할을 합니다. 즉, 순수 합산 가중치 검색이 짧지만 시끄러운 경로보다 아래에 둘 길지만 균일하게 조용한 경로를 표면화합니다.
  4. 보고: 텍스트, JSON(OffsetInspect 결과 스키마와 상호 운용 가능), 또는 도구 세트와 일치하도록 스타일링된 자체 포함 HTML 보고서로 보고합니다.

경로 점수화

경로 소음은 의도적으로 단순 합이 아닙니다. 동일한 탐지를 두 번 트리거하는 것이 두 배로 시끄럽지는 않습니다(SOC 트리아지이지 원시 이벤트 수가 아님). NoiseHound는 다음을 사용합니다:``` path_score = max(edge_scores) * 0.6 + mean(edge_scores) * 0.4

root@kitploit:~
이 가중치는 가장 노이즈가 큰 단일 단계(실수 하나가 종종 작전 전체를 태워버리는)에 치중하면서도 누적 노출은 여전히 반영합니다. 가중치는 구성 가능하며(`--max-weight` / `--mean-weight`) 실제 APT29/Caldera 랩에서 탐지 데이터가 확보되면 경험적으로 튜닝할 수 있습니다.

모든 경로는 또한 **탐지 확률**을 보고합니다. 이는 상관 경보를 발생시킬 확률로, 가장 노이즈가 큰 에지와 모든 에지의 누적 noisy-OR를 혼합합니다(`--correlation`으로 튜닝). 이는 노이즈 점수와는 다른 질문에 답합니다. 짧지만 노이즈가 큰 경로는 길지만 조용한 경로보다 전반적으로 적발될 확률이 *더 낮을* 수 있습니다. `--rank-by probability`를 사용하여 이 기준으로 정렬합니다.

### 2계층 엔진 (DeadAir)

대규모 그래프의 경우 솔루션은 [DeadAir](https://github.com/warpedatom/DeadAir)로 디스패치됩니다. 이는 동반 Rust 엔진(OffsetScan-to-OffsetInspect 계층)입니다. NoiseHound는 기능이 풍부한 프런트엔드로 유지됩니다 - 수집, 코퍼스, 환경/Sigma, 제약 조건, 보고 - 그리고 준비된 그래프를 해당 그래프를 푸는 엔진에 전달하므로 결과는 어느 쪽이든 동일합니다.

- `--engine auto` (기본값): 바이너리가 발견되고 *그리고* 그래프가 큰 경우(>= 5000 노드) DeadAir 사용; 그 외에는 내장 Python 솔버 사용.
- `--engine python`: 내장 솔버 강제 사용(바이너리 불필요).
- `--engine rust`: DeadAir 강제 사용(바이너리가 없으면 오류).

DeadAir는 `$NOISEHOUND_DEADAIR`, 그다음 `PATH`, 그다음 같은 레벨의 `../deadair/target/{release,debug}/` 빌드에서 찾습니다. 대규모 그래프에서 10-100배 더 빠르며(250k 노드 그래프는 Python에서 ~30초 vs ~2초로 해결), 바이트 단위로 동일한 순위를 생성합니다. 출력에는 어느 엔진이 실행되었는지 기록됩니다.

### 다중 목표 및 제약 경로 탐색

노이즈, 홉 수, 탐지 확률은 서로 다른 방향으로 작용하므로 `--pareto`는 단일 승자를 강제하는 대신 **파레토 프론티어** - 다른 어떤 경로도 동시에 세 가지 모두에서 능가하지 못하는 모든 경로 - 를 반환합니다. 그리고 실제 작전에는 제약 조건이 있습니다: `--avoid NODE`는 특정 호스트(EDR 모니터링 점프 박스, 허니팟)를 경로에서 제외하고, `--avoid-edge TYPE`는 특정 기법을 거부합니다(예: `--avoid-edge DCSync`). 둘 다 반복 가능하며 즉시 재해결합니다.```bash
python -m noisehound -i export.zip -s jdoe -o "Domain Admins" --pareto
python -m noisehound -i export.zip -s jdoe -o "Domain Admins" --avoid FILESERVER01 --avoid-edge HasSession

NoiseHound 비교

가중치 기반 BloodHound 경로 찾기는 새로운 것이 아니므로, 여기에 솔직한 입장을 정리합니다:

  • BloodHound / BloodHound CE는 가중치가 없는 홉 수로 하나의 경로를 찾습니다. 노이즈 모델이 없습니다.
  • GoodHound는 엣지 비용을 할당하고 가장 저렴한 경로를 찾지만, 비용 모델은 탐지 노이즈가 아니라 악용 난이도와 비즈니스 위험입니다.
  • PlumHound / ImproHound는 보고 및 계층 위반 분석을 수행합니다. 둘 다 목표까지 가장 조용한 경로를 다시 계산하지 않습니다.
  • 탐지 매핑(Sigma, DeTT&CT, event-ID-to-ATT&CK 참조)은 풍부하지만 사람 중심적이며 BloodHound 엣지 종류에 맞춰져 있지 않습니다.

NoiseHound의 기여는 다음의 결합입니다: 기계가 읽을 수 있는 BloodHound-엣지-대-탐지-텔레메트리 코퍼스, 운영자 OPSEC("DA까지 가장 조용한 방법")으로 구성된 노이즈 가중치 기반 재계산, 대상이 선언한 보안 태세에 적응하는 환경 모델, 그리고 실험실 탐지를 측정된 점수로 전환하는 보정 루프입니다. 그래프 수학은 일반적인 것이며, 핵심은 코퍼스와 프레이밍입니다. 그 가치는 코퍼스만큼만 좋으므로, 보정과 커뮤니티 기여가 최우선입니다 - 아래 참조.

설치```bash

cd NoiseHound python -m pip install -r requirements.txt # networkx>=3.0

optional editable install to get the noisehound command on PATH:

python -m pip install -e .

root@kitploit:~
Python 3.10+가 필요합니다.

## 사용법```bash
# Text summary (default)
python -m noisehound --input export.zip --objective "Domain Admins" --source jdoe

# JSON, for downstream tooling / correlation across the DreadHost suite
python -m noisehound -i export.zip -o "Domain Admins" -s jdoe -f json --out paths.json

# Self-contained HTML report
python -m noisehound -i export.zip -o "Domain Admins" -s jdoe -f html --out report.html

먼저, 내보낸 데이터에서 파서를 sanity-check하세요(히스토그램 + 코퍼스 커버리지, 경로 분석 없음) - 실제 데이터에서 NoiseHound를 검증하는 가장 빠른 방법입니다:```bash noisehound-inspect -i export.zip

root@kitploit:~
### 실시간 BloodHound CE / Neo4j

zip 대신, `--input`을 BloodHound CE가 채우는 Neo4j 데이터베이스로 지정하고
NoiseHound는 (이미 분석된) 그래프를 Bolt를 통해 직접 읽습니다:```bash
pip install 'noisehound[neo4j]'
export NEO4J_PASSWORD=bloodhoundcommunityedition   # match your BHCE compose
noisehound-inspect -i bolt://localhost:7687
python -m noisehound -i bolt://localhost:7687 -s jdoe -o "Domain Admins"

공식 compose로 BloodHound CE(7687 포트에서 Neo4j 번들 포함)를 실행하세요: curl -L https://ghst.ly/getbhce | docker compose -f - up.

번들 샘플을 대상으로 테스트해 보세요:```bash python -m noisehound -i samples/sample_graph.json -s jdoe -o "Domain Admins" -d CONTOSO.LOCAL python -m noisehound -i samples/sample_bloodhound_ce.zip -s jdoe -o "Domain Admins" python -m noisehound -i samples/sample_adcs_ce.zip -s jdoe -o "Domain Admins" # ADCS ESC1

Full-spectrum export exercising every edge family (sessions, delegation, DCSync, ADCS, trusts):

python -m noisehound -i samples/sample_fullspectrum_ce.zip -s ALICE -o "Domain Admins" -d CONTOSO.LOCAL -k 3

root@kitploit:~
마지막 예시가 이 논지를 가장 명확하게 보여줍니다. Domain Admins로 가는 가장 조용한 경로는 4홉 세션 경로로, 3홉 RDP 경로와 1홉 ADCS ESC1보다 *위에* 순위가 매겨집니다. 홉이 가장 많지만 노이즈는 가장 적습니다.

이 샘플은 핵심 가치를 보여줍니다. 가장 조용한 경로는 4홉 세션 경로(점수 19.9)로, 2홉 ForceChangePassword 지름길(36.4)보다 *위에* 순위가 매겨집니다. 홉이 적다고 해서 더 조용한 것은 아닙니다.

### 블루팀 탐지 공백 모드

가장 조용한 경로는 탐지가 가장 취약한 곳이므로, 방어자를 위해 출력을 뒤집으려면 `--defensive`를 추가하세요. 이 모드는 텔레메트리가 꺼져 있거나 아예 없어서 조용할 뿐인 엣지를 표시하고, 각 엣지를 이를 포착할 통제 항목에 매핑하며, 가장 조용한 경로 점수를 얼마나 높이는지에 따라 해당 통제 항목들의 순위를 매깁니다.```bash
python -m noisehound -i export.zip -s jdoe -o "Domain Admins" --defensive

전체 스펙트럼 샘플에서 도메인 관리자(Domain Admins)에 이르는 가장 조용한 경로가 탐지되지 않는 LSASS 액세스(HasSession, 계측 시 20 -> 65)에 달려 있으며, Sysmon 이벤트 10 배포를 권장합니다. 그 하나의 격차를 해소하면 가장 조용한 경로가 19.9에서 48.4로 올라갑니다. 이 모델과 나머지가 어디로 향하는지는 docs/ROADMAP.md를 참조하세요.

주요 옵션


환경 프로필

정적 코퍼스 점수만으로는 주어진 대상에 4662 개체 감사가 켜져 있는지, Sysmon이 포함되는지, MDI 같은 ITDR을 실행하는지 알 수 없지만, 그러한 요소들은 엣지의 실제 노이즈를 크게 바꿉니다 (DCSync는 4662 감사가 없으면 거의 무음이며, 있으면 거의 확실히 탐지됩니다). 모든 환경에 하나의 숫자가 맞는다고 가장하는 대신, 대상의 포스처를 작은 JSON 파일로 선언하면 NoiseHound가 코퍼스 자체의 텔레메트리 주석을 기준으로 점수를 투명하게 조정합니다:```json { "name": "CONTOSO.LOCAL-prod", "object_auditing_4662": true, "ds_change_auditing_5136": false, "edr": "MDI", "sysmon": true, "powershell_logging_4104": true, "adjustments": { "HasSession": 65 } }

root@kitploit:~
조정은 항상 선언된 태세가 암시하는 탐지 하한선을 향해 점수를 *높일*
뿐입니다. `adjustments`는 엣지별 하드 오버라이드로, 자체 랩에 맞게
보정한 값을 기록하는 곳입니다. 이는 운영자가 제공하는 값이지 측정값이
아니며, Phase 2 실시간 검증을 대체하지는 않지만 정적 코퍼스를
"모든 환경을 위한 단일 숫자"에서 "실제로 처한 환경을 위한 숫자"로
바꿔 줍니다. 번들 샘플에서 위 프로필을 선언하면 가장 조용한 경로가
LSASS-dump 세션 경로에서 디렉터리 쓰기 경로로 전환됩니다.
이는 호스트 텔레메트리가 활성화된 상태에서 올바른 선택입니다.```bash
python -m noisehound -i samples/sample_graph.json -s jdoe -o "Domain Admins" \
    -e samples/env_profile.example.json

점수 우선순위: static -> environment-adjusted -> live (Phase 2).


교정 하네스

환경 프로필은 그 안에 넣는 수치만큼만 신뢰할 수 있습니다. noisehound-calibrate는 루프를 닫습니다: 탐지 랩에서 기법을 실행하고, 탐지된 항목을 기록하면 보정된 환경 프로필을 출력합니다.

이 작업은 이미 수행되었습니다. profiles/ 디렉터리는 실제 Hyper-V Vulnerable-AD 랩에서 측정된 세 가지 프로필을 제공합니다 - audit, EDR(Defender for Endpoint), Elastic SIEM 계층, 30개 엣지 - 자동화된 하네스(lab/)와 이 도구로 생성되었습니다. 직접 사용하거나 직접 측정하세요:```bash

Use a shipped measured profile:

noisehound -i export.zip -s jdoe -o "Domain Admins" -e profiles/vulnad-hyperv-audit.json

Or measure your own lab:

1. noisehound-calibrate --plan -o plan.json (per-edge detection events)

2. lab/Invoke-NoiseHoundCalibration.ps1 (run + auto-count -> lab_detections.json)

noisehound-calibrate -i lab_detections.json -o env.calibrated.json noisehound -i export.zip -s jdoe -o "Domain Admins" -e env.calibrated.json

root@kitploit:~
The score model is a shrinkage estimator, honest about sample size:```
p          = detections / runs                       (detection probability)
lab_score  = p * severity_loudness + (1 - p) * residual
w          = runs / (runs + smoothing)               (confidence in the lab)
calibrated = w * lab_score + (1 - w) * corpus_static

lab_score는 예상 탐지 비용입니다 - 실행될 때의 SOC 심각도와, 실행되지 않을 때의 작은 잔차입니다. 가중치 w는 단일 실행이 말뭉치를 덮어쓰지 않도록 하면서, 충분히 샘플링된 결과가 우세하게 만듭니다. 예를 들어 HasSession은 고정된 20에서 52로 상승하고(랩이 5회 중 4회에서 LSASS 덤프를 포착함) Kerberoast는 60에서 34로 떨어집니다(전혀 실행되지 않음). --merge existing.json을 사용하여 태세 플래그를 유지하면서 프로필에 새 보정을 오버레이하고, --smoothing / --residual로 모델을 조정하세요.


배포된 탐지에 대한 점수 산정 (Sigma)

환경 프로필과 보정은 자체 선언됩니다. noisehound-sigma는 방어자가 실제로 작성한 탐지 규칙을 기준으로 점수를 매깁니다. Sigma 규칙 집합을 지정하면 각 규칙이 어떤 코퍼스 엣지에서 실행될지 계산하고 (엣지의 텔레메트리 이벤트 ID 및 ATT&CK 기술과 일치), 그런 다음 적용된 엣지를 높이는 환경 프로필을 생성합니다 - --environment의 드롭인 대체재입니다.```bash noisehound-sigma -r ./sigma-rules/ -o env.sigma.json python -m noisehound -i export.zip -s jdoe -o "Domain Admins" -e env.sigma.json --defensive

root@kitploit:~
매칭은 의도적으로 보수적이어서 결코 간극을 숨기지 않습니다. 규칙이 카운트되려면 에지가 생성하는 이벤트 ID를 참조해야 하며, *또한* 규칙에 ATT&CK 태그가 있는 경우 기법이 일치해야 합니다. 따라서 DS-Access(4662) DCSync 규칙이 이벤트 ID만 공유하는 LAPS 읽기를 커버하는 것으로 잘못 인정되지 않습니다. 보고서는 규칙이 커버하는 것과, 더 유용하게는 어떤 규칙도 커버하지 않는 공격 에지를 모두 나열합니다. `--defensive`와 결합하면 "내가 배포한 탐지 기준으로, 가장 조용한 공격 경로가 여전히 보이지 않는 곳은 어디인가?"라는 질문에 답할 수 있습니다.

---

## AD CS ESC1-8

로드 시 NoiseHound는 BloodHound의 ADCS 사후 처리를 집중적으로 수행하여 보존된 템플릿/CA 사실로부터 승격 에지를 합성합니다. 취약한 템플릿에 대한 `Enroll` 권한은 보안 주체에서 도메인의 Domain Admins 그룹(RID 512)으로의 직접적인 `ADCSESCn` 에지가 되어, 인증서 승격은 다른 에지와 마찬가지로 경로 탐색 및 점수화가 가능합니다:

| 에지 | 조건 |
|------|-----------|
| `ADCSESC1` | 등록자 제공 주체(subject) + 클라이언트 인증 EKU, 승인/RA 서명 없음 |
| `ADCSESC2` | 모든 용도(Any-Purpose) / SubCA EKU, 승인 없음 |
| `ADCSESC3` | 등록 에이전트 템플릿 + 동일 CA의 인증 템플릿 |
| `ADCSESC4` | 게시된 템플릿에 대한 위험한 쓰기 제어 |
| `ADCSESC5` | CA 개체 또는 이를 호스팅하는 컴퓨터에 대한 제어 |
| `ADCSESC6` | CA에 `EDITF_ATTRIBUTESUBJECTALTNAME2` 설정됨 |
| `ADCSESC7` | CA에 대한 `ManageCA` / `ManageCertificates` |
| `ADCSESC8` | 취약한 HTTP 웹 등록 엔드포인트(강제(coerce) + NTLM 릴레이) |

사용해 보기: `python -m noisehound -i samples/sample_adcs_ce.zip -s jdoe -o "Domain Admins"`.

문서화된 단순화(더 많은 경로를 표시하는 방향으로 안전하게 실패합니다): CA 수준 등록 제한은 모델링되지 않습니다(템플릿 등록이 충분한 것으로 처리됨). ESC5는 CA 개체와 해당 호스트를 커버하며 모든 PKI 컨테이너는 아닙니다. ESC9/10/13은 범위를 벗어납니다. 사후 처리된 내보내기에 이미 존재하는 합성 ESC 에지는 보존됩니다.

---

## 코퍼스(`edge_mappings/`)

에지-텔레메트리 코퍼스는 이 도구의 실질적인 핵심입니다. 코드는 그 위에서 작동하는 비교적 단순한 그래프 수학입니다. 각 `edge_mappings/<Edge>.json`은 BloodHound 에지 유형을 탐지 표면에 매핑합니다:

- 예상 텔레메트리 소스(Windows 보안 이벤트 ID, Sysmon 이벤트 ID, 네트워크, EDR/ITDR 휴리스틱)와 소스별 신뢰도 및 관련 감사가 기본적으로 활성화되어 있는지 여부
- 정적 노이즈 점수(0-100)
- MITRE 기법, 사전 요구 권한, 일반적인 남용 프리미티브 및 참고 사항```json
{
  "edge_type": "DCSync",
  "static_noise_score": 85,
  "telemetry": [
    {"source": "windows_security", "event_id": 4662,
     "detail": "Directory Service Access - requires object auditing (default OFF)",
     "reliability": "high_if_auditing_enabled", "default_enabled": false},
    {"source": "edr_heuristic", "product_class": "MDI",
     "detail": "Non-DC hosts issuing DRSGetNCChanges - high fidelity",
     "reliability": "high"}
  ],
  "mitre_technique": "T1003.006",
  "notes": "Assumes default audit policy (mostly OFF) but high EDR/MDI coverage."
}

코퍼스를 확장하는 것이 지속적인 노력이 가장 많이 필요한 부분입니다. 새 JSON 파일을 추가하고 스키마를 유지하면(로드 시 검증됨) 자동으로 인식됩니다. v0.3은 ACL 남용, Kerberos, 위임, ADCS ESC1-8, LAPS/gMSA, GPO, 트러스트 및 경로 탐색에 중요한 액세스 권한 엣지를 포함한 43개의 엣지 유형을 제공합니다.

점수는 DreadHost Red Team Operator Playbook 노이즈 매트릭스(Windows/Sysmon 이벤트 매핑, 기술 노이즈 등급)와 표준 AD 탐지 사실을 기반으로 시드됩니다. 자체 랩 탐지 데이터에 맞게 조정하세요.


Roadmap

  • 교정 - 30/57 엣지 완료, 계속 진행 중. 측정된 세 가지 프로필이 profiles/ (audit / EDR / Elastic 계층)에 포함되어 폐쇄 루프 검증을 수행합니다. 남은 작업: 나머지 ~28개 엣지(강제/릴레이, ADCS ESC2-13, CanRDP), MDI 런타임 경보 계층(포스처는 작동하지만 경보 경로에는 베어메탈/Ludus DC가 필요합니다 - docs/CALIBRATION.md 참조), 그리고 선택 가능한 툴링 프로필 축(docs/TOOLING_AXIS.md)으로 점수가 상용 도구 대비 네이티브 트레이드크래프트를 반영하도록 합니다.
  • 2단계 - 실시간 탐지 검증. 정적 점수를 실제 대상의 Defender/Sysmon/감사 구성에서 가져온 live_noise_score로 대체하여 OffsetInspect의 탐지 경계 로직을 재사용합니다. annotate()는 이미 live_scores 재정의를 허용하며, CLI 후크는 2단계에서 도입됩니다.
  • 라이브 Neo4j 수집 - SharpHound가 채우는 동일한 DB에 Bolt를 통해 수행됩니다(오프라인 zip 수집은 지금 제공됨).
  • ADCS ESC9/10/13 합성(ESC1-8은 현재 제공됨).
  • 데이터 모델이 입증되면 점수 엔진(petgraph)의 Rust 포팅으로, OffsetInspect -> OffsetScan 패턴을 미러링합니다.

기여

코퍼스는 커뮤니티에서 확장 가능하며, 기여가 가장 중요한 부분입니다. 엣지를 추가하는 것은 로드 시 및 CI에서 검증되는 JSON 파일 하나를 추가하는 것입니다:```bash noisehound-validate # schema + consistency checks over the corpus python -m pytest tests/ -q

root@kitploit:~
스키마, 채점 가이드 및 PR 지침은 [CONTRIBUTING.md](https://github.com/warpedatom/noisehound/blob/HEAD/CONTRIBUTING.md)에서,
공식 에지 스키마는 [`docs/edge_schema.json`](https://github.com/warpedatom/noisehound/blob/HEAD/docs/edge_schema.json)에서
확인할 수 있습니다.

## 랩에 대한 보정

30개의 에지는 측정되었고([`profiles/`](https://github.com/warpedatom/noisehound/blob/HEAD/profiles/) 참조), 나머지는 측정하기
전까지는 추정치이며, 환경마다 다릅니다. [`docs/CALIBRATION.md`](https://github.com/warpedatom/noisehound/blob/HEAD/docs/CALIBRATION.md)
는 전체 플레이북입니다: 랩 토폴로지, 해당 코퍼스의 이벤트 ID를 발생시키는 정확한 Windows 감사 정책 및 Sysmon
구성, 에지별 실습 런북,
APT29-via-Caldera 현실성 레이어, 결과를 보정된 프로필로 컴파일하는 방법 등이 포함됩니다.
`noisehound-calibrate --template -o lab_detections.json`으로 시작하세요.

[`lab/`](https://github.com/warpedatom/noisehound/blob/HEAD/lab/) 키트는 탐지 계측을 자동화합니다:
`Enable-Telemetry.ps1`은 감사 정책, 스크립트 블록 로깅, DCSync
SACL 및 Sysmon을 켜고, `Collect-Detections.ps1`은 창구간에서 발생한 이벤트를 집계합니다.
취약한 도메인 자체는 [GOAD](https://github.com/Orange-Cyberdefense/GOAD) 또는
[Vulnerable-AD](https://github.com/WazeHell/vulnerable-AD) (또는 사용자 CRTP/CRTO
랩)을 사용하며, 이를 다시 구현하지 않습니다.

## 책임 있는 사용

NoiseHound는 승인된 보안 테스트, 퍼플 팀 훈련, 탐지
엔지니어링 및 연구를 위한 것입니다. 이미 수집한 BloodHound 데이터를 읽고
순위를 계산합니다. 대상에 대해 아무것도 실행하지 않습니다.
명시적인 서면 승인이 있는 경우에만 사용하세요. 기여에는
대상별 또는 실제 참여 데이터가 포함되어서는 안 됩니다.

## 테스트```bash
python -m pytest tests/          # with pytest
python tests/test_noisehound.py  # dependency-light smoke run

레이아웃```

noisehound/ engine: schema, corpus, ingest, adcs, annotate, environment, solver, report, cli, calibrate edge_mappings/ the telemetry corpus (one JSON per edge type) - the IP samples/ sample_graph.json, sample_bloodhound_ce.zip, sample_adcs_ce.zip, sample_fullspectrum_ce.zip, env_profile.example.json, lab_detections.example.json, sample_report.html docs/ WALKTHROUGH.md (start here), CYPHER.md, VALIDATION.md, CALIBRATION.md, ROADMAP.md, seed_demo_graph.cypher, seed_showcase_graph.cypher, images/ tests/ unit + end-to-end tests

root@kitploit:~
도구 다운로드
옵션의미
--input, -iBloodHound .zip, .json 또는 내보내기 디렉터리
--source, -s시작 주체 (jdoe 또는 객체 ID)
--objective, -o대상 노드 (Domain Admins 또는 객체 ID)
--paths, -k반환할 가장 조용한 경로 수 (기본값 5)
--format, -ftext(기본값), json 또는 html
--defensive블루팀 관점: 가장 조용한 경로의 탐지 격차 + 수정 사항
--rank-bynoise(기본값) 또는 probability(상관 경보의 P)
--correlationP(detected)에 대한 SOC 상관 계수, 0..1 (기본값 0.5)
--paretonoise/hops/P(detect)에 대한 파레토 프론티어 반환
--engineauto(기본값), python 또는 rust(DeadAir 엔진)
--avoid NODE모든 경로에서 노드 제외 (반복 가능)
--avoid-edge TYPE모든 경로에서 엣지 유형 제외 (반복 가능)
--corpus엣지 매핑 코퍼스 디렉터리 재정의
--environment, -e운영자가 선언한 대상 포스처 JSON (점수 조정)
--max-weight / --mean-weight점수 가중치 (합계는 1.0이어야 함)
--default-noise코퍼스에 없는 엣지 유형의 점수 (기본값 60)