
ADRecon का Python3 कार्यान्वयन जो NTLM और Kerberos प्रमाणीकरण के साथ LDAP क्वेरी करने का समर्थन करता है। आपके AD डोमेन के बारे में अलग-अलग CSV फ़ाइलें और एक एकल XSLX + HTML रिपोर्ट उत्पन्न करता है।
पेन्टेस्टर्स और ब्लू टीमों के लिए एक बेहतर ADRecon का Python3 कार्यान्वयन।
ADRecon एक उपकरण है जो MS Active Directory के बारे में जानकारी एकत्र करता है और लक्ष्य AD वातावरण की वर्तमान स्थिति की समग्र तस्वीर प्रदान करने के लिए XSLX रिपोर्ट उत्पन्न करता है।
[!TIP] यदि आप एक रेड टीम हैं, तो इसके बजाय ADRecon-ADWS देख सकते हैं।
# pypi से स्थिर रिलीज़
pipx install pyadrecon
# 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 हमेशा पहले TCP/636 पर LDAPS प्रयास करता है।
यदि फ्लैग
--sslका उपयोग नहीं किया जाता है, तो TCP/389 पर LDAP फॉलबैक के रूप में प्रयास किया जा सकता है।
[!WARNING] यदि LDAP चैनल बाइंडिंग सक्षम है, तो यह स्क्रिप्ट
automatic bind not successful - strongerAuthRequiredके साथ विफल हो जाएगी, क्योंकि ldap3 इसका समर्थन नहीं करता (देखें यहाँ)। आपको इसके बजाय Kerberos प्रमाणीकरण का उपयोग करना होगा।यदि आप Linux पर Kerberos प्रमाणीकरण का उपयोग करते हैं, तो कृपया एक मान्य
/etc/krb5.confऔर/etc/hostsमें DC होस्टनाम प्रविष्टि बनाएँ। यह पढ़ सकते हैं। यदि आप Windows पर हैं, तो कृपया सुनिश्चित करें कि आपके पास मान्य Kerberos टिकट हैं। यह पढ़ सकते हैं। ध्यान दें कि आप स्क्रिप्ट को--tgt-fileया--tgt-base64के माध्यम से पहले से मौजूद TGT टिकट प्रदान कर सकते हैं। उदाहरण के लिए, Netexec द्वाराnetexec smb <TARGET> <ARGS> --generate-tgt <FILEMAME>के माध्यम से प्राप्त किया गया।
GHCR.IO पर एक Docker इमेज भी उपलब्ध है।
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 के रूप में संदर्भित किया जाता है।
हालाँकि, आप स्वतंत्र रूप से चलाने के लिए मॉड्यूल का अपना संग्रह चुन सकते हैं:
| आइकन | अर्थ |
|---|---|
| 🛑 | प्रशासनिक डोमेन विशेषाधिकारों की आवश्यकता है (जैसे डोमेन व्यवस्थापक) |
| ✅ | नियमित डोमेन विशेषाधिकारों की आवश्यकता है (जैसे प्रमाणित उपयोगकर्ता) |
| 💥 | बीटा स्थिति में नया संग्रह मॉड्यूल। परिणाम गलत हो सकते हैं। |
वन और डोमेन
forest ✅domain ✅trusts ✅sites ✅subnets ✅schema or schemahistory ✅डोमेन नियंत्रक
dcs or domaincontrollers ✅उपयोगकर्ता और समूह
users ✅userspns ✅groups ✅groupmembers ✅protectedgroups ✅💥krbtgt ✅asreproastable ✅kerberoastable ✅कंप्यूटर और प्रिंटर
computers ✅computerspns ✅printers ✅OU और समूह नीति
ous ✅gpos ✅gplinks ✅पासवर्ड और क्रेडेंशियल्स
passwordpolicy ✅fgpp or finegrainedpasswordpolicy 🛑laps 🛑bitlocker 🛑💥प्रबंधित सेवा खाते
gmsa or groupmanagedserviceaccounts ✅💥dmsa or delegatedmanagedserviceaccounts ✅💥
प्रमाणपत्र
adcs or certificates ✅💥
DNS
dnszones ✅dnsrecords ✅PyADRecon स्वचालित रूप से एक HTML डैशबोर्ड उत्पन्न करता है जिसमें सभी संग्रह मॉड्यूल निष्पादित होने पर मुख्य आँकड़े और सुरक्षा निष्कर्ष होते हैं।
यदि आवश्यक हो, तो आप --no-dashboard का उपयोग करके प्रारंभिक डेटा संग्रह के दौरान डैशबोर्ड निर्माण को अक्षम कर सकते हैं। बाद में डैशबोर्ड को --generate-dashboard-from <CSV_DIR> के साथ मौजूदा CSV फ़ाइलों से उत्पन्न किया जा सकता है।
[!CAUTION] यह एक बीटा सुविधा है। प्रदर्शित डेटा गलत तरीके से पार्स या समस्या के रूप में रिपोर्ट किया जा सकता है। इसे संदेह की दृष्टि से लें!
निम्नलिखित लोगों को बहुत धन्यवाद:
PyADRecon को MIT लाइसेंस के तहत जारी किया गया है।
निम्नलिखित तृतीय-पक्ष पुस्तकालयों का उपयोग किया जाता है:
| पुस्तकालय | लाइसेंस |
|---|---|
| ldap3 | LGPL v3 |
| openpyxl | MIT |
| gssapi | MIT |
| impacket | Apache 2.0 |
| winkerberos |
कृपया इस सॉफ़्टवेयर का उपयोग या पुनर्वितरण करते समय इन पुस्तकालयों के संबंधित लाइसेंसों का संदर्भ लें।
| Apache 2.0 |