
BloodHound API를 위한 대화형 명령줄 셸입니다.
BloodHound를 위한 대화형 명령줄 셸입니다. 웹 UI를 열지 않고 터미널에서 Active Directory 객체를 조회하고, 취약점을 탐색하며, 공격 경로를 찾을 수 있습니다.
Python 3.11+ 및 BloodHound CE v9 서버가 필요합니다 (v9.7.1에서 테스트됨).
pipx install bhshell # 권장
# 또는
pip install bhshell
$ bhshell --url http://127.0.0.1:8080
[bh: shell] > login -u admin
[+] Logged in as admin on 127.0.0.1:8080
[bh: shell] > hunt
Severity Check Count Example Description
critical dcsync 2 [email protected] Non-Tier-Zero principals with replication rights
high kerberoastable 2 [email protected] Kerberoastable users
...
[*] Details: 'hunt CHECK' (e.g. 'hunt kerberoastable'), or 'hunt --all'.
[bh: shell] > user CORP\svc_sql --all -o svc_sql.csv
[bh: shell] > path --owned -g
동일한 명령을 스크립팅을 위해 비대화형으로 실행할 수 있습니다: bhshell -c "hunt --json" > hunt.json.
| 명령 | 표시 내용 |
|---|---|
user, computer, group, lookup | Kerberoastable / AS-REP roastable, 위임, 비밀번호 경과 기간, Tier Zero 및 owned 플래그, 그리고 그룹 중첩, 인바운드/아웃바운드 ACL 제어, 세션 및 로컬 관리자 권한 |
search | 속성 필터와 일치하는 객체 (search -t user hasspn enabled), 날짜, 경과 기간 (90d) 및 와일드카드 지원 |
path | 대상 또는 Tier Zero로의 최단 경로, owned 객체 전체에서의 경로, 또는 --via 단계를 통한 경로; 홉 체인, 터미널 그래프, 또는 보고서용 SVG/PNG로 출력 |
hunt | 심각도별 도메인 전체 검사: DCSync, Tier Zero 제어, AD CS (ESC*), Kerberoasting, 권한 있는 세션, LAPS/gMSA 리더, 속성 내 비밀번호, 탈취 프리미티브 (Shadow Credentials, RBCD), GPO 제어, NTLM 릴레이, 트러스트, 가능한 허니토큰...; hunt --owned는 owned 객체가 수행할 수 있는 것으로 제한 |
cypher, query | 원시 Cypher, 그리고 저장된 쿼리 라이브러리: 번들 제공, 사용자 자신의 .cyp 파일 (~/.bhshell/queries/ 또는 config query_dirs로 설정한 임의 폴더) 및 서버에 저장된 쿼리 |
owned, hvt | owned 및 Tier Zero 객체 표시 또는 표시 해제 |
domains, trusts | 도메인별 개수, 그리고 SID 필터링 상태를 포함한 트러스트 맵 |
자신만의 쿼리를 추가하려면 ~/.bhshell/queries/에 .cyp 파일로 저장하고 이름으로 실행하세요:
$ cat ~/.bhshell/queries/stale-admins.cyp
// description: Enabled adminCount users who have not logged on for a year
MATCH (u:User) WHERE u.admincount = true AND u.enabled = true
AND u.lastlogontimestamp < (datetime().epochseconds - 31536000) RETURN u
[bh: shell] > query run stale-admins -o stale-admins.csv
형식과 다른 폴더(팀 저장소, 참여별 폴더)에 쿼리를 보관하는 방법은 쿼리 라이브러리를 참조하세요.
대부분의 명령은 --json과 -o FILE (JSON 또는 CSV)을 지원합니다. 로그인은 비밀번호(및 MFA) 또는
API 토큰으로 작동하며, 비밀 정보는 프롬프트로 입력하거나 환경 변수에서 읽어오며 인수로 전달되지 않습니다.
전체 사용 가이드(모든 명령, 뷰 플래그, 검색 필터, 경로 옵션, hunt 검사 및
구성 설정)는 docs/USAGE.md에 있습니다.
셸 내에서 help 또는 help <command>를 실행하세요.
버그 보고와 풀 리퀘스트는 github.com/kr0no/bloodhound-shell/issues에서 환영합니다.
git clone https://github.com/kr0no/bloodhound-shell.git
cd bloodhound-shell
python3 -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
python -m pytest
테스트는 responses로 BloodHound API를 모킹하므로 BloodHound 서버가 필요하지 않습니다.
MIT 라이선스에 따라 배포됩니다. 자세한 내용은 LICENSE를 참조하세요.
BloodHound는 SpecterOps의 상표입니다. bhshell은 독립적인 프로젝트이며 SpecterOps와 제휴하거나 보증받지 않습니다.