
نسخة مطبقة بلغة Python3 من أداة ADRecon تدعم المصادقة عبر بروتوكولي NTLM و Kerberos للاستعلام عن LDAP. تولّد ملفات CSV منفصلة وتقريرًا واحدًا بتنسيق XLSX + HTML حول نطاق AD الخاص بك.
تطبيق بلغة Python3 لأداة ADRecon المحسّنة لصالح مختبري الاختراق وفرق الدفاع الأزرق.
ADRecon هي أداة تجمع معلومات حول Active Directory من Microsoft وتُنشئ تقرير XLSX لتوفير صورة شاملة للحالة الحالية لبيئة AD المستهدفة.
[!TIP] إذا كنت من فريق الهجوم (Red Team)، قد ترغب في الاطلاع على ADRecon-ADWS بدلاً من ذلك.
# الإصدار المستقر من pypi
pipx install pyadrecon
# أحدث commit من github
pipx install git+https://github.com/l4rm4nd/PyADRecon
ثم تحقق من التثبيت:
pyadrecon --version
[!TIP] لنظام ويندوز، قد تقرأ هذا. يدعم NTLM + Kerberos.
usage: pyadrecon.py [-h] [--version] [--generate-excel-from CSV_DIR] [-dc DOMAIN_CONTROLLER] [-u USERNAME] [-p [PASSWORD]] [-d DOMAIN] [--auth {ntlm,kerberos}] [--tgt-file TGT_FILE] [--tgt-base64 TGT_BASE64]
[--ssl] [--port PORT] [-o OUTPUT] [--page-size PAGE_SIZE] [--threads THREADS] [--dormant-days DORMANT_DAYS] [--password-age PASSWORD_AGE] [--only-enabled] [--collect COLLECT]
[--no-excel] [-v]
PyADRecon - Python Active Directory Reconnaissance Tool
options:
-h, --help show this help message and exit
--version show program's version number and exit
--generate-excel-from CSV_DIR
Generate Excel report from CSV directory (standalone mode, no AD connection needed)
--generate-dashboard-from CSV_DIR
Generate HTML dashboard from existing CSV files (standalone mode)
-dc, --domain-controller DOMAIN_CONTROLLER
Domain Controller IP or hostname
-u, --username USERNAME
Username for authentication
-p, --password [PASSWORD]
Password for authentication (optional if using TGT)
-d, --domain DOMAIN Domain name (e.g., DOMAIN.LOCAL) - Required for Kerberos auth
--auth {ntlm,kerberos}
Authentication method (default: ntlm)
--tgt-file TGT_FILE Path to Kerberos TGT ccache file (for Kerberos auth)
--tgt-base64 TGT_BASE64
Base64-encoded Kerberos TGT ccache (for Kerberos auth)
--ssl Force SSL/TLS (LDAPS). No LDAP fallback allowed.
--port PORT LDAP port (default: 389, use 636 for LDAPS)
-o, --output OUTPUT Output directory (default: PyADRecon-Report-<timestamp>)
--page-size PAGE_SIZE
LDAP page size (default: 500)
--dormant-days DORMANT_DAYS
Days for dormant account threshold (default: 90)
--password-age PASSWORD_AGE
Days for password age threshold (default: 180)
--only-enabled Only collect enabled objects
--collect COLLECT Comma-separated modules to collect (default: all)
--workstation WORKSTATION
Explicitly spoof workstation name for NTLM authentication (default: empty string, bypasses userWorkstations restrictions)
--no-excel Skip Excel report generation
--no-dashboard Skip interactive HTML dashboard generation
-v, --verbose Verbose output
Examples:
# Basic usage with NTLM authentication
pyadrecon.py -dc 192.168.1.1 -u admin -p password123 -d DOMAIN.LOCAL
# With Kerberos authentication (bypasses channel binding)
pyadrecon.py -dc dc01.domain.local -u admin -p password123 -d DOMAIN.LOCAL --auth kerberos
# With Kerberos using TGT from file (bypasses channel binding)
pyadrecon.py -dc dc01.domain.local -u admin -d DOMAIN.LOCAL --auth kerberos --tgt-file /tmp/admin.ccache
# With Kerberos using TGT from base64 string (bypasses channel binding)
pyadrecon.py -dc dc01.domain.local -u admin -d DOMAIN.LOCAL --auth kerberos --tgt-base64 BQQAAAw...
# Only collect specific modules
pyadrecon.py -dc 192.168.1.1 -u admin -p pass -d DOMAIN.LOCAL --collect users,groups,computers
# Output to specific directory
pyadrecon.py -dc 192.168.1.1 -u admin -p pass -d DOMAIN.LOCAL -o /tmp/adrecon_output
# Generate Excel report from existing CSV files (standalone mode)
pyadrecon.py --generate-excel-from /path/to/CSV-Files -o report.xlsx
[!TIP] يُحاول PyADRecon دائمًا استخدام LDAPS على TCP/636 أولاً.
إذا لم يتم استخدام العلامة
--ssl، فقد يُحاول استخدام LDAP على TCP/389 كخيار احتياطي.
[!WARNING] إذا كانت ربط القناة (channel binding) ممكّنة لـ LDAP، فسيفشل هذا السكريبت مع الخطأ
automatic bind not successful - strongerAuthRequired، لأن ldap3 لا يدعمها (انظر هنا). يجب استخدام مصادقة Kerberos بدلاً من ذلك.إذا كنت تستخدم مصادقة Kerberos تحت Linux، يُرجى إنشاء ملف
/etc/krb5.confصالح وإدخال اسم مضيف DC في/etc/hosts. قد تقرأ هذا. إذا كنت على ويندوز، تأكد من حصولك على تذاكر Kerberos صالحة. قد تقرأ هذا. لاحظ أنه يمكنك تقديم تذكرة TGT موجودة مسبقًا للسكريبت عبر--tgt-fileأو--tgt-base64. على سبيل المثال، تم الحصول عليها بواسطة Netexec عبرnetexec smb <TARGET> <ARGS> --generate-tgt <FILEMAME>.
توجد أيضًا صورة Docker متاحة على GHCR.IO.
docker run --rm -v /etc/krb5.conf:/etc/krb5.conf:ro -v /etc/hosts:/etc/hosts:ro -v ./:/tmp/pyadrecon_output ghcr.io/l4rm4nd/pyadrecon:latest -dc dc01.domain.local -u admin -p password123 -d DOMAIN.LOCAL -o /tmp/pyadrecon_output
بشكل افتراضي، يقوم PyADRecon بتشغيل جميع وحدات الجمع. يُشار إليها باسم default أو all.
ومع ذلك، يمكنك اختيار مجموعة مخصصة من الوحدات لتشغيلها:
| الأيقونة | المعنى |
|---|---|
| 🛑 | يتطلب صلاحيات إدارية على مستوى المجال (مثل Domain Admins) |
| ✅ | يتطلب صلاحيات مجال عادية (مثل Authenticated Users) |
| 💥 | وحدة جمع جديدة في مرحلة تجريبية. النتائج قد تكون غير صحيحة. |
الغابة والمجال (Forest & Domain)
forest ✅domain ✅trusts ✅sites ✅subnets ✅schema أو schemahistory ✅وحدات تحكم المجال (Domain Controllers)
dcs أو domaincontrollers ✅المستخدمون والمجموعات (Users & Groups)
users ✅userspns ✅groups ✅groupmembers ✅protectedgroups ✅💥krbtgt ✅asreproastable ✅kerberoastable ✅أجهزة الكمبيوتر والطابعات (Computers & Printers)
computers ✅computerspns ✅printers ✅وحدات تنظيمية وسياسات المجموعة (OUs & Group Policy)
ous ✅gpos ✅gplinks ✅كلمات المرور وبيانات الاعتماد (Passwords & Credentials)
passwordpolicy ✅fgpp أو finegrainedpasswordpolicy 🛑laps 🛑bitlocker 🛑💥حسابات الخدمة المُدارة (Managed Service Accounts)
gmsa أو groupmanagedserviceaccounts ✅💥dmsa أو delegatedmanagedserviceaccounts ✅💥
الشهادات (Certificates)
adcs أو certificates ✅💥
DNS
dnszones ✅dnsrecords ✅يقوم PyADRecon تلقائيًا بإنشاء لوحة تحكم HTML تحتوي على إحصائيات رئيسية واكتشافات أمنية عند تشغيل جميع وحدات الجمع.
إذا لزم الأمر، يمكنك تعطيل إنشاء لوحة التحكم أثناء جمع البيانات الأولي باستخدام --no-dashboard. ويمكن لاحقًا إنشاء لوحة التحكم من ملفات CSV الموجودة باستخدام --generate-dashboard-from <CSV_DIR>.
[!CAUTION] هذه ميزة تجريبية. قد يتم تحليل البيانات المعروضة بشكل خاطئ أو الإبلاغ عنها كمشكلة. يُرجى التعامل معها بحذر!
شكر جزيل للأشخاص التالية أسماؤهم:
PyADRecon مُصدَر بموجب ترخيص MIT.
تُستخدم المكتبات الخارجية التالية:
| المكتبة | الترخيص |
|---|---|
| ldap3 | LGPL v3 |
| openpyxl | MIT |
| gssapi | MIT |
| impacket | Apache 2.0 |
| winkerberos |
يُرجى الرجوع إلى التراخيص الخاصة بهذه المكتبات عند استخدام أو إعادة توزيع هذا البرنامج.
| Apache 2.0 |