
GhostHound is a BloodHound OpenGraph extension that surfaces Active Directory tombstone reanimation as a first-class attack path, enumerating deleted objects via SHOW_DELETED, mapping who can restore them, and revealing when a reanimated identity regains privileged group membership.
GhostHound सक्रिय निर्देशिका के लिए एक BloodHound OpenGraph एक्सटेंशन है। SharpHound और अन्य सभी AD संग्राहक CN=Deleted Objects को छोड़ देते हैं: हटाई गई वस्तुएँ (tombstones) मानक BloodHound आक्रमण-पथ विश्लेषण में अदृश्य रहती हैं, भले ही AD रीसायकल बिन और टॉम्बस्टोन पुनर्जीवन तंत्र किसी पर्याप्त-विशेषाधिकार प्राप्त प्रिंसिपल को एक को पुनर्स्थापित करने दे सकते हैं — और वह जो भी पहचान दर्शाता है उस पर कब्जा कर सकते हैं। GhostHound SHOW_DELETED नियंत्रण के साथ LDAP पर टॉम्बस्टोन की गणना करता है, यह निर्धारित करता है कि प्रत्येक को कौन पुनर्जीवित कर सकता है, और एक OpenGraph JSON पेलोड के साथ-साथ एक model.json एक्सटेंशन परिभाषा उत्पन्न करता है ताकि BloodHound CE v8+ इसे ग्राफ के प्रथम श्रेणी के भाग के रूप में प्रस्तुत कर सके।
केवल अधिकृत उपयोग के लिए। यह एक आक्रामक-सुरक्षा / रेड-टीम उपकरण है जो अधिकृत प्रवेश परीक्षणों और पहचान-प्रयोगशाला अनुसंधान के लिए अभिप्रेत है। इसे केवल उन सक्रिय निर्देशिका वातावरणों के विरुद्ध चलाएं जिनका परीक्षण करने के लिए आप स्पष्ट रूप से अधिकृत हैं।
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 (एन्क्रिप्टेड ट्रांसपोर्ट) रखें लेकिन प्रमाणपत्र सत्यापन को छोड़ दें, स्व-हस्ताक्षरित/प्रयोगशाला प्रमाणपत्रों के लिए जो आपके ट्रस्ट स्टोर में नहीं हैं। जब भी DC का प्रमाणपत्र ही एकमात्र समस्या हो तो इसे --disable-ldaps पर प्राथमिकता दें।--timeout-secs (डिफ़ॉल्ट 30) प्रारंभिक कनेक्शन और प्रत्येक बाद के LDAP ऑपरेशन दोनों को सीमित करता है, ताकि एक अप्राप्य DC या गलत --dc-ip लटकने के बजाय उस विंडो के भीतर विफल हो जाए।
पूर्ण फ़्लैग सूची के लिए ghosthound --help चलाएं।
GhostHound को पुस्तकालय-प्रथम कार्यक्षेत्र के रूप में बनाया गया है — तर्क के लिए docs/adr/0001-language-rust-library-first.md देखें:
bloodhound-opengraph: BloodHound OpenGraph JSON निर्माता (पायथन के bhopengraph का Rust समकक्ष)।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: उपरोक्त को ऑर्केस्ट्रेट करने वाला CLI।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 के विरुद्ध चलाएं (BloodHound CE का अपना Cypher खोज बार केवल-पढ़ने योग्य है और इसे अस्वीकार करेगा):
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। यह स्क्रिप्ट उन्हें पाटता है ताकि पथ वास्तव में ट्रैवर्सेबल हों। प्रत्येक आयात के बाद पुनः चलाना सुरक्षित है।एक बार पाटने के बाद, पुनर्जीवन पथ एक सामान्य ट्रैवर्सेबल पथ के रूप में प्रस्तुत होता है — एक टॉम्बस्टोन जो हटाने से पहले डोमेन एडमिन सदस्य था, प्रत्येक प्रिंसिपल द्वारा पुनर्जीवन-टॉम्बस्टोन अधिकार के साथ पहुंच योग्य, वास्तविक डोमेन एडमिन नोड में पाटा गया:

यह परियोजना दिन 1 से उच्च-विश्वास सुरक्षा को प्राथमिकता देती है (docs/adr/0005-supply-chain-openssf-posture.md):
cargo deny।cargo fuzz।unsafe नहीं।docs/adr/ निर्देशिका इस डिज़ाइन के पीछे के निर्णयों को रिकॉर्ड करती है (भाषा चयन, प्रमाणीकरण दायरा, ad-secdesc लाइसेंसिंग बाधा, AD रीसायकल बिन डेटा मॉडल, आपूर्ति-श्रृंखला मुद्रा), और docs/research/tombstone-viability-findings.md में अंतर्निहित शोध है।
crates/ad-tombstone/queries.json में स्टार्टर क्वेरी आयात करें और, वैकल्पिक रूप से, टियर जीरो OU के तहत टॉम्बस्टोन को उच्च-मूल्य के रूप में टैग करने के लिए एक बार crates/ad-tombstone/privilege_zones.cypher चलाएं — इसके लिए भी खोज बार के बजाय cypher-shell की आवश्यकता है, उसी कारण से जैसे चरण 3 में (इसका SET भी एक अद्यतन खंड है)।