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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
NoiseHound — 탐지 인식 BloodHound 공격 경로 점수 산정 - 목표까지 가장 조용한 경로를 다섯 가지 탐지 계층(audit/EDR/Elastic/MDI/WDAC)과 Azure 전반에 걸쳐 보정합니다. | Kitploit
도구/GitHubGitHub/warpedatom/noisehound
Defensive ToolsPrivilege EscalationLateral MovementPost-ExploitationPenetration TestingRed TeamingAdversarial Attack
GitHubwarpedatom/noisehound

NoiseHound

탐지 인식 BloodHound 공격 경로 점수 산정 - 목표까지 가장 조용한 경로를 다섯 가지 탐지 계층(audit/EDR/Elastic/MDI/WDAC)과 Azure 전반에 걸쳐 보정합니다.

저장소 보기
6710572개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

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 개념 증명(점수가 UI에 다시 기록됨), DeadAir 엔진, 블루팀 탐지 격차 보고서까지 스크린샷과 함께 직접 따라 해보는 실습 투어입니다.

프로젝트 상태 (v1.2.0): 안정적이며 여러 도메인에 걸친 실제 BloodHound 데이터로 테스트되었습니다. 77개 코퍼스 엣지 중 37개가 실험실에서 측정되었으며, 다섯 개의 온프레미스 탐지 계층(Windows 감사, Defender for Endpoint, Elastic SIEM, Defender for Identity 런타임 경고, WDAC 감사)과 측정된 Azure/Entra 계층에 걸쳐 있습니다 - 이는 profiles/에 여섯 개의 드롭인 프로필로 제공되며, 경로 순위를 실제로 변경한다는 폐쇄 루프 증명이 포함되어 있습니다(docs/VALIDATION.md). 코퍼스에는 13개의 Azure/Entra 엣지가 포함되어 있으며(docs/AZURE.md), AzureHound 출력에서 바로 수집할 수 있습니다. 측정되지 않은 온프레미스 및 모든 Azure 엣지에는 전문가 추정치가 적용됩니다. 보정 하네스(noisehound-calibrate)를 통해 이들 추정치와 사용자 환경 자체가 측정됩니다. 보정되지 않은 순위는 근거 있는 지침으로 취급하고, 절대적 진실로 간주하지 마십시오.

승인된 인게이지먼트 전용입니다. 이 도구는 테스트에 대한 서면 허가를 받은 시스템을 대상으로 OPSEC 계획을 위한 공격 경로를 점수화합니다.

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


작동 방식

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

경로 점수 산정

경로 노이즈는 의도적으로 단순 합이 아닙니다. 동일한 탐지를 두 번 트리거한다고 해서 두 배로 시끄러운 것은 아닙니다(SOC 트리아지이며 원시 이벤트 수가 아님). NoiseHound는 다음을 사용합니다:

path_score = max(edge_scores) * 0.6 + mean(edge_scores) * 0.4

이는 누적 노출도 함께 고려하면서 가장 큰 단일 단계(한 번의 잘못된 단계가 종종 전체 작전을 망치기 때문)에 가중치를 둡니다. 가중치는 설정 가능하며(--max-weight / --mean-weight), APT29/Caldera 랩에서 실제 탐지 데이터를 확보한 후 경험적으로 조정할 수 있습니다.

각 경로는 또한 탐지 확률 - 상관된 경보를 유발할 가능성 - 을 보고하며, 이는 가장 큰 단계와 모든 단계의 누적 noisy-OR을 혼합한 것입니다(--correlation으로 조정). 이는 노이즈 점수와는 다른 질문에 답합니다: 짧지만 큰 경로가 길지만 조용한 경로보다 전체적으로 적발될 확률이 더 낮을 수 있습니다. --rank-by probability로 이를 기준으로 순위를 매길 수 있습니다.

2단계 엔진 (DeadAir)

대규모 그래프의 경우 해결 작업이 DeadAir로 위임됩니다. 이는 Rust 기반의 동반 엔진(OffsetScan-to-OffsetInspect 단계)입니다. NoiseHound는 기능이 풍부한 프런트엔드 - 수집, 코퍼스, 환경/Sigma, 제약 조건, 보고 - 로 남아 준비된 그래프를 해결하는 엔진에 넘기므로, 어느 쪽이든 결과는 동일합니다.

  • --engine auto(기본값): DeadAir 바이너리가 발견되고 그래프가 큰 경우(>= 5000 노드) DeadAir를 사용하고, 그렇지 않으면 내장 Python 솔버를 사용합니다.
  • --engine python: 내장 솔버를 강제합니다(바이너리 불필요).
  • --engine rust: DeadAir를 강제합니다(바이너리가 없으면 오류 발생).

DeadAir는 $NOISEHOUND_DEADAIR, 그다음 PATH, 그다음 형제 경로인 ../deadair/target/{release,debug}/ 빌드 순으로 탐색됩니다. 대규모 그래프에서 10-100배 더 빠르며(250k 노드 그래프가 Python에서 ~30초 걸리는 반면 ~2초에 해결됨) 바이트 단위로 동일한 순위를 생성합니다. 출력에는 어떤 엔진이 실행되었는지 기록됩니다.

다중 목표 및 제약 조건 경로 탐색

노이즈, 홉 수, 탐지 확률은 서로 다른 방향으로 작용하므로, --pareto는 단일 승자를 강제하는 대신 파레토 프런트 - 세 가지 모두에서 다른 어떤 경로에도 지지 않는 모든 경로 - 를 반환합니다. 그리고 실제 작전에는 제약 조건이 있습니다: --avoid NODE는 특정 호스트(EDR이 모니터링하는 점프 박스, 허니팟)를 피하도록 경로를 유지하고, --avoid-edge TYPE은 특정 기법을 거부합니다(예: --avoid-edge DCSync). 둘 다 반복 가능하며 즉석에서 다시 해결됩니다.

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, 이벤트 ID-ATT&CK 참조)은 풍부하지만 사람 중심이며 BloodHound 엣지 종류에 키가 맞춰져 있지 않습니다.

NoiseHound의 기여는 이들의 조합입니다: 기계 판독 가능한 BloodHound 엣지-탐지 텔레메트리 코퍼스, 운영자 OPSEC("DA까지 가장 조용한 방법")으로 프레이밍된 노이즈 가중 재해석, 대상의 선언된 태세에 적응하는 환경 모델, 그리고 랩 탐지를 측정된 점수로 바꾸는 캘리브레이션 루프입니다. 그래프 수학은 흔한 것이고, 코퍼스와 프레이밍이 핵심입니다. 그 가치는 코퍼스만큼만 좋을 수 있으며, 그래서 캘리브레이션과 커뮤니티 기여가 일급 요소입니다 - 아래를 참조하세요.

설치

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 .

Python 3.10 이상이 필요합니다.

사용법

# 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

먼저, 내보낸 데이터에 대해 파서를 점검하세요 (히스토그램 + 코퍼스 커버리지, 경로 탐색 없음) - 실제 데이터에서 NoiseHound를 검증하는 가장 빠른 방법입니다:

noisehound-inspect -i export.zip

라이브 BloodHound CE / Neo4j

zip 대신 --input을 BloodHound CE가 채우는 Neo4j 데이터베이스로 지정하면 NoiseHound가 (이미 분석된) 그래프를 Bolt를 통해 직접 읽습니다:

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.

번들로 제공되는 샘플에 대해 시험해 보세요:

도구 다운로드