
BloodHound में आपके AD टियरिंग को तोड़ने वाले हमले के रास्तों की पहचान करें।
BloodHound में उन हमले के पथों की पहचान करें जो आपके AD टियरिंग को तोड़ रहे हैं
ImproHound एक dotnet स्टैंडअलोन win x64 exe है जिसमें GUI है। ImproHound का उपयोग करने के लिए, आपको AD से आवश्यक डेटा एकत्र करने के लिए SharpHound चलाना होगा। फिर आप डेटा को अपने BloodHound इंस्टॉलेशन में अपलोड करेंगे। ImproHound BloodHound के अंतर्निहित Neo4j डेटाबेस से कनेक्ट होगा। ImproHound में, आप OU संरचना के माध्यम से AD को टियरों में वर्गीकृत करेंगे, और ImproHound उन AD संबंधों की पहचान करेगा जो AD ऑब्जेक्ट्स को उच्च (शून्य के करीब) टियर के ऑब्जेक्ट से समझौता करने में सक्षम बनाते हैं और टियरिंग उल्लंघनों को एक csv फ़ाइल में सहेज लेंगे।
ImproHound DEF CON Adversary Village प्रस्तुति
1. अपना BloodHound डेटाबेस सेट करें
अपने AD में SharpHound के साथ BloodHound डेटा एकत्र करें
ध्यान दें: इससे आपके AV, SIEM आदि में शोर उत्पन्न होगा।
उदाहरण: cmd से SharpHound.exe चलाएँ, सभी एकत्र करें (हाँ, GPOLocalGroup All में शामिल नहीं है):
SharpHound.exe --CollectionMethods All,GPOLocalGroup
टिप 1: फ़ॉरेस्ट के अन्य डोमेन से डेटा एकत्र करने के लिए
Domainपैरामीटर का उपयोग करें।
टिप 2: और भी अधिक डेटा प्राप्त करने के लिए द सेशन लूप कलेक्शन मेथड का उपयोग करें।
BloodHound GUI में अपना BloodHound डेटा अपलोड करें
BloodHound में एक बग है जो कभी-कभी BloodHound डेटा ज़िप अपलोड करते समय डोमेन json फ़ाइल को छोड़ देता है। डेटा अपलोड के बाद BloodHound में DB सांख्यिकी जाँचें और सुनिश्चित करें कि डोमेन ऑब्जेक्ट मौजूद हैं।
2. APOC Neo4j प्लगइन स्थापित करें (हमें जिन शानदार ग्राफ़ संचालनों की आवश्यकता है, उन्हें सक्षम करता है)
अपने Neo4j संस्करण से मेल खाने वाले APOC संस्करण को डाउनलोड करें (apoc-x.x.x.x-all.jar)।
संस्करण संगतता मैट्रिक्स में अपने Neo4j संस्करण से मेल खाने वाला APOC संस्करण ढूँढें।
याद रखने की कोशिश करें कि आपने Neo4j कहाँ स्थापित किया है और APOC jar-फ़ाइल को $NEO4J_HOME/plugins/ के अंतर्गत रखें।
/var/lib/neo4j/अपने पसंदीदा टेक्स्ट एडिटर में neo4j.conf संपादित करें ताकि अप्रतिबंधित APOC पहुंच की अनुमति हो, पंक्ति को बदलकर:
#dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.*
इससे:
dbms.security.procedures.unrestricted=apoc.*
/etc/neo4j/neo4j.conf$NEO4J_HOME/conf/neo4j.confयदि आप एक होस्ट पर ImproHound और दूसरे पर BloodHound चलाना चाहते हैं, तो आपको BloodHound होस्ट पर Neo4j डेटाबेस से दूरस्थ कनेक्शन की अनुमति देनी होगी। ऐसा करने के लिए,
neo4j.confमें पंक्ति से # हटाएँ।
3. विंडोज़ (x64) में नवीनतम रिलीज़ ImproHound.exe डाउनलोड करें और चलाएँ
पुष्टि करें कि आप BloodHound GUI में उपयोग किए जाने वाले समान क्रेडेंशियल्स के साथ BloodHound DB में लॉग इन कर सकते हैं।

डेटाबेस क्रेडेंशियल्स दर्ज करें और कनेक्शन स्थापित करें। ये वही क्रेडेंशियल्स हैं जो आप BloodHound GUI में उपयोग करते हैं।

ImproHound BloodHound डेटाबेस में नोड्स पर एक 'TierX' लेबल बनाता है। यदि आपने पहले इस BloodHound डेटाबेस के साथ ImproHound का उपयोग किया है, तो आपसे पूछा जाएगा कि क्या आप पहले से बनाई गई टियरिंग के साथ जारी रखना चाहते हैं या फिर से शुरू करना चाहते हैं।

ImproHound आपको 'डिफ़ॉल्ट टियरिंग' सेट करने का विकल्प देता है जो Domain Admins को Tier 0, Domain Users को Tier 2 आदि में सेट करेगा, या सभी ऑब्जेक्ट्स को Tier 2 में सेट करेगा।

यह वह पृष्ठ है जहाँ आप AD ऑब्जेक्ट्स को टियरों में वर्गीकृत करेंगे। विंडो OU संरचना प्रदर्शित करती है। प्रत्येक AD ऑब्जेक्ट का एक टियर मान होता है जिसे तीरों के साथ बढ़ाया और घटाया जा सकता है।
बच्चों को टियर पर सेट करें
यदि आप एक डोमेन या AD कंटेनर चुनते हैं, तो आप सभी बच्चों (पुनरावर्ती रूप से) को दिए गए डोमेन/कंटेनर के टियर स्तर पर सेट करने के लिए 'Set children to tier' पर क्लिक कर सकते हैं।
सदस्यों को टियर पर सेट करें
यदि आप एक समूह चुनते हैं, तो आप सभी सदस्यों (पुनरावर्ती रूप से) को दिए गए समूह के टियर स्तर पर सेट करने के लिए 'Set children to tier' पर क्लिक कर सकते हैं।
GPO के लिए टियर सेट करें
यदि आप 'Set tier for GPOs' पर क्लिक करते हैं, तो प्रत्येक GPO का टियर स्तर उस OU के उच्चतम टियर (शून्य के सबसे करीब) के टियर स्तर पर सेट हो जाएगा जिससे GPO जुड़ा हुआ है। OU से न जुड़े GPO का टियर स्तर नहीं बदलेगा।
टियरिंग उल्लंघन प्राप्त करें
BloodHound डेटाबेस में सभी संबंध ढूँढें जहाँ एक AD ऑब्जेक्ट का किसी उच्च टियर (शून्य के करीब) के AD ऑब्जेक्ट पर नियंत्रण है।
आउटपुट के रूप में दो CSV फ़ाइलें उत्पन्न होती हैं:
adobjects-[timestamp].csv: सभी AD ऑब्जेक्ट और वे किस टियर में हैं।
tiering-violations-[timestamp].csv: टियरिंग उल्लंघन।
उल्लंघन CSV में रिकॉर्ड का उदाहरण:
पहला रिकॉर्ड एक Tier 1 सेवा खाता है जिसके पास Tier 0 उपयोगकर्ता खाते का पासवर्ड बदलने की अनुमति है। संबंध विरासत में मिला है। दुर्भाग्य से, BloodHound डेटा में यह देखना हमेशा संभव नहीं होता कि संबंध कहाँ से विरासत में मिला है, लेकिन आप उपयोगकर्ता और कंप्यूटर में लक्षित AD ऑब्जेक्ट पर अनुमतियों का निरीक्षण करके इसे मैन्युअल रूप से जाँच सकते हैं। दूसरा रिकॉर्ड एक समूह है जिसके पास GPO संपादित करने की अनुमति है, जो संभवतः Tier 0 सर्वर वाले OU से जुड़ा हुआ है क्योंकि यह Tier 0 GPO है।
आप सभी संबंध प्रकारों और उनका शोषण कैसे किया जाता है, इसके बारे में यहाँ देख सकते हैं।
यदि आप पाते हैं कि कोई ऑब्जेक्ट बहुत अधिक टियर (शून्य के सबसे करीब) में है, तो आपको इसे ImproHound में सही करना चाहिए, और फिर इस ऑब्जेक्ट को SOURCE के रूप में उल्लंघनों की जाँच करनी चाहिए। यदि कोई ऑब्जेक्ट बहुत कम टियर (अनंत के सबसे करीब) में है, तो आपको इसे ImproHound में सही करना चाहिए और ऑब्जेक्ट को TARGET के रूप में उल्लंघनों की जाँच करनी चाहिए।
टियरिंग हटाएँ
BloodHound डेटाबेस में सभी टियर लेबल और ImproHound द्वारा बनाए गए नोड्स हटा दिए जाएंगे।
AD ऑब्जेक्ट्स को सही ढंग से टियर करना महत्वपूर्ण है। यदि आप एक DC और एक सामान्य निम्न-विशेषाधिकार प्राप्त उपयोगकर्ता को Tier 0 ऑब्जेक्ट के रूप में सेट करते हैं, तो ImproHound यह नहीं पाएगा कि DC पर उपयोगकर्ता की व्यवस्थापक पहुँच एक टियरिंग उल्लंघन है। वही स्थिति यदि आप दोनों को Tier 2 में जोड़ते हैं।
कंप्यूटर को इस आधार पर टियर किया जाता है कि यदि कंप्यूटर से समझौता हो जाए तो यह कितना गंभीर होगा।
उपयोगकर्ताओं को उन कंप्यूटरों के आधार पर टियर किया जाता है जिनमें वे लॉग ऑन कर सकते हैं और उन AD ऑब्जेक्ट्स के आधार पर जिन पर उनका नियंत्रण है। नियंत्रण अनुमति का एक उदाहरण एक उपयोगकर्ता हो सकता है जिसके पास Tier 1 सर्वर से जुड़े GPO को संपादित करने का अधिकार है, जो उपयोगकर्ता को Tier 1 ऑब्जेक्ट बना देगा।
एक समूह अपने सदस्यों के निम्नतम टियर (अनंत के सबसे करीब) से संबंधित होता है, जब तक कि समूह में बुरे सदस्य न हों, उदा. Domain Admins में एक सामान्य उपयोगकर्ता।
उदाहरण: Domain Users एक Tier 2 समूह है भले ही आपके Tier 0 उपयोगकर्ता समूह के सदस्य हैं, क्योंकि Domain Users की सदस्यता उपयोगकर्ताओं को विशेषाधिकार नहीं देती है। दूसरी ओर, Domain Admins समूह एक Tier 0 समूह है क्योंकि इस समूह की सदस्यता उपयोगकर्ताओं को बहुत विशेषाधिकार प्राप्त बनाती है। Cloneable Domain Controllers के पास AFAIK कोई AD विशेषाधिकार नहीं है, लेकिन इसमें केवल Tier 0 ऑब्जेक्ट यानी DC होने चाहिए, इसलिए यह एक Tier 0 समूह है।
एक कंटेनर अपने बाल ऑब्जेक्ट्स के उच्चतम टियर (शून्य के सबसे करीब) या उससे अधिक से संबंधित होता है।
उदाहरण: आपके पास सभी Tier 0, Tier 1, और Tier 2 उपयोगकर्ता Users कंटेनर में हैं। Users कंटेनर पर पूर्ण नियंत्रण अनुमति वाला एक उपयोगकर्ता सभी उपयोगकर्ताओं से समझौता करने में सक्षम होगा, जिसमें Tier 0 उपयोगकर्ता भी शामिल हैं (कुछ को छोड़कर जो संरक्षित हैं, लेकिन उदाहरण के लिए यह महत्वपूर्ण नहीं है), इसलिए Users कंटेनर को Tier 0 ऑब्जेक्ट होना चाहिए।
एक GPO का टियर स्तर उन OU के टियर स्तर द्वारा निर्धारित किया जाता है जिनसे वह जुड़ा हुआ है। GPO उन OU के उच्चतम टियर (शून्य के सबसे करीब) से संबंधित होता है जिनसे वह जुड़ा हुआ है। यह सुनिश्चित करने के लिए 'Set tier for GPOs' बटन का उपयोग करें कि सभी GPO इस सिद्धांत का पालन करें।
उदाहरण: एक उपयोगकर्ता जिसके पास Tier 1 OU से जुड़े GPO को संपादित करने की अनुमति है, वह GPO को संशोधित करके Tier 1 OU के अंतर्गत सभी सर्वरों पर व्यवस्थापकों की सदस्यता को नियंत्रित करने में सक्षम होगा।
#dbms.default_listen_address=0.0.0.0Neo4j को पुनरारंभ करें
systemctl restart neo4jnet stop neo4j && net start neo4j (PowerShell: net stop neo4j; net start neo4j)| SourceTier | SourceType | SourceName | SourceDistinguishedname | Relation | IsInherited | TargetTier | TargetType | TargetName | TargetDistinguishedname |
|---|
| Tier1 | User | [email protected] | CN=svc-monitor,CN=Users,DC=hot,DC=local | ForceChangePassword | True | Tier0 | User | [email protected] | CN=T0_JBK,CN=Users,DC=hot,DC=local |
| Tier2 | Group | [email protected] | CN=Wrk-Admins,CN=Groups,DC=hot,DC=local | GenericWrite | Tier0 | GPO | [email protected] | CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=hot,DC=local |