
SharpHound/AzureHound JSON용 오프라인 AD/Entra 공격 경로 분석기. BloodHound 또는 Neo4j 없이 우선순위가 매겨진 권한 상승, 자격 증명, 잘못된 구성 관련 발견 사항을 표면화합니다.
SquidSec 오픈 소스 프로젝트
SquidOffense.com ·
GitHub
BloodBash는 **SquidSec**이 만들고 유지 관리하는 오픈 소스 오프라인 SharpHound 및 AzureHound JSON 분석기입니다. 그래프를 구축하고, AD/Entra 공격 경로와 잘못된 구성을 찾아내며, 우선순위가 매겨진 분석 결과를 출력합니다. Neo4j나 BloodHound UI가 필요하지 않습니다.
| 조직 | SquidSec |
| 웹사이트 | https://squidoffense.com/ |
| 앱 버전 | v1.4.2 |
| 최신 바이너리 | |
| 라이선스 | MIT |
| 런타임(소스) | Python 3.9+ |
main 브랜치로 병합하면 Linux 및 Windows 바이너리가 자동으로 빌드되고 GitHub 릴리스(v1.4.2-build.N 태그)가 게시됩니다.
BloodBash는 BloodHound 인프라를 구축하지 않고도 신속한 오프라인 AD/Entra 분석이 필요한 레드 팀, 펜테스터, 방어자 등 보안 커뮤니티를 위해 **SquidSec**이 만들고 유지 관리하는 도구입니다.
Python, pip, venv가 필요 없는 독립 실행형 SquidSec BloodBash 실행 파일:
| 플랫폼 | 최신 다운로드 |
|---|---|
| Linux x64 | bloodbash-linux-x64 |
| Windows x64 | bloodbash-windows-x64.exe |
curl -sL -o bloodbash
https://github.com/DotNetRussell/BloodBash/releases/latest/download/bloodbash-linux-x64
chmod +x bloodbash
./bloodbash /path/to/json --all
No content was provided in the INPUT section. Please provide chunk 3 of 45 so it can be translated.```powershell
# Windows (PowerShell)
Invoke-WebRequest -Uri "https://github.com/DotNetRussell/BloodBash/releases/latest/download/bloodbash-windows-x64.exe" `
-OutFile bloodbash.exe
.\bloodbash.exe C:\path\to\json --all
pipx install git+https://github.com/DotNetRussell/BloodBash
또는 클론에서:```bash
git clone https://github.com/DotNetRussell/BloodBash.git
cd BloodBash
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
Dependencies: networkx, rich, tqdm, pyyaml.
다음 3가지로 시작하세요 (SharpHound/AzureHound 디렉터리 또는 .zip을 지정하세요):```bash
bloodbash /path/to/json
bloodbash /path/to/json --quick-wins
bloodbash ./sharpout --from-user alice --from-user-export
bloodbash /path/to/json --all --fast
bloodbash /path/to/json --all --inventory
소스 체크아웃에서 `python3 BloodBash.py`는 `bloodbash`와 동일합니다.```bash
# Binary / pipx
./bloodbash /path/to/json
bloodbash /path/to/json --from-user alice --from-user-export
# Multi-collection merge (low-priv + DA zip, multi-domain forest)
bloodbash ./lowpriv.zip --merge ./da.zip ./child-domain.zip --all --fast
체크 플래그 없이 디렉토리만 지정하면 quick-wins 분류가 실행됩니다. 전체 공격 경로 분석(인벤토리 아님)에는 --all을, 대화형 선택기에는 --wizard를 사용하세요.
--all 및 --quick-wins에서는 콘솔을 읽기 쉽게 유지하기 위해 빈 검출기 섹션이 표시되지 않습니다. 선택적 플래그는 요청한 검사 항목에 대해 녹색 "none found" 줄을 계속 출력합니다.
샘플 데이터: SampleSharphoundADData/ 및 SampleAzurehoundData/.```bash
bloodbash --help # start-here + cheat sheet
bloodbash --help-advanced # full flag tables + all examples
More recipes: [docs/cookbook.md](https://github.com/squidsec/bloodbash/blob/HEAD/docs/cookbook.md).
## 발견 항목
| 영역 | 검사 항목 |
|------|--------|
| **AD 권한** | DCSync(GetChanges+GetChangesAll; 중첩 DA/EA는 예상대로 처리됨), 고가치 개체의 위험한 ACL, **흥미로운 비-HV ACL 남용**(사용자/컴퓨터/그룹에 대한 ForceChangePassword / GenericAll / GenericWrite; 대량 컴퓨터 GenericWrite 노이즈는 억제됨), GPO 남용, RBCD(구성됨 + *구성 가능*), 제한/비제한 위임(**DC vs 비-DC** 섹션), SID 히스토리, **도메인 트러스트**(`--trust`) |
| **AD 자격 증명** | Kerberoastable, AS-REP roastable(**AdminCount / OWNED / LASTLOG** 태그 포함), **권한 있는 로스트**(`--privileged-roast`: roastable + 중첩 DA/EA / AdminCount), 섀도 자격 증명, 설명 내 비밀번호, PasswordNeverExpires / PasswordNotRequired. SharpHound `sensitive`(NOT_DELEGATED)는 로스트 후보를 **제외하지 않습니다** |
| **ADCS** | ESC1-ESC7(수집기 속성이 존재할 때 + ESC8/ESC9/ESC13). ESC10-12는 SharpHound에 자주 없는 레지스트리/HTTP 역할 데이터가 필요합니다. zip에 인증서 개체가 없으면 소프트 메시지 표시 |
| **Azure / Entra** | 권한 있는 역할, 앱/SP 자격 증명 *제어* 경로, 명시적 MFA 비활성화, 게스트 사용자, SP 남용 권한 |
| **경로** | 고가치 대상까지의 최단 경로(`--fast`에서는 제한된 집합, HV에는 Builtin Administrators 및 **도메인 컨트롤러 컴퓨터** 포함), 소유 주체(`--owned` = 인바운드), 사용자 지정 `--path-from` / `--path-to` |
| **침해 평가서** | `--from-user` / `--compromise`: 아웃바운드 구성원 자격, AdminTo/RDP/ACL 수, 중첩 그룹, HV로의 자동 경로, **대량 AdminTo 호스트 목록**을 포함한 txt/csv 내보내기 |
| **경로 교정** | 가장 붐비는 경로 순위(`--busiest-paths`), 엣지 제거 권장 사항(`--path-break`) |
| **인벤토리** | 비밀번호 사용 기간 사다리, 휴면/비활성 계정, 권한 그룹, 구조(도메인/DC/트러스트), 소유 개체 인벤토리, **% 포함 통계 대시보드** |
| **PlumHound 스타일 CSV 팩** | `--csv-pack DIR`: 다중 CSV 인벤토리(도메인, DA, 로스트 가능 대상, LAPS, Everyone/과도한 권한 엣지, 컴퓨터 AdminTo 컴퓨터, 이중 권한+로컬 관리자, 대량 AdminTo 호스트) + `index.csv` |
| **다중 입력** | `--merge PATH…` 추가 디렉터리/zip을 하나의 그래프로 통합(다중 도메인 / 이중 로우프리빌+DA 수집) |
| **기타** | **수집 상태** 배너(개체 수, 세션/AdminTo/RDP 적용 범위, ADCS 존재 여부), LAPS 적용 범위(`haslaps`) + **LAPS 비밀번호 읽기 권한자**(`ReadLAPSPassword`), GPO XML(`--gpo-content-dir`), 도메인 `Trusts[]` 엣지, 그룹 중첩, `--list-domains` |
결과는 **우선순위 결과** 표에 점수화되어 요약됩니다(대량 위생 카테고리는 축소됨; 전체 축소 목록은 `--all-findings` 사용). 남용 패널은 카테고리별 도구/명령을 제안합니다.
이 도구는 SquidSec의 **오프라인 휴리스틱 분석기**로, 완전한 BloodHound CE 대체품이 아닙니다. 경로 일치를 위해 동일한 zip을 BloodHound CE로 검증하는 것이 좋습니다.
---
## 예제 명령
`./sharpout`을 자신의 SharpHound/AzureHound 디렉터리 또는 zip으로 바꾸세요. 소스 체크아웃: `bloodbash` 대신 `python3 BloodBash.py`를 사용하세요.
### 기본```bash
# Help (tables + examples)
bloodbash --help
bloodbash --help-advanced
# Default = quick wins (high-signal day-0 triage)
bloodbash ./sharpout
bloodbash ./sharpout --quick-wins
bloodbash ./sharpout --quick-wins --domain CORP.LOCAL
bloodbash ./2024-collection.zip --quick-wins
# Interactive picker
bloodbash ./sharpout --wizard
# Full attack analysis (--all auto --fast on large graphs; inventory is separate)
bloodbash ./sharpout --all
bloodbash ./sharpout --all --fast
bloodbash ./2024-collection.zip --all
bloodbash ./sharpout --all --inventory
# Merge multiple collections into one graph
bloodbash ./lowpriv.zip --merge ./da.zip --all --fast
bloodbash ./forest-root --merge ./child-a.zip ./child-b.zip --quick-wins
# One domain / tenant only
bloodbash ./sharpout --all --domain CORP.LOCAL
bloodbash ./azureout --azure-privileged-roles --domain <tenantId>
# Domain trusts
bloodbash ./sharpout --trust
bloodbash ./sharpout --all --trust
# In-repo samples
bloodbash SampleSharphoundADData --quick-wins
bloodbash SampleSharphoundADData --all --fast --all-findings
bloodbash SampleAzurehoundData --azure-privileged-roles --azure-guest-access --all-findings
--quick-wins가 실행하는 것큐레이션된 고신호 집합(--fast, 상세 요약, 전체 결과 테이블을 포함). 전체 인벤토리/Azure 덤프가 아님. 비어 있는 섹션은 출력되지 않습니다.
| 영역 | 모듈 |
|---|---|
| 권한 | DCSync (예상치 못한), ADCS, 위험한 ACL + 흥미로운 비-HV ACL, RBCD + can-configure, unconstrained (DC vs 비-DC), constrained, shadow creds, LAPS (+ readers), trusts |
| 자격 증명 | Kerberoast, AS-REP, , password-in-description, PasswordNotRequired |
동등한 프로필: --profile quick-wins (profiles/quick-wins.yaml 참조).
아웃바운드 뷰: "방금 이 주체(principal)를 장악했습니다. 이들이 무엇을 할 수 있을까요?"
bloodbash ./sharpout --from-user alice bloodbash ./sharpout --compromise [email protected]
bloodbash ./sharpout --from-user alice --from-user-export bloodbash ./sharpout --from-user alice --from-user-export ./alice-dossier
bloodbash ./sharpout --from-user alice,bob,svc_backup --from-user-export ./footholds
bloodbash ./sharpout --from-user alice --domain CORP.LOCAL --from-user-export --all-findings
bloodbash SampleSharphoundADData --from-user SCOTT --from-user-export ./scott-out --fast
bloodbash ./sharpout --from-user alice --inspect alice bloodbash ./sharpout --path-from alice --path-to 'domain [email protected]'
bloodbash ./sharpout --owned alice --owned-inventory --shortest-paths bloodbash ./sharpout --owned-file ./owned.txt --owned-inventory
bloodbash ./sharpout --from-user-file ./footholds.txt --from-user-export ./out
**내보내기 레이아웃** (주체별):```text
compromise-alice/
summary.md README.txt counts.csv
membership_direct.txt membership_effective.txt
adminto_hosts.txt adminto_hosts.csv # bulk AdminTo/LocalAdmin host list
paths_to_high_value.txt paths_to_high_value.csv
dossier.json
rights/
AdminTo.txt AdminTo.csv CanRDP.txt LocalAdmin.txt GenericAll.txt ...
bloodbash ./sharpout --shortest-paths bloodbash ./sharpout --shortest-paths --indirect --fast
bloodbash ./sharpout --shortest-paths --path-mode abuse
bloodbash ./sharpout --deep-paths bloodbash ./sharpout --path-mode deep --path-depth 16 --path-sources 400 --max-paths 20
bloodbash ./sharpout --golden-path
bloodbash ./sharpout --golden-path --from-user alice --domain CORP.LOCAL
bloodbash ./sharpout --busiest-paths short --busiest-paths-top 10
bloodbash ./sharpout --busiest-paths all --busiest-paths-top 5
bloodbash ./sharpout --path-break --path-break-top 20
bloodbash ./sharpout --busiest-paths short --path-break --fast
--report-pack ./path-reports --export-zip path-reports.zip
bloodbash ./sharpout --path-from helpdesk --path-to 'domain [email protected]'
bloodbash ./sharpout --path-from alice,bob --path-to 'domain admins,enterprise admins'
bloodbash ./sharpout --deep-analysis
bloodbash ./sharpout --inspect 'DOMAIN [email protected]'
### 선택적 AD 검사```bash
# Critical / common engagement set
bloodbash ./sharpout --dcsync --adcs --dangerous-permissions --verbose
bloodbash ./sharpout --dcsync --adcs --dangerous-permissions --all-findings
# Credentials (+ privilege-context tags on roast findings)
bloodbash ./sharpout --kerberoastable --as-rep-roastable --password-descriptions
# High-priority: roastable users nested into DA/EA/...
bloodbash ./sharpout --privileged-roast
bloodbash ./sharpout --password-never-expires --password-not-required --password-age
# Delegation / RBCD (configured + who can configure AllowedToAct) / shadow creds
bloodbash ./sharpout --unconstrained-delegation --constrained-delegation --rbcd
bloodbash ./sharpout --shadow-credentials
# Trusts, sessions, LAPS (coverage + ReadLAPSPassword readers), SID history, GPO
bloodbash ./sharpout --trust --sessions --laps --sid-history
bloodbash ./sharpout --gpo-abuse --gpo-parsing
bloodbash ./sharpout --gpo-abuse --gpo-content-dir ./sysvol-gpo-xml
bloodbash ./sharpout --list-domains
bloodbash ./sharpout --inventory bloodbash ./sharpout --stale-accounts --password-age --privilege-inventory bloodbash ./sharpout --owned alice --owned-inventory
bloodbash ./sharpout --profile quick bloodbash ./sharpout --profile quick-wins # same set as --quick-wins bloodbash ./sharpout --profile adcs-heavy bloodbash ./sharpout --profile hygiene bloodbash ./sharpout --profile ./my-engagement.yaml
bloodbash ./sharpout --inventory --busiest-paths short --path-break
--report-pack ./reports --export-zip bloodbash-reports.zip --log-file ./bloodbash.log
bloodbash ./sharpout --csv-pack ./ph-reports bloodbash ./sharpout --csv-pack ./ph-reports --export-zip ph-reports.zip bloodbash ./sharpout --all --fast --csv-pack ./ph-full --export-zip ph-full.zip
bloodbash ./sharpout --all --export=md bloodbash ./sharpout --all --export=html bloodbash ./sharpout --all --export=csv bloodbash ./sharpout --all --export=json --export-bh --dot graph.dot bloodbash ./sharpout --all --export=yaml
bloodbash ./sharpout --dcsync # builds + caches graph bloodbash ./sharpout --kerberoastable # cache hit; only runs kerberoast check bloodbash ./sharpout --all --rebuild-cache # force re-ingest bloodbash ./sharpout --all --no-cache # disable cache bloodbash ./sharpout --cache-dir /tmp/bb-cache --all
bloodbash ./sharpout --all --db bloodbash.db bloodbash . --db bloodbash.db --from-user alice --from-user-export
### PlumHound 스타일 CSV 팩 내용
`--csv-pack DIR`는 인벤토리 작업당 CSV 하나와 `index.csv` / `README.txt`를 작성합니다(Neo4j 없음):
| CSV | 설명 |
|-----|-------------|
| `domains.csv` | 컬렉션의 AD 도메인 |
| `domain_admins.csv` | DA/EA 스타일 그룹에 중첩된 보안 주체 |
| `users.csv` / `computers.csv` / `groups.csv` | 핵심 개체 인벤토리 |
| `kerberoastable.csv` / `asrep_roastable.csv` | 자격 증명 로스트 후보(+ 태그) |
| `password_never_expires.csv` | PNE 사용자 |
| `laps_not_enabled.csv` | LAPS가 없는 컴퓨터 |
| `local_admins_users.csv` | 사용자/그룹 → 컴퓨터 AdminTo/LocalAdmin |
| `user_sessions.csv` | HasSession 컴퓨터 ↔ 사용자 |
| `relationships_everyone.csv` (및 Auth Users, Domain Users, …) | 과도하게 광범위한 보안 주체의 에지 |
| `overprivileged_relationships.csv` | 결합된 Everyone/Auth/Domain Users/… 에지 |
| `computer_adminto_computer.csv` | 컴퓨터 → 컴퓨터 AdminTo |
| `dual_privileged_and_local_admin.csv` | AdminTo도 보유한 DA/EA 구성원(티어링) |
| `bulk_adminto_hosts.csv` | AdminTo 호스트 수로 순위가 매겨진 보안 주체 |
| `index.csv` | 보고서 인덱스(파일 → 행 수) |
### Azure / Entra```bash
bloodbash ./azureout --azure-privileged-roles
bloodbash ./azureout --azure-app-secrets --azure-sp-abuse
bloodbash ./azureout --azure-mfa-bypass --azure-guest-access
bloodbash ./azureout \
--azure-privileged-roles --azure-app-secrets --azure-mfa-bypass \
--azure-guest-access --azure-sp-abuse --all-findings --export=html
bloodbash SampleAzurehoundData \
--azure-privileged-roles --azure-guest-access --all-findings
bloodbash ./sharpout --all --fast --all-findings
--report-pack ./nightly --export-zip nightly.zip --log-file nightly.log
bloodbash ./lowpriv.zip --merge ./da.zip --all --fast --csv-pack ./ph-full
bloodbash ./sharpout --from-user alice --from-user-export ./dossiers bloodbash ./sharpout --profile hygiene --report-pack ./hygiene --export-zip hygiene.zip
bloodbash ./sharpout --profile adcs-heavy --path-break --busiest-paths short
--report-pack ./adcs-paths --export-zip adcs-paths.zip
---
## 플래그 참조
### 보고서 팩, 프로필, 도시에(dossier), 산출물 (v1.4+)
| 플래그 | 용도 |
|------|---------|
| `--from-user` / `--compromise USER` | **침해 도시에** (아웃바운드): 중첩 그룹, AdminTo/RDP/ACL 수, 고가치 대상까지의 경로 |
| `--from-user-export [DIR]` | 도시에 txt/csv/json + **adminto_hosts** 목록 내보내기 (기본값 `compromise-<user>/`) |
| `--busiest-paths [short\|all]` | 고가치 대상으로 가는 경로가 가장 많은 보안 주체(principal) 순위 |
| `--path-break` | 가장 많은 공격 경로를 끊기 위해 제거할 관계 추천 |
| `--inventory` | 구조 + 비밀번호 기간 + 휴면 계정 + 권한 인벤토리 |
| `--password-age` / `--stale-accounts` / `--privilege-inventory` | 개별 인벤토리 모듈 |
| `--owned-inventory` | `--owned` / `--owned-file` 보안 주체에 대한 AdminTo / MemberOf 인벤토리 |
| `--owned-file FILE` | 줄 단위 구분 소유 보안 주체 (`--owned`와 병합) |
| `--from-user-file FILE` | 침해 도시에용 줄 단위 구분 발판(foothold) (`--from-user`와 병합) |
| `--report-pack DIR` | 다중 페이지 HTML 스위트 + `index.html` + 섹션별 CSV |
| `--csv-pack DIR` | **PlumHound 스타일 멀티 CSV 팩** (인벤토리 + 과도한 권한 + AdminTo 보고서 + `index.csv`) |
| `--export-zip [FILE]` | `--report-pack` 또는 `--csv-pack` 디렉터리를 하나의 산출물로 ZIP 압축 |
| `--profile FILE\|name` | YAML 분석 프로필 (`quick`, `quick-wins`, `adcs-heavy`, `hygiene` 또는 경로) |
| `--log-file [FILE]` | 추가(append) 친화적 실행 로그 (기본값 `bloodbash.log`) |
| `--all-findings` | 실행 종료 시: **모든** 발견 항목 테이블 출력 (비어 있어도) |
### 기타 유용한 플래그
| 플래그 | 용도 |
|------|---------|
| `--all` | 모든 분석 모듈 실행 (빈 AD 섹션은 숨김) |
| `--quick-wins` | **신호 강도 높은 day-0 트리아지** (체크 플래그가 없으면 **기본값**이기도 함; `--fast` 수반) |
| `--merge PATH…` | 하나의 그래프로 통합할 추가 SharpHound/AzureHound 디렉터리 또는 ZIP |
| `--trust` | 도메인 트러스트 / SID 필터링 악용 검사 |
| `--wizard` | 대화형 모드 선택기 (quick-wins / 전체 / 도시에 / 프로필) |
| `--help-advanced` | 전체 플래그 테이블 + 모든 예제 (간단한 `--help`는 시작 가이드 전용) |
| `--fast` | 경로 탐색을 최상위 DA/EA 스타일 대상으로 제한 (완전한 건너뛰기 아님). 큰 그래프에서는 `--all`과 함께 자동 활성화 |
| `--domain X` | 하나의 AD 도메인 또는 Azure `tenantId`로 필터링 (대소문자 무시) |
| `--list-domains` | 컬렉션의 AD 도메인 / Azure 테넌트 목록을 출력하고 종료 |
| `--owned a,b` | 소유 보안 주체**로** 향하는 경로 (인바운드) |
| `--owned-file FILE` | `--owned`와 동일, 줄 단위 구분 파일에서 읽음 (`#` 주석 허용) |
| `--from-user-file FILE` | `--from-user`와 동일, 줄 단위 구분 파일에서 읽음 |
| `--path-from` / `--path-to` | 임의 최단 경로 |
| `--inspect NODE` | 노드의 속성(props) + 엣지(edges) 덤프 |
| `--indirect` | 그룹 매개 경로/권한 포함 |
| `--deep-analysis` | 느린 그룹 중첩 + 사이클 탐지 |
| `--privileged-roast` | DA/EA/기타 권한 그룹(또는 AdminCount)에 중첩된 Kerberoast/AS-REP 사용자 |
| `--gpo-content-dir DIR` | GPO XML 파싱 (작업, 스크립트, cPassword) |
| `--export {md,json,html,csv,yaml}` | 보고서 작성 (고가치 대상 + 우선순위 발견 항목) |
| `--export-bh` | BloodHound 스타일 그래프 JSON |
| `--dot [FILE]` | Graphviz DOT 내보내기 |
| `--db FILE` | 그래프 SQLite 경로 (기본값: `~/.cache/bloodbash/` 아래 컬렉션 지문(fingerprint)별 자동 캐시) |
| `--cache-dir DIR` | 자동 그래프 캐시 디렉터리 재정의 |
| `--no-cache` | 항상 재수집(re-ingest); 그래프 캐시 읽기/쓰기 안 함 |
| `--rebuild-cache` | 강제 재수집 및 그래프 캐시 갱신 |
| `--debug` | 상세한 파싱/빌드 로깅 |
또한 `--all` / 선택적 플래그에 포함: 컬렉션 상태 배너; 흥미로운 비-HV ACL 악용; 로스팅(roast) 발견 항목의 권한 컨텍스트 태그; 예상치 못한 DCSync 분할; unconstrained DC vs 비-DC; LAPS 읽기 권한자; RBCD 구성 가능 대상; 통계 대시보드 백분율; 광범위한 실행에서는 빈 섹션을 조용히 숨김.
Azure 전용 토글: `--azure-privileged-roles`, `--azure-app-secrets`, `--azure-mfa-bypass`, `--azure-guest-access`, `--azure-sp-abuse`.
시작 가이드 + 치트 시트는 `bloodbash --help`를, 전체 플래그 테이블과 예제는 `--help-advanced`를 실행하세요.
## SharpHound CE 참고 사항
수집(ingest)은 최신 컬렉터 출력을 이해합니다: 그룹 `Members`, `AllowedToAct`(RBCD), Sessions / LocalGroups, 도메인 `Trusts[]`, SID 히스토리, CE 속성 이름 별칭, 안전한 ZIP 추출 (Zip Slip 차단). DCSync에는 **GetChanges + GetChangesAll**이 필요합니다. ADCS 라벨은 SpecterOps ESC1-ESC8을 따릅니다 (플래그가 존재하면 ESC9/ESC13 후보 포함). 도메인 컨트롤러 컴퓨터 개체는 고가치 대상으로 유지됩니다. 로컬 관리자 그룹의 워크스테이션 `highvalue` 플래그는 HV 집합을 채우지 않습니다.
## Metasploit 모듈
SquidSec BloodBash CLI(v1.4+)를 래핑하고 발견 항목을 Metasploit DB에 보고합니다.
옵션은 CLI를 그대로 따릅니다: AD/Azure 검사, 인벤토리, busiest-paths / path-break,
`--from-user` 침해 도시에, 프로필, 보고서 팩, 내보내기, 그래프 캐시 (`--db` / 자동 캐시).```bash
cp modules/auxiliary/analyzer/bloodbash_analyzer.rb \
/opt/metasploit-framework/modules/auxiliary/analyzer/
# then in msfconsole: reload_all
I don't see any content in the input — the section after "INPUT:" is empty. Please provide the Markdown text for chunk 33 so I can translate it into Korean.```text use auxiliary/analyzer/bloodbash_analyzer set BLOODBASH_PATH /path/to/BloodBash/BloodBash.py set JSON_DIR /path/to/collector_json_or.zip set ALL_CHECKS true run
The input content for chunk 35 is empty. No text was provided to translate. Please supply the actual Markdown content for this chunk.```text
# Foothold dossier + hygiene (parity with CLI examples)
set FROM_USER alice
set FROM_USER_EXPORT
set PASSWORD_NEVER_EXPIRES true
set KERBEROASTABLE true
set ALL_FINDINGS true
run
python3이 PATH에 없으면 PYTHON을 설정합니다. BLOODBASH_PATH를 독립 실행형
바이너리(.py 아님)로 지정하면 Python 인터프리터를 건너뜁니다. 도메인 필터링은 대소문자를
구분하지 않습니다(CLI와 일치).
pip install -r requirements-dev.txt
python3 -m pytest test_bloodbash.py test_members_ingest.py
test_detection_variations.py test_compromise_dossier.py
test_synthetic_corpus.py test_ludus_collections.py
test_real_data_reliability.py test_graph_cache.py
test_owned_file.py test_golden_path.py test_deep_paths.py
test_ci_pytest_suite.py -q
### Synthetic SharpHound 코퍼스 (고엔트로피 회귀 테스트)
공개 샘플 덤프는 작고 저엔트로피입니다. 탐지기 회귀 테스트를 위해
**합성 SharpHound CE 랩** (`testData/synthetic-corp-lab/`)을 제공하며, 여기에는
알려진 ground truth(예상치 못한 DCSync, Auth Users GPO 쓰기, 대량 can-configure RBCD,
ESC1, roast, LAPS 혼합 등)가 포함됩니다. 실제 업무 데이터는 없습니다.```bash
# Regenerate corpus + ground_truth.json
python3 tools/generate_synthetic_sharphound.py --out testData/synthetic-corp-lab
# Smoke BloodBash against it
python3 BloodBash.py testData/synthetic-corp-lab --all --fast --all-findings
python3 BloodBash.py testData/synthetic-corp-lab --from-user alice.low --fast
# 20 multi-hop engagement scenarios (classic + common debt paths)
python3 tools/run_scenario_battery.py
python3 tools/run_scenario_battery.py --count 20 --seed 42 -v
python3 tools/run_scenario_battery.py --list-profiles
python3 tools/run_scenario_battery.py --keep --work-dir /tmp/bb-engagements
CI (PR + main)는 단위/통합 테스트 및 run_scenario_battery.py --count 20 --seed 42를 실행합니다
(20개의 engagement 체인). 분기 보호는 test 상태 확인을 요구합니다.
정확도 헬퍼 (고객 데이터 없음):```bash
python3 tools/mutate_corpus.py --in testData/synthetic-corp-lab --out /tmp/mut --seed 1 python3 BloodBash.py /tmp/mut --all --fast
python3 BloodBash.py testData/synthetic-corp-lab
--gpo-content-dir testData/gpo-xml-fixtures --gpo-parsing
### 로컬 바이너리 빌드```bash
python3 -m venv .venv-build && source .venv-build/bin/activate
pip install -r requirements.txt -r requirements-build.txt
pyinstaller --onefile --console --name bloodbash-linux-x64 BloodBash.py
# -> dist/bloodbash-linux-x64
CI(main에 대한 모든 push 시)는 테스트를 실행하고 PyInstaller로 Linux + Windows 단일 파일 바이너리를 빌드한 후, 위의 /releases/latest/download/... 링크를 위한 안정적인 에셋 이름으로 Release를 게시합니다. 태그는 v1.4.1-build.N 형식입니다.
MIT - 승인된 보안 테스트 및 레드 팀 활동에만 사용하십시오.
BloodBash는 **SquidSec**이(가) 만들고 관리하는 오픈 소스 프로젝트입니다.
| 운영 | Sessions / 로컬 관리자 요약, 컬렉션 상태 |
| 경로 | HV로의 최단 경로, 가장 붐비는 최단 경로, path-break |
| 플래그 | 의미 |
|---|
--from-user / --compromise | 도시에 작성 (중첩 그룹, 권한, HV 경로) |
--from-user-export [DIR] | txt/csv/json 목록 작성 (기본값: compromise-<user>/) |
--owned / --owned-file | 다름: 해당 주체로 향하는 경로 (인바운드); 파일은 줄로 구분됨 |