
LDAP के माध्यम से Active Directory जानकारी डंप करने वाला उपकरण
LDAP के माध्यम से सक्रिय निर्देशिका जानकारी डंप करने वाला उपकरण
एक सक्रिय निर्देशिका डोमेन में, कोई भी प्रमाणित उपयोगकर्ता (या मशीन) LDAP के माध्यम से बहुत सी रोचक जानकारी प्राप्त कर सकता है। यह LDAP को आंतरिक नेटवर्क के पेनटेस्ट के पुनर्संरचना चरण में जानकारी एकत्र करने के लिए एक उपयोगी प्रोटोकॉल बनाता है। एक समस्या यह है कि LDAP से डेटा प्रायः आसानी से पढ़ने योग्य प्रारूप में उपलब्ध नहीं होता है।
ldapdomaindump एक उपकरण है जो इस समस्या को हल करने का लक्ष्य रखता है, LDAP के माध्यम से उपलब्ध जानकारी को एकत्र और पार्स करके मानव-पठनीय HTML प्रारूप में, साथ ही मशीन-पठनीय json और csv/tsv/greppable फ़ाइलों में आउटपुट करता है।
इस उपकरण को निम्नलिखित उद्देश्यों को ध्यान में रखते हुए डिज़ाइन किया गया था:
यह उपकरण डोमेन में वस्तुओं का अवलोकन देने वाली कई फ़ाइलें आउटपुट करता है:
साथ ही दो समूहीकृत फ़ाइलें:
आवश्यक है ldap3 > 2.0 और dnspython। ldapdomaindump को Python 3.6 या उससे अधिक की आवश्यकता है।
निर्भरताओं को मैन्युअल रूप से pip install ldap3 dnspython future के साथ स्थापित किया जा सकता है, लेकिन अधिकांश मामलों में जब आप मुख्य पैकेज को git या pypi से स्थापित करते हैं तो pip द्वारा संभाला जाना चाहिए।
ldapdomaindump पैकेज को git स्रोत से python setup.py install के साथ, या नवीनतम रिलीज़ के लिए pip install ldapdomaindump के साथ स्थापित किया जा सकता है।
उपकरण का उपयोग करने के 3 तरीके हैं:
python ldapdomaindump.py चलाएँpython -m ldapdomaindump चलाकरldapdomaindump चलाकरसहायता -h स्विच से प्राप्त की जा सकती है:
usage: ldapdomaindump.py [-h] [-u USERNAME] [-p PASSWORD] [-at {NTLM,SIMPLE}]
[-o DIRECTORY] [--no-html] [--no-json] [--no-grep]
[--grouped-json] [-d DELIMITER] [-r] [-n DNS_SERVER]
[-m]
HOSTNAME
Domain information dumper via LDAP. Dumps users/computers/groups and
OS/membership information to HTML/JSON/greppable output.
Required options:
HOSTNAME Hostname/ip or ldap://host:port connection string to
connect to (use ldaps:// to use SSL)
Main options:
-h, --help show this help message and exit
-u USERNAME, --user USERNAME
DOMAIN\username for authentication, leave empty for
anonymous authentication
-p PASSWORD, --password PASSWORD
Password or LM:NTLM hash, will prompt if not specified
-at {NTLM,SIMPLE}, --authtype {NTLM,SIMPLE}
Authentication type (NTLM or SIMPLE, default: NTLM)
Output options:
-o DIRECTORY, --outdir DIRECTORY
Directory in which the dump will be saved (default:
current)
--no-html Disable HTML output
--no-json Disable JSON output
--no-grep Disable Greppable output
--grouped-json Also write json files for grouped files (default:
disabled)
-d DELIMITER, --delimiter DELIMITER
Field delimiter for greppable output (default: tab)
Misc options:
-r, --resolve Resolve computer hostnames (might take a while and
cause high traffic on large networks)
-n DNS_SERVER, --dns-server DNS_SERVER
Use custom DNS resolver instead of system DNS (try a
domain controller IP)
-m, --minimal Only query minimal set of attributes to limit memmory
usage
अधिकांश AD सर्वर NTLM प्रमाणीकरण का समर्थन करते हैं। दुर्लभ मामले में यह नहीं करता है, --authtype SIMPLE का उपयोग करें।
डिफ़ॉल्ट रूप से उपकरण सभी फ़ाइलों को HTML, JSON और टैब सीमांकित आउटपुट (greppable) में आउटपुट करता है। सुविधा के लिए दो समूहीकृत फ़ाइलें (users_by_group और computers_by_os) भी हैं। इनमें greppable आउटपुट नहीं है। समूहीकृत फ़ाइलों के लिए JSON आउटपुट डिफ़ॉल्ट रूप से अक्षम है क्योंकि यह बहुत बड़ी फ़ाइलें बनाता है जिनमें कोई भी डेटा नहीं होता जो अन्य फ़ाइलों में पहले से मौजूद नहीं है।
एक महत्वपूर्ण विकल्प -r विकल्प है, जो यह तय करता है कि कंप्यूटर के DNSHostName गुण को IPv4 पते पर हल किया जाना चाहिए या नहीं। हालांकि यह बहुत उपयोगी हो सकता है, DNSHostName गुण स्वचालित रूप से अपडेट नहीं होता है। जब AD डोमेन कंप्यूटर होस्टनाम के लिए उपडोमेन का उपयोग करता है, तो DNSHostName प्रायः गलत होगा और हल नहीं होगा। यह भी ध्यान रखें कि डोमेन में प्रत्येक होस्टनाम को हल करने से डोमेन नियंत्रक पर उच्च लोड हो सकता है।
डिफ़ॉल्ट रूप से ldapdomaindump उन सभी गुणों को डंप करने का प्रयास करेगा जिन्हें यह .json फ़ाइलों में डिस्क पर पढ़ सकता है। बड़े नेटवर्क में, यह बहुत अधिक मेमोरी का उपयोग करता है (क्योंकि समूह संबंध वर्तमान में डिस्क पर लिखे जाने से पहले मेमोरी में गणना किए जाते हैं)। केवल न्यूनतम आवश्यक गुणों (जो डिफ़ॉल्ट रूप से .html और .grep फ़ाइलों में दिखाए जाते हैं) को डंप करने के लिए, --minimal स्विच का उपयोग करें।
LDAPDomainDump में एक उपयोगिता शामिल है जिसका उपयोग ldapdomaindump के .json फ़ाइलों को BloodHound के लिए उपयुक्त CSV फ़ाइलों में बदलने के लिए किया जा सकता है। उपयोगिता को ldd2bloodhound कहा जाता है और स्थापना पर यह आपके पथ में जोड़ दी जाती है। वैकल्पिक रूप से आप इसे python -m ldapdomaindump.convert या python ldapdomaindump/convert.py से चला सकते हैं यदि आप इसे स्रोत से चला रहे हैं।
रूपांतरण उपकरण उपयोगकर्ताओं/समूहों/कंप्यूटरों/विश्वास .json फ़ाइलों को लेगा और उन्हें group_membership.csv और trust.csv में परिवर्तित करेगा जिन्हें आप BloodHound में जोड़ सकते हैं। ध्यान दें कि ये फ़ाइलें केवल BloodHound 1.x के साथ संगत हैं जो काफी पुराना है। नवीनतम संस्करण का समर्थन करने की कोई योजना नहीं है क्योंकि BloodHound.py प्रोजेक्ट इसके लिए बनाया गया था। DCOnly संग्रह विधि के साथ यह उपकरण केवल LDAP से बात करेगा और ldapdomaindump से अधिक जानकारी एकत्र करेगा।
LDAPDomainDump में एक उपयोगिता शामिल है जिसका उपयोग ldapdomaindump की .json फ़ाइलों को enum4linux जैसे आउटपुट में बदलने के लिए किया जा सकता है। उपयोगिता को ldd2pretty कहा जाता है और स्थापना पर यह आपके पथ में जोड़ दी जाती है। वैकल्पिक रूप से आप इसे python -m ldapdomaindump.pretty या python ldapdomaindump/pretty.py से चला सकते हैं यदि आप इसे स्रोत से चला रहे हैं।
MIT