
BloodHound को विस्तारित करता है ताकि macOS होस्ट्स से सक्रिय निर्देशिका (Active Directory) संबंधों को एकत्र और शामिल किया जा सके, जिसमें लॉग-इन उपयोगकर्ता, व्यवस्थापक समूह, SSH/VNC/AppleEvent पहुँच किनारे शामिल हैं, आक्रमण पथ मानचित्रण के लिए।
MacHound, Bloodhound ऑडिटिंग टूल का एक विस्तार है जो MacOS होस्ट पर Active Directory संबंधों को एकत्र और अंतर्ग्रहण करने की अनुमति देता है। MacHound, Mac मशीनों पर लॉग-इन उपयोगकर्ताओं और प्रशासनिक समूह सदस्यों के बारे में जानकारी एकत्र करता है और जानकारी को Bloodhound डेटाबेस में अंतर्ग्रहण करता है। HasSession और AdminTo किनारों का उपयोग करने के अलावा, MacHound Bloodhound डेटाबेस में तीन नए किनारे जोड़ता है:
MacHound के बारे में अधिक जानने के लिए, परिचय पोस्ट देखें।
MacHound वर्तमान में सक्रिय उपयोगकर्ताओं को क्वेरी करने के लिए utmpx API और Active Directory उपयोगकर्ताओं को मान्य करने के लिए OpenDirectory और सदस्यता API का उपयोग करता है।
MacHound निम्नलिखित स्थानीय प्रशासनिक समूहों के Active Directory सदस्यों को एकत्र करता है:
स्थानीय प्रशासनिक समूह, रूट संचालन की अनुमति देता है।
इस स्थानीय समूह के सदस्यों को दूरस्थ लॉगिन सेवा (SSH) तक पहुँचने की अनुमति है।
इस स्थानीय समूह के सदस्यों को दूरस्थ रूप से AppleEvent स्क्रिप्ट निष्पादित करने की अनुमति है।
इस स्थानीय समूह के सदस्यों को स्क्रीन शेयरिंग सेवा (VNC) तक पहुँचने की अनुमति है।
MacHound दो मुख्य घटकों में विभाजित है: कलेक्टर और इनजेस्टर।
MacHound कलेक्टर एक Python3.7 स्क्रिप्ट है जो Active Directory से जुड़े MacOS होस्ट पर स्थानीय रूप से चलती है। कलेक्टर विशेषाधिकार प्राप्त उपयोगकर्ताओं और समूहों के बारे में जानकारी के लिए स्थानीय OpenDirectory और Active Directory से क्वेरी करता है। निष्पादन का आउटपुट एक JSON फ़ाइल है जिसमें सभी एकत्रित जानकारी होती है।
MacHound इनजेस्टर एक Python3.7 स्क्रिप्ट है जो आउटपुट JSON फ़ाइलों (प्रति होस्ट एक) को पार्स करता है, neo4j डेटाबेस से जुड़ता है और किनारों को डेटाबेस में सम्मिलित करता है। इनजेस्टर neo4j डेटाबेस से और उसमें जानकारी क्वेरी करने के लिए Python के लिए neo4j लाइब्रेरी का उपयोग करता है। इनजेस्टर को ऐसे होस्ट पर निष्पादित किया जाना चाहिए जिसके पास neo4j डेटाबेस तक TCP पहुँच हो।
MacHound को Python3.7 की आवश्यकता है। इनजेस्टर को Python3.7 के लिए neo4j लाइब्रेरी की आवश्यकता है।
कलेक्टर को Macs पर स्थानीय रूप से परिनियोजित और निष्पादित किया जाना चाहिए। आउटपुट स्थानीय रूप से संग्रहीत होता है और इसे इनजेस्टर चलाने वाले होस्ट पर स्थानांतरित करने की आवश्यकता होती है। कलेक्टर Python3.7 में निर्मित लाइब्रेरी पर निर्भर करता है और अतिरिक्त इंस्टॉलेशन की आवश्यकता नहीं होती है। MacHound को py2app लाइब्रेरी का उपयोग करके एक एप्लिकेशन के रूप में संकलित किया जा सकता है ताकि परिनियोजन को आसान बनाया जा सके।
कलेक्टर डिफ़ॉल्ट रूप से कोई तर्क नहीं लेता है, सभी जानकारी क्वेरी करता है, और आउटपुट फ़ाइल ./output.json में लिखता है। कलेक्टर को रूट उपयोगकर्ता के रूप में निष्पादित किया जाना चाहिए।
collector.py -o <output_file> -c <Admin,CanSSH,CanVNC,CanAE,HasSession> [-v] [-l log_file_path]
इनजेस्टर को ऐसे होस्ट पर परिनियोजित किया जाना चाहिए जिसका Bloodhound के neo4j डेटाबेस से सीधा TCP कनेक्शन हो, अधिमानतः सुरक्षा जोखिमों से बचने के लिए neo4j डेटाबेस सर्वर पर स्थानीय रूप से। इनजेस्टर को Python के लिए neo4j ड्राइवर की स्थापना की आवश्यकता होती है (आवश्यकताएँ फ़ाइल देखें)।
ingestor.py <url_to_neo4j> -u <username> -p <password> -i <json_folder>
MacHound GPL-3.0 लाइसेंस के तहत जारी किया गया है। अधिक जानकारी के लिए LICENSE.md देखें।
किसी भी प्रश्न, सुझाव, बग रिपोर्टिंग के लिए कृपया [email protected] पर संपर्क करने में संकोच न करें।