
أداة تفريغ معلومات Active Directory عبر LDAP
مُفَرِّغ معلومات Active Directory عبر LDAP
في نطاق Active Directory، يمكن استرجاع الكثير من المعلومات المهمة عبر LDAP بواسطة أي مستخدم موثَّق (أو جهاز). وهذا يجعل LDAP بروتوكولاً مثيراً للاهتمام لجمع المعلومات في مرحلة الاستطلاع (recon) لاختبار الاختراق لشبكة داخلية. المشكلة هي أن البيانات من LDAP غالباً ما تكون غير متاحة بتنسيق سهل القراءة.
ldapdomaindump هي أداة تهدف إلى حل هذه المشكلة، من خلال جمع وتحليل المعلومات المتاحة عبر LDAP وإخراجها بتنسيق HTML قابل للقراءة البشرية، بالإضافة إلى ملفات JSON و CSV/TSV/greppable قابلة للقراءة آلياً.
تم تصميم الأداة مع الأهداف التالية:
تُخرج الأداة عدة ملفات تحتوي على نظرة عامة للكائنات في النطاق:
بالإضافة إلى ملفين مجمّعين:
يتطلب ldap3 > 2.0 و dnspython. ldapdomaindump يتطلب Python 3.6 أو أعلى.
يمكن تثبيت المتطلبات يدوياً باستخدام pip install ldap3 dnspython future، ولكن في معظم الحالات يجب أن يتولى pip ذلك عند تثبيت الحزمة الرئيسية إما من git أو pypi.
يمكن تثبيت حزمة ldapdomaindump باستخدام python setup.py install من مصدر git، أو لأحدث إصدار باستخدام pip install ldapdomaindump.
هناك 3 طرق لاستخدام الأداة:
python ldapdomaindump.pypython -m ldapdomaindumpldapdomaindumpيمكن الحصول على المساعدة باستخدام المفتاح -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 أداة مساعدة يمكن استخدامها لتحويل ملفات .json الخاصة بـ ldapdomaindump إلى ملفات CSV مناسبة لـ BloodHound. تُسمى الأداة 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 أداة مساعدة يمكن استخدامها لإخراج ملفات .json الخاصة بـ ldapdomaindump إلى مخرجات تشبه enum4linux. تُسمى الأداة ldd2pretty وتُضاف إلى مسارك عند التثبيت. بدلاً من ذلك، يمكنك تشغيلها باستخدام python -m ldapdomaindump.pretty أو باستخدام python ldapdomaindump/pretty.py إذا كنت تشغلها من المصدر.
MIT