
GhostHound هي إضافة لـ BloodHound OpenGraph تعيد عرض تنشيط الكائنات المحذوفة (tombstone reanimation) في Active Directory كمسار هجوم من الدرجة الأولى، حيث تقوم بتعداد الكائنات المحذوفة عبر SHOW_DELETED، ورسم خريطة لمن يمكنه استعادتها، والكشف عن الوقت الذي تستعيد فيه هوية مُعاد تنشيطها العضوية في مجموعة متميزة.
GhostHound هو إضافة OpenGraph لـ BloodHound لـ Active Directory. يتجاهل SharpHound وكل مجمع AD آخر CN=Deleted Objects: الكائنات المحذوفة (شواهد القبور) غير مرئية لتحليل مسار الهجوم القياسي في BloodHound، على الرغم من أن سلة المحذوفات في AD وآليات إعادة تنشيط شواهد القبور يمكن أن تسمح لمستخدم يتمتع بامتيازات كافية باستعادة أحدها - والسيطرة على أي هوية يمثلها. يقوم GhostHound بتعداد شواهد القبور عبر LDAP باستخدام عنصر التحكم SHOW_DELETED، ويحدد من يمكنه إعادة تنشيط كل منها، ويصدر حمولة JSON بتنسيق OpenGraph بالإضافة إلى تعريف إضافة model.json ليتمكن BloodHound CE v8+ من عرض هذا كجزء أساسي من الرسم البياني.
للاستخدام المصرح به فقط. هذه أداة أمان هجومية / فريق أحمر مخصصة لاختبارات الاختراق المصرح بها وأبحاث مختبرات الكشف. قم بتشغيلها فقط ضد بيئات Active Directory التي لديك إذن صريح لاختبارها.
Administrators (أو تفويض صريح لقراءة CN=Deleted Objects) على المجال الهدف. لا يمكن للحسابات غير المميزة رؤية الحاوية على الإطلاق، بغض النظر عن طريقة المصادقة المستخدمة - هذا قيد تفرضه AD، وليس شيئًا يمكن لـ GhostHound تجاوزه.ghosthound -d ghost.local --dc-ip 10.0.0.10 -u alice -o tombstones.json
ترتيب حل كلمة المرور: --password (تجنبه - مرئي عبر ps//proc/<pid>/cmdline وسجل الصدفة)، ثم متغير البيئة LDAP_PASSWORD، ثم موجه تفاعلي إذا لم يتم تعيين أي منهما.
افتراضيًا، يتصل GhostHound عبر LDAPS (636) مع تفعيل التحقق من الشهادة. هناك علامتان للبيئات التي لا يناسبها ذلك:
--disable-ldaps - الرجوع إلى LDAP بنص واضح (389). يتم إرسال كلمة مرور الربط بنص عادي؛ تجنب هذا ضد أي شيء باستثناء مختبر معزول.--insecure-tls - الاحتفاظ بـ LDAPS (نقل مشفر) ولكن تخطي التحقق من الشهادة، للشهادات الموقعة ذاتيًا / شهادات المختبر غير الموجودة في مخزن الثقة الخاص بك. فضل هذا على --disable-ldaps عندما تكون شهادة DC هي المشكلة الوحيدة.--timeout-secs (الافتراضي 30) يحدد زمن كل من الاتصال الأولي وكل عملية LDAP لاحقة، بحيث يفشل DC غير قابل للوصول أو --dc-ip خاطئ خلال تلك النافذة بدلاً من التجميد.
قم بتشغيل ghosthound --help للحصول على قائمة كاملة بالعلامات.
تم بناء GhostHound كمساحة عمل تعتمد على المكتبة أولاً - راجع docs/adr/0001-language-rust-library-first.md للتبرير:
bloodhound-opengraph: باني JSON لـ BloodHound OpenGraph (النظير في Rust لـ bhopengraph في Python).ad-secdesc: محلل من الصفر وبترخيص متساهل لـ ntSecurityDescriptor/DACL/ACEs (راجع docs/adr/0003-security-descriptor-parsing-strategy.md لمعرفة لماذا لا يمثل هذا اعتمادًا على النظير الوحيد الموجود في Rust، وهو GPL-3.0).ad-secdesc-oracle: مجموعة اختبار تفاضلي داخلي غير منشورة تقارن ad-secdesc مع تلك الحزمة GPL-3.0 كمرجع أسود الصندوق - معزولة عن البناء الافتراضي وكل رسم بياني للتبعيات لأي حزمة منشورة.ad-tombstone: تعداد LDAP SHOW_DELETED، ونمذجة حالة سلة المحذوفات في AD، وتحليل حقوق إعادة التنشيط.ghosthound: واجهة سطر الأوامر التي تنظم ما سبق.crates/ad-tombstone/model.json مرة واحدة لتسجيل أنواع العقد GhostHound_TombstoneUser/GhostHound_TombstoneComputer/GhostHound_TombstoneGroup وأنواع العلاقات GhostHound_CanReanimate/GhostHound_WasMemberOf/GhostHound_SameAs (كلها مسجلة كقابلة للتنقل، لذلك تشارك في استعلامات أقصر المسارات).crates/ad-tombstone/bridge_shadow_nodes.cypher مباشرة ضد Neo4j (شريط البحث عن Cypher في BloodHound CE هو للقراءة فقط وسيرفضه):
docker exec -i <graph-db-container> cypher-shell -u neo4j -p <password> < crates/ad-tombstone/bridge_shadow_nodes.cypher
docs/adr/0006-opengraph-cross-source-node-identity.md. يقوم هذا البرنامج النصي بربطها لتكون المسارات قابلة للتنقل بالفعل. يمكن إعادة تشغيله بأمان بعد كل استيراد.بمجرد الربط، يتم عرض مسار إعادة التنشيط كمسار عادي قابل للتنقل - شاهد قبر كان عضوًا في Domain Admins قبل الحذف، يمكن الوصول إليه بواسطة كل مبدأ لديه حق إعادة تنشيط شواهد القبور، ومربوط في عقدة Domain Admins الحقيقية:

يعطي هذا المشروع الأولوية للأمان عالي الثقة من اليوم الأول (docs/adr/0005-supply-chain-openssf-posture.md):
cargo deny لحظر صارم للتراخيص المحظورة / GPL وتدقيق الثغرات الأمنية.cargo fuzz لسلامة الذعر في تحليل الواصفات الثنائية الخام.unsafe في المكتبات الأساسية.يسجل دليل docs/adr/ القرارات الكامنة وراء هذا التصميم (اختيار اللغة، نطاق المصادقة، قيد الترخيص لـ ad-secdesc، نموذج بيانات سلة المحذوفات في AD، وضع سلسلة التوريد)، ويحتوي docs/research/tombstone-viability-findings.md على البحث الأساسي.
crates/ad-tombstone/queries.json، واختياريًا، قم بتشغيل crates/ad-tombstone/privilege_zones.cypher مرة واحدة لوضع علامات على شواهد القبور تحت وحدات تنظيمية من المستوى الصفري كعالية القيمة - وهذا يحتاج أيضًا إلى cypher-shell بدلاً من شريط البحث، لنفس السبب في الخطوة 3 (جمل SET الخاصة به هي جمل تحديث أيضًا).