
صدفة سطر أوامر تفاعلية لواجهة BloodHound API.
صدفة سطر أوامر تفاعلية لـ BloodHound. ابحث عن كائنات Active Directory، وتحرَّ عن نقاط الضعف واكتشف مسارات الهجوم من الطرفية، دون فتح واجهة الويب.
يتطلب 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 | قابلية Kerberoasting / AS-REP roasting، والتفويض، وعمر كلمة المرور، وعلامات Tier Zero والمملوكة، بالإضافة إلى تداخل المجموعات، والتحكم في ACL الوارد/الصادر، والجلسات وحقوق المسؤول المحلي |
ou | الوحدات التنظيمية (OUs) والحاويات والنطاقات بأكملها: شجرة OU مع أعداد الكائنات وTier Zero والمملوكة، وكل كائن أسفل OU، وGPOs التي تنطبق (الروابط المفروضة، والوراثة المحجوبة) ومن خارج Tier Zero يمكنه تعديلها، ومن يتحكم في OU؛ يعرض user/computer -G الـ GPOs المطبقة على كائن واحد. يتم اختيار OUs المتشابهة في الاسم بواسطة الاسم المميز |
gpo | مكان ربط GPO، والمستخدمون وأجهزة الكمبيوتر التي ينطبق عليها (مع مراعاة الوراثة المحجوبة والروابط المفروضة) ومن خارج Tier Zero يمكنه تعديله |
ca، template | مراكز الشهادات (CAs) للمؤسسات وقوالب الشهادات: شروط ESC التي يستوفيها القالب (بما في ذلك ESC2 وESC15، والتي لا يملك BloodHound حافة لها)، ومضيف CA وإعداداته (ESC6، ESC8)، ومن يمكنه التسجيل أو الإدارة (ESC7) أو إعادة كتابتها (ESC4) |
search | الكائنات المطابقة لمرشحات الخصائص (search -t user hasspn enabled)، مع التواريخ والأعمار (90d) وأحرف البدل |
path | أقصر المسارات إلى هدف أو إلى Tier Zero، من كل ما هو مملوك، أو عبر خطوات --via؛ تُطبع كسلاسل قفزات، أو رسم بياني طرفي، أو SVG/PNG للتقارير |
hunt | فحوصات على مستوى النطاق حسب الخطورة: DCSync، والتحكم في Tier Zero، وAD CS (ESC*)، وKerberoasting، والجلسات ذات الامتيازات، وقارئات LAPS/gMSA، وكلمات المرور في الخصائص أو التي لا تزال على وضعها الافتراضي (أجهزة الكمبيوتر ما قبل Windows 2000، والحسابات غير المستخدمة، وحسابات المسؤول التي لها توأم قياسي)، وأساسيات الاستيلاء (Shadow Credentials، RBCD)، والتحكم في GPO، وترحيل NTLM، والثقات، ورموز العسل المحتملة...؛ يحدّ hunt --owned منها بما يمكن لكائناتك المملوكة فعله |
cypher، query | Cypher الخام، ومكتبة من الاستعلامات المحفوظة: المرفقة، وملفات .cyp الخاصة بك (~/.bhshell/queries/ أو أي مجلد يتم تعيينه بـ config query_dirs) وتلك المحفوظة على الخادم |
owned، hvt | وضع علامة أو إزالتها على الكائنات المملوكة وTier Zero، بالاسم أو من ملف أسماء |
domains، trusts | الأعداد لكل نطاق، وخريطة الثقات مع حالة تصفية SID |
لإضافة استعلامك الخاص، احفظه كملف .cyp في ~/.bhshell/queries/ وقم بتشغيله بالاسم:
$ 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)، والأوامر التي تسرد الكائنات تقبل أيضًا
--names-only أو -o FILE.txt للحصول على قائمة أسماء بسيطة لتسليمها إلى أدوات أخرى. يعمل تسجيل الدخول بكلمة مرور (مع 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]'
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 ولا معتمدًا منها.