
TUI-आधारित Active Directory डेटा संग्राहक जो LDAP ऑब्जेक्ट्स को ग्रहण करता है, दूरस्थ RPC/SMB/HTTP संग्रह करता है, और आक्रमण पथ विश्लेषण के लिए BloodHound CE-संगत डंप उत्पन्न करता है।
सक्रिय निर्देशिका संग्रह के लिए एक TUI।
इस परियोजना के मुख्य लक्ष्य हैं:
Flashingestor 3 मूलभूत अलग-अलग चरणों LDAP आहरण, दूरस्थ संग्रह और रूपांतरण को लागू करता है, अन्य कलेक्टरों के विपरीत जो निर्दिष्ट विधियों को एक ही चरण में चलाते हैं:
आहरण (Ctrl+l) - LDAP से कच्ची वस्तु विशेषताओं का डेटा एकत्र करता है और इसे output/ldap के अंतर्गत मध्यवर्ती msgpack फ़ाइलों में संग्रहीत करता है। config.yaml में क्वेरी अनुकूलित की जा सकती है।
दूरस्थ (Ctrl+r) - इन मध्यवर्ती फ़ाइलों को मेमोरी में पढ़ता है, एकत्र करने के लिए कंप्यूटरों की सूची की गणना करता है, और Computer और EnterpriseCA ऑब्जेक्ट्स के लिए प्रासंगिक दूरस्थ जानकारी प्राप्त करने के लिए RPC/SMB/HTTP अनुरोधों की एक श्रृंखला निष्पादित करता है, जो output/remote के अंतर्गत संग्रहीत होते हैं।
रूपांतरण (Ctrl+s) - मध्यवर्ती फ़ाइलों को मेमोरी में पढ़ता है, आहरण और दूरस्थ संग्रह चरणों से जानकारी को मर्ज करता है, और output/bloodhound के अंतर्गत BloodHound-संगत डंप उत्पन्न करता है - यह चरण पूरी तरह से ऑफ़लाइन है।
अधिक तकनीकी विवरण और अंतर्दृष्टि के लिए, हमारा 📖 विकी देखें।
$ git clone https://github.com/Macmod/flashingestor
$ cd flashingestor
# To build only:
$ go build ./cmd/flashingestor
# To install the executable to $GOBIN or $GOPATH/bin:
$ go install ./cmd/flashingestor
[!NOTE] आप प्रदान किए गए रिलीज़ से पूर्व-निर्मित बाइनरी का भी उपयोग कर सकते हैं।
निम्नलिखित में से किसी एक के साथ प्रमाणित करें:
# Anonymous
# [Requires dSHeuristics of 0000002 in the DirectoryServices object
# and can have limited visibility due to lack of Read ACEs]
$ ./flashingestor -u '@<DOMAIN>' -p '' [...]
# User + Password
$ ./flashingestor -u <USER>@<DOMAIN> -p <PASSWORD> [-k] [...]
# User + NTHash
$ ./flashingestor -u <USER>@<DOMAIN> -H <NTHASH> [-k] [...]
# User + PFX
$ ./flashingestor -u <USER>@<DOMAIN> --pfx <PFXPATH> [--pfx-password <PFXPASS>] [-k] [...]
# User + PEM
$ ./flashingestor -u <USER>@<DOMAIN> --cert <PEMPATH> --key <KEYPATH> [-k] [...]
# User + AESKey
$ ./flashingestor -u <USER>@<DOMAIN> --aes-key <AESKEY> -k [...]
# User + Ticket
$ ./flashingestor -u <USER>@<DOMAIN> --ccache /path/to/ticket.ccache -k [...]
or
$ KRB5CCNAME=/path/to/ticket.ccache ./flashingestor -u <USER>@<DOMAIN> -k [...]
फिर चाहें तो चरणों को चलाएँ। केवल LDAP संग्रह (DCOnly जिसमें GPOLocalGroup और CertServices अपवाद हैं) के लिए, बस Ctrl+l चलाएँ, जाँचें कि आहरण सफल हुआ या नहीं, और फिर अंतिम डंप उत्पन्न करने के लिए Ctrl+s चलाएँ।
flashingestor चलाने के लिए --dc और --dns निर्दिष्ट करने की अनुशंसा की जाती है। यदि आप --dc निर्दिष्ट नहीं करते हैं, तो flashingestor इसे SRV / A लुकअप के साथ खोजने का प्रयास करेगा, जिससे प्रारंभिक आहरण चरण में देरी हो सकती है।
फिर आपको --dns निर्दिष्ट करना होगा यदि आपका मानक DNS सर्वर डोमेन से अवगत नहीं है - जब AD-एकीकृत DNS उपयोग में हो, तो बस --dns को उस DC की ओर इंगित करें जो इसे होस्ट करता है। इसके अतिरिक्त, --dc की परवाह किए बिना, यदि आप दूरस्थ संग्रह चरण चलाना चाहते हैं और आपका DNS सर्वर डोमेन में कंप्यूटरों से अवगत नहीं है, तो आपको लुकअप के लिए --dns निर्दिष्ट करना होगा।
[!TIP] एकाधिक DC वाले वातावरण में, आप सभी DC के लिए विलंबता को बेंचमार्क करने और आहरण के लिए एक अच्छा लक्ष्य उम्मीदवार खोजने के लिए
dcprobeउपयोगिता का भी उपयोग कर सकते हैं:$ go build ./cmd/dcprobe $ ./dcprobe --dns 192.168.88.6 -d creta.local -r 10
यदि कॉन्फ़िगरेशन फ़ाइल वर्तमान निर्देशिका में config.yaml के रूप में या --config के माध्यम से प्रदान किए गए पथ में मौजूद नहीं है, तो डिफ़ॉल्ट विकल्प (प्रदान की गई config.yaml के समान) मान लिए जाएंगे - वे config/fallback.go में हार्डकोडेड हैं। अधिक जानकारी के लिए, कॉन्फ़िगरेशन फ़ाइल पढ़ें।
लॉग के लिए आउटपुट फ़ाइल निर्दिष्ट करने के लिए --log का उपयोग करने पर विचार करें (यदि आपको TUI बंद करने के बाद उनकी समीक्षा करने की आवश्यकता होगी) और डीबग लॉग संदेश देखने के लिए -vv का उपयोग करें, क्योंकि ये संभावित समस्याओं के समाधान में सहायता कर सकते हैं। कमांड-लाइन तर्कों के पूर्ण संदर्भ के लिए, कमांड-लाइन तर्क पढ़ें।
[!NOTE] प्रदान की गई
config.yamlमें डिफ़ॉल्ट क्वेरीज़ BloodHound रूपांतरण के लिए आवश्यक जानकारी को ध्यान में रखकर डिज़ाइन की गई हैं। आपconfig.yamlमें क्वेरी या विशेषताओं को अनुकूलित करना चुन सकते हैं, लेकिन आवश्यक विशेषताओं को हटाने और खोज फ़िल्टर के अर्थ को बदलने से बचने का प्रयास करना सबसे अच्छा है।
यदि recurse_trusts को true पर सेट किया गया है, तो यह आहरण के लिए प्रदान किए गए प्रारंभिक क्रेडेंशियल के साथ पुनरावर्ती रूप से पाए गए किसी भी विश्वसनीय डोमेन को आहरित करेगा।
यदि search_forest को true पर सेट किया गया है, तो यह Configuration विभाजन से प्रारंभिक डोमेन के समान फ़ॉरेस्ट का हिस्सा डोमेन को आहरित करेगा - कोई अतिरिक्त क्वेरी जारी नहीं की जाएगी, क्योंकि यह पहले से ही डिफ़ॉल्ट आहरण योजना का हिस्सा है। दोनों विकल्प एक साथ सेट किए जा सकते हैं, और flashingestor किसी भी डोमेन को केवल एक बार आहरित करेगा (या तो ट्रस्ट के माध्यम से, या वर्तमान फ़ॉरेस्ट के माध्यम से)।
यदि recurse_trusts सक्षम है और recurse_feasible_only भी true पर सेट है, तो यह केवल एक विश्वसनीय डोमेन को आहरित करने का प्रयास करेगा यदि ट्रस्ट:
इसका मतलब है कि केवल आउटबाउंड ट्रस्ट को पार नहीं किया जाएगा, और ट्रस्ट के पहले स्तर के अलावा, आहरण पथ गैर-संक्रमणीय ट्रस्ट पर रुक जाते हैं - यदि B, A पर गैर-संक्रमणीय रूप से भरोसा करता है, तो A अभी भी B में प्रमाणित कर सकता है; लेकिन यदि C भी B पर गैर-संक्रमणीय रूप से भरोसा करता है, तो A, C में प्रमाणित नहीं कर सकता है।
[!IMPORTANT]
recurse_trusts/search_forestखोजे गए डोमेन में LDAP में केवल स्रोत डोमेन से निर्दिष्ट क्रेडेंशियल के साथ प्रमाणित करेंगे जब प्रदान किए गए क्रेडेंशियल या तोसादा पासवर्डयाNT हैशहों; इस उद्देश्य के लिए रेफरल टिकट जारी करने के लिए TGT का उपयोग करना सैद्धांतिक रूप से संभव है लेकिनadauthलाइब्रेरी में अभी तक लागू नहीं किया गया है।