اعرف اللي قصادك. احمي أرضك.

BloodHound / SharpHound

أداة تحليل بيئة Active Directory باستخدام نظرية المخططات (Graph Theory)، ترسم مسارات الهجوم وتحدد أقصر طريق للوصول لصلاحيات Domain Admin.

هجوممفتوحة المصدرLinuxmacOSWindows
github.com/SpecterOps/BloodHound

دليل BloodHound / SharpHound الشامل

يُعد BloodHound الأداة الأبرز لتحليل مسارات الهجوم في Active Directory (AD) باستخدام نظرية الرسوم البيانية (Graph Theory). وتعمل أداة SharpHound كمجمع للبيانات (Data Collector). معًا، يقومان بالكشف عن المسارات الخفية التي تمكن مستخدمًا ذا صلاحيات محدودة من الوصول إلى صلاحيات مسؤول النطاق (Domain Admin)، مما يحول عملية تصعيد الصلاحيات في AD إلى مسألة تتبع لمسارات الرسم البياني.

البنية الهيكلية (Architecture)

[ أداة SharpHound على جهاز Win منضم للنطاق ]
        │ تقوم بجمع بيانات النطاق
        ▼
[ ملفات بصيغة ZIP / JSON ]
        │ يتم رفعها لواجهة BloodHound
        ▼
[ قاعدة بيانات Neo4j ]
        │ استعلامات Cypher / تحليلات جاهزة مسبقًا
        ▼
[ "أقصر مسار من مستخدم عادي إلى DA" ]

يوجد إصداران من المنتج:

  • BloodHound CE — نسخة المجتمع مفتوحة المصدر (الإصدار الحالي والموصى به).
  • BloodHound Legacy — الواجهة القديمة المستقلة (لا تزال تعمل ولكن التطوير توقف عليها).

SharpHound — أداة جمع البيانات

التثبيت (Install)

يمكن استخدام ملف SharpHound.exe (C#) أو مجمع البيانات بلغة Python:

$ pip install bloodhound
$ git clone https://github.com/SpecterOps/SharpHound # بناء الأداة باستخدام .NET 6

المعاملات الرئيسية (SharpHound.exe)

الوسم (Flag)الغرض
-c, --CollectionMethods <list>تحديد البيانات المطلوب جمعها؛ الافتراضي Default
-d, --Domain <fqdn>تحديد النطاق المستهدف
--LdapUsername / --LdapPasswordاستخدام اعتمادات محددة (بدلاً من Kerberos الحالي)
--DomainController <dc>تحديد موزع نطاق (DC) معين
--ZipFilename <name>اسم ملف الـ ZIP الناتج
--OutputDirectory <path>مسار حفظ المخرجات
--RandomFilenamesالتمويه عبر أسماء ملفات عشوائية
--EncryptZipحماية ملف الـ ZIP بكلمة مرور
--Loop / --LoopDurationتكرار عملية الجمع (للمهمات الطويلة)
--Throttle <ms> / --Jitter <%>إبطاء العمليات وتشويه التوقيت (Stealth)
--ExcludeDomainControllersعدم استعلام الـ DCs (أكثر هدوءًا عند جمع الجلسات)

قيم CollectionMethods المتاحة:

الطريقةالبيانات التي تجمعها
Defaultالمجموعات، الـ ACLs، خصائص الكائنات، الثقة (Trusts)، الجلسات
Allالطريقة الافتراضية + LocalAdmin, RDP, DCOM, PSRemote, GPOLocalGroup, Cert
DCOnlyالبيانات من الـ DC فقط — لا يتم الاتصال بالأجهزة الأخرى
Sessionبيانات الجلسات النشطة فقط
LocalGroupمجموعات الإدارة المحلية (صاخب - يتصل بكافة الأجهزة)
Certقوالب وجهات إصدار شهادات AD CS (لتحليل مسارات ESC)
Trustsعلاقات الثقة بين الغابات (Forest trusts)

bloodhound-python (للاستخدام من جانب المهاجم على Linux)

$ bloodhound-python -u alice -p 'Pass1' -d corp.local -c All -ns 10.0.0.1 --zip

مسارات العمل (Workflows)

الجمع القياسي (مستخدم عادي على جهاز منضم للنطاق)

$ SharpHound.exe -c Default,LocalAdmin,RDP,DCOM,PSRemote

الجمع الهادئ (DC-only)

$ SharpHound.exe -c DCOnly --Throttle 1000 --Jitter 30 --RandomFilenames

من جهاز Linux خارجي

$ bloodhound-python -u alice@corp.local -p 'Pass1' -d corp.local \
$ -c All -ns 10.0.0.1 --zip

تحليل خدمات الشهادات (ESC1-15)

$ SharpHound.exe -c CertServices,Default
# ثم في واجهة BloodHound، اختر الاستعلام الجاهز: "Find Certificate Authorities"

العمل على واجهة BloodHound

  1. تشغيل Neo4j و BloodHound CE (يُنصح باستخدام Docker):
$ git clone https://github.com/SpecterOps/BloodHound && cd BloodHound
$ docker compose -f examples/docker-compose/docker-compose.yml up
# الواجهة على http://localhost:8080
  1. ارفع ملف الـ ZIP الناتج من SharpHound عبر الواجهة.

  2. استخدم عرض Pathfinding: المصدر = المستخدم المخترق، الوجهة = Domain Admins.

  3. تشغيل التحليلات الجاهزة (Pre-canned Analytics):

    • "Find all Domain Admins"
    • "Find Shortest Paths to Domain Admins"
    • "Find AS-REP Roastable Users"
    • "Find Kerberoastable Users"
    • "Find AD CS misconfigurations"
  4. استعلامات Cypher المخصصة عند الحاجة:

cypher
// البحث عن المستخدمين القادرين على تنفيذ DCSync
MATCH (n)-[:GenericAll|GetChanges|GetChangesAll|AllExtendedRights]->(d:Domain {name:'CORP.LOCAL'})
RETURN n.name

// الأجهزة التي تملك فيها مجموعة 'Domain Users' صلاحيات مسؤول محلي
MATCH (g:Group {name:'DOMAIN USERS@CORP.LOCAL'})-[:AdminTo]->(c:Computer)
RETURN c.name

تحليل النتائج

مثال لمسار ناتج:

ALICE@CORP.LOCAL
   ↓ عضو في (MemberOf)
HELP_DESK@CORP.LOCAL
   ↓ مسؤول عن (AdminTo)
HELPDESK-PC1.CORP.LOCAL
   ↓ يملك جلسة على (HasSession)
DOMAIN_ADMIN1@CORP.LOCAL

خمس خطوات للوصول لـ DA. كل سهم (Edge) يمثل تقنية هجوم موثقة (انقر يمينًا ← "Help") لعرض الأوامر اللازمة للتنفيذ.

المشاكل الشائعة والحلول

العرضالسببالحل
الرسم البياني فارغ بعد الرفعتم اختيار نطاق خاطئ في الواجهةالإعدادات ← قاعدة البيانات ← تبديل النطاق
فقدان الكثير من الجلساتمنع عمليات جمع الجلسات / عدم الوصول للأجهزةأعد التشغيل مع LocalAdmin,Session وتوسيع النطاق
لا توجد مسارات وصولالبيئة مقسمة بشكل جيد (Segmented)ابحث عن مسارات Shadow-credentials أو NTLM-relay
نفاذ ذاكرة Neo4jاستيراد بيانات AD ضخمة جدًاارفع قيمة neo4j heap إلى 8G أو أكثر

منظور المدافعين (Defender's Perspective)

أداة SharpHound "صاخبة" جدًا إذا لم يتم ضبطها:

  • تولد كمًا هائلاً من استعلامات LDAP لموزع النطاق (DC).
  • عند استخدام LocalGroup / Session: يتم الاتصال بكل جهاز عبر بروتوكول SAMR (منفذ 445)، مما يولد العديد من جلسات SMB وأحداث EventID 4624/4634.

أفكار للاكتشاف:

  • مراقبة حجم استعلامات LDAP (توفرها Microsoft Defender for Identity تلقائيًا).
  • رصد ملف SharpHound.exe عبر Sysmon EID 1.
  • رصد انفجار في أحداث EID 4661 (الوصول لكائنات AD) من مستخدم واحد في وقت قصير.
  • زراعة كائنات وهمية (Honey-objects): مثل مجموعة "Domain Admins" وهمية ومراقبة من يحاول استعلام أعضائها.

أمن العمليات (OPSEC)

  • استخدم bloodhound-python من جهازك الخاص؛ كل ما تحتاجه هو اعتمادات مستخدم في النطاق والوصول للـ DC.
  • استخدم --Throttle 2000 --Jitter 50 لتبدو الاستعلامات كأنها حركة LDAP طبيعية.
  • تجنب طرق LocalGroup/Session في البداية؛ ابدأ بـ DCOnly ثم تصاعد عند الضرورة.
  • لا ترفع ملفات SharpHound أبدًا إلى نسخ BloodHound سحابية مشتركة؛ لأن ذلك يكشف كامل بنية الـ AD الخاصة بالعميل.

أدوات ذات صلة

الأداةالتخصص
AD Explorerمستعرض AD للقراءة فقط، هادئ جدًا
PingCastleأداة للمدافعين لتقييم وضع أمان الـ AD
ADReconتوليد تقارير Excel شاملة عن وضع الـ AD
Adalancheبديل لـ BloodHound بنموذج رسم بياني مختلف
Certify / certipyمتخصصة في AD CS وتغذي بيانات BloodHound
Rubeusلاستغلال ثغرات Kerberos المكتشفة عبر مسارات BloodHound