
BloodHound API के लिए एक इंटरैक्टिव कमांड-लाइन शेल।
BloodHound के लिए एक इंटरैक्टिव कमांड-लाइन शेल। वेब UI खोले बिना, टर्मिनल से ही Active Directory ऑब्जेक्ट खोजें, कमज़ोरियों की तलाश करें और हमले के रास्ते (attack paths) ढूँढें।
Python 3.11+ और एक BloodHound CE v9 सर्वर आवश्यक है (v9.7.1 पर परीक्षित)।
pipx install bhshell # recommended
# or
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 4 [email protected] Non-Tier-Zero principals with replication rights
critical adcs 95 [email protected] AD CS escalation paths (ESC*, GoldenCert)
high kerberoastable 2 [email protected] Kerberoastable users
...
[*] Details: 'hunt CHECK' (e.g. 'hunt dcsync'), or 'hunt --all'.
[bh: shell] > user PHANTOM\svc_kerb_del --all -o svc_kerb_del.csv
[bh: shell] > ou phantom.corp -t
[bh: shell] > computer DF-MS-SHS -G
[bh: shell] > gpo 'ENABLE [email protected]' -c
[bh: shell] > path --owned -g
वही कमांड स्क्रिप्टिंग के लिए गैर-इंटरैक्टिव रूप से चलते हैं: bhshell -c "hunt --json" > hunt.json।
| कमांड | दिखाता है |
|---|---|
user, computer, group, lookup | Kerberoastable / AS-REP roastable, delegation, password age, Tier Zero और owned फ़्लैग, साथ ही group nesting, inbound/outbound ACL नियंत्रण, sessions और local admin अधिकार |
ou | OUs, containers और पूरे domains: object, Tier Zero और owned गणनाओं के साथ OU ट्री, किसी OU के नीचे का प्रत्येक object, लागू होने वाले GPOs (enforced links, blocked inheritance) और Tier Zero के बाहर कौन उन्हें संपादित कर सकता है, और कौन OU को नियंत्रित करता है; user/computer -G किसी एक object पर लागू GPOs दिखाता है। समान-नाम वाले OUs को distinguished name द्वारा चुना जाता है |
gpo | किसी GPO को कहाँ लिंक किया गया है, वह किन users और computers पर लागू होता है (blocked inheritance और enforced links को ध्यान में रखते हुए) और Tier Zero के बाहर कौन इसे संपादित कर सकता है |
ca, template | Enterprise CAs और certificate templates: किसी template द्वारा पूरी की जाने वाली ESC शर्तें (ESC2 और ESC15 सहित, जिनके लिए BloodHound में कोई edge नहीं है), CA का host और settings (ESC6, ESC8), और कौन enroll, manage (ESC7) या उन्हें rewrite (ESC4) कर सकता है |
search | property फ़िल्टर से मेल खाने वाले objects (search -t user hasspn enabled), dates, ages (90d) और wildcards के साथ |
path | किसी target या Tier Zero तक, सभी owned चीज़ों से, या --via चरणों के माध्यम से सबसे छोटे paths; hop chains, terminal graph, या रिपोर्ट के लिए SVG/PNG के रूप में प्रिंट किए जाते हैं |
hunt | severity के अनुसार domain-व्यापी जाँचें: DCSync, Tier Zero का नियंत्रण, AD CS (ESC*), Kerberoasting, privileged sessions, LAPS/gMSA readers, attributes में passwords या अभी भी उनके default पर (pre-Windows 2000 computers, अप्रयुक्त accounts, standard twin वाले admin accounts), takeover primitives (Shadow Credentials, RBCD), GPO नियंत्रण, NTLM relay, trusts, संभावित honeytokens...; hunt --owned उन्हें उन्हीं तक सीमित करता है जो आपके owned objects कर सकते हैं |
cypher, query | कच्चा Cypher, और सहेजे गए queries की एक लाइब्रेरी: bundled, आपकी अपनी .cyp फ़ाइलें (~/.bhshell/queries/ या config query_dirs से सेट कोई भी फ़ोल्डर) और server पर सहेजे गए वे queries |
owned, hvt | owned और Tier Zero objects को नाम से या नामों की फ़ाइल से चिह्नित या अचिह्नित करें |
domains, trusts | प्रति-domain गणनाएँ, और SID filtering स्थिति के साथ trust map |
अपनी स्वयं की query जोड़ने के लिए, इसे ~/.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
प्रारूप के लिए और अन्य फ़ोल्डरों (एक टीम रिपॉज़िटरी, प्रति एंगेजमेंट एक फ़ोल्डर) में क्वेरीज़ रखने के लिए Query library देखें।
अधिकांश कमांड --json और -o FILE (JSON या CSV) लेते हैं, और जो ऑब्जेक्ट्स को सूचीबद्ध करते हैं वे अन्य टूल्स को देने के लिए नामों की सादी सूची हेतु --names-only या -o FILE.txt भी लेते हैं। लॉगिन पासवर्ड (साथ में MFA) या API टोकन से काम करता है; सीक्रेट्स के लिए प्रॉम्प्ट किया जाता है या उन्हें एनवायरनमेंट से पढ़ा जाता है, कभी भी आर्ग्युमेंट के रूप में पास नहीं किया जाता।
पूरी उपयोग गाइड (प्रत्येक कमांड, व्यू फ़्लैग, सर्च फ़िल्टर, पाथ विकल्प, हंट चेक और कॉन्फ़िगरेशन सेटिंग) 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]'
pre-commit install
python -m pytest
बिना सर्वर के, pytest केवल ऑफ़लाइन परीक्षण चलाता है। शेष परीक्षण नमूना डेटा के साथ लोड किए गए BloodHound CE इंस्टेंस के विरुद्ध चलते हैं:
export BHSHELL_TEST_URL=http://127.0.0.1:8080 BH_USER=admin BH_PASSWORD='...'
python -m pytest -m live
वे केवल सर्वर से पढ़ते हैं और कभी भी ~/.bhshell को नहीं छूते।
MIT लाइसेंस के अंतर्गत वितरित। विवरण के लिए LICENSE देखें।
BloodHound, SpecterOps का एक ट्रेडमार्क है। bhshell एक स्वतंत्र प्रोजेक्ट है और इसका SpecterOps से कोई संबंध नहीं है और न ही इसका उनके द्वारा समर्थन किया जाता है।