Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
adnullenum — SAMR और LSARPC पर एक-पास अनाम Active Directory गणना — null session, कोई क्रेडेंशियल नहीं, संरचित पुनः प्रयोग योग्य आउटपुट के साथ। | Kitploit
उपकरण/GitHubGitHub/crypt0p3g/adnullenum
रक्षात्मक उपकरणOSINT (खुला स्रोत खुफिया)टोहीभेद्यता विश्लेषणजानकारी एकत्र करनानेटवर्क सुरक्षापेनिट्रेशन टेस्टिंगरेड टीमिंग
GitHubcrypt0p3g/adnullenum

adnullenum

SAMR और LSARPC पर एक-पास अनाम Active Directory गणना — null session, कोई क्रेडेंशियल नहीं, संरचित पुनः प्रयोग योग्य आउटपुट के साथ।

रिपॉजिटरी देखें
377103 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

adnullenum

एक anonymous (null) session के लिए single-pass Active Directory enumerator, जो \samr और \lsarpc named pipes का उपयोग करता है। किसी credentials की आवश्यकता नहीं।

यह वह कुछ नहीं करता जो classic tools नहीं कर सकते। यह जो करता है वह सब कुछ एक ही run में इकट्ठा करता है और परिणामों को साफ़-सुथरे ढंग से प्रस्तुत करता है। किसी engagement में जब आपके पास कोई domain account नहीं होता, DNS के माध्यम से DC मिल जाता है, और आप पूरी तस्वीर चाहते हैं — accounts, per-user detail, groups, policy, और LSA/DNS से जुड़ी जानकारी — बिना rpcclient sessions या कई अलग-अलग scripts को जोड़कर उनके stdout को हाथ से parse किए। यह आपके लिए वह pass करता है और structured, reusable output लिखता है:

  • एक command domain info, policy, RID discovery, per-user detail और groups को cover करता है, वह method चुनते हुए जो काम करता है और जब SAMR locked हो तो gracefully degrade करता है (देखें How it compares और When SAMR is locked down)।
  • Output अगले tool को feed करने के लिए बनाया गया। Timestamped run folders जिनमें txt / csv / (optional) json, एक manifest.json, उपयोग के लिए तैयार userlist.txt / computerlist.txt, और एक saved RID list जिसे आप दोबारा brute-force करने के बजाय reuse कर सकते हैं।
  • दिलचस्प accounts flagged होते हैं जैसे-जैसे वे सामने आते हैं (AS-REP-roastable, password not required, unconstrained delegation, इत्यादि)।

कृपया इसे केवल उन systems पर चलाएँ जिनके आप मालिक हैं या जिन्हें test करने के लिए आपको स्पष्ट रूप से authorized किया गया है। किसी और की directory को बिना अनुमति enumerate करना ठीक नहीं है, और आप कहाँ हैं इसके आधार पर यह अवैध भी हो सकता है।

दो versions हैं जो एक जैसा व्यवहार करते हैं। जो library आपके पास हो वही उपयोग करें:

  • adnullenum.py — impacket पर आधारित।

यह क्या collect करता है

  • Users, computers और groups। Machine accounts (जो $ पर समाप्त होते हैं) को असली users से अलग किया जाता है।
  • पूरी per-user detail। Description, group memberships, password और logon timestamps, account flags, और login restrictions (logon hours, allowed workstations, expiry)।
  • Groups उनके members के साथ, असली नामों में resolved।
  • Domain और policy info। Domain name, SID, server role, वास्तविक user/group/computer counts, और password तथा lockout policy।
  • LSA / DNS details। DNS domain और forest name, domain GUID, domain SID, और कोई भी trusts — ये अक्सर तब भी वापस आते हैं जब SAMR खुद locked हो।

यह आपके लिए दिलचस्प accounts भी flag करता है: जैसे "password not required", "password never expires", AS-REP-roastable, unconstrained delegation, never logged on, या ऐसा description जिसमें password का ज़िक्र हो।

इससे स्वाभाविक रूप से कुछ चीज़ें निकलती हैं:

  • आपके द्वारा collect किए गए usernames AS-REP roasting के लिए आपकी list हैं।
  • Computer names pre-Windows 2000 machine-account checks के लिए आपकी list हैं।

यह कैसे तुलना करता है

यहाँ सब कुछ standard anonymous SAMR/LSARPC है, और स्थापित tools पहले से ही वही data तक पहुँचते हैं। यह एक convenience wrapper है, कोई नई capability नहीं, इसलिए alternatives जानना उपयोगी है:

  • enum4linux-ng सबसे निकटतम equivalent है: null-session SAMR + LSA, RID cycling, policy, users और groups। यदि आप एक mature, व्यापक रूप से उपयोग किया जाने वाला tool चाहते हैं, तो इसे उपयोग करें। adnullenum इसके साथ काफी overlap करता है।
  • NetExec (--rid-brute, --users, --pass-pol) वही enumeration एक बहुत बड़े framework के अंदर cover करता है।
  • impacket इसे दो scripts के रूप में देता है: samrdump.py (users/groups/aliases + per-user detail) और lookupsid.py (LSA पर RID cycling)। कोई single run नहीं, कोई SAMR→LSA fallback नहीं, केवल stdout।
  • rpcclient underlying calls (queryuser, enumdomusers, querydominfo, lsaquery, lookupsids, …) को expose करता है लेकिन interactively और केवल stdout। इसका standard users को नाम से list करता है, कोई machine () accounts नहीं, और पूरी detail के लिए एक-एक करके चलाना पड़ता है। कोई built-in RID-cycling loop न होने के कारण यह computers को recover नहीं कर सकता या restricted enumeration के आसपास काम नहीं कर सकता। देखें ।

adnullenum जो जोड़ता है वह packaging है: कई tools के बजाय एक null-session run, SAMR-first with an opt-in LSA fallback, curated interesting-account flags, और साफ़ multi-format output जिसे आप सीधे अगले step को दे सकते हैं या बाद में फिर से खोल सकते हैं। यदि यह workflow आपके काम करने के तरीके से मेल खाता है, तो इसे उपयोग करें; यदि आप battle-tested tool पसंद करते हैं, तो enum4linux-ng या NetExec का सहारा लें।


Install

आपको Python 3.9+ और एक SMB library चाहिए। एक virtual environment इसे साफ़-सुथरा रखता है:

root@kitploit:~
# clone / copy the files, then from the project folder:
python3 -m venv venv
source venv/bin/activate          # Windows: venv\Scripts\activate

pip install impacket              # for adnullenum.py

बस इतना ही। सब कुछ देखने के लिए python3 adnullenum.py --help चलाएँ।


इसका उपयोग कैसे करें

सब कुछ एक ही --mode के माध्यम से चलता है। default recon है, जो पहले चलाने के लिए सुरक्षित चीज़ है।

root@kitploit:~
# 1. Is anonymous access open, and how big is this domain?
python3 adnullenum.py 10.0.0.10

# 2. Grab everything
python3 adnullenum.py 10.0.0.10 --mode full

# 3. Just the account inventory, wider net for a big domain
python3 adnullenum.py 10.0.0.10 --mode rids --start-rid 1000 --max-rid 200000

# 4. Go slower to stay quiet
python3 adnullenum.py 10.0.0.10 --mode users --sleep 1 --jitter 40

# 5. Also write JSON (txt and csv are always written)
python3 adnullenum.py 10.0.0.10 --mode full --json

Accounts खोजना

यदि domain आपको सीधे users list करने नहीं देता (आम बात है), तो tool RID cycling पर fallback करता है: यह DC से account IDs को 1000 के batches में names में translate करने के लिए कहता है। default रूप से यह तब तक ऊपर की ओर sweep करता है जब तक वह वह सब कुछ नहीं खोज लेता जो DC कहता है मौजूद है, या जब तक लगातार 5000 IDs खाली वापस न आ जाएँ। आप इसे इसके बजाय एक सटीक range पर pin कर सकते हैं:

root@kitploit:~
python3 adnullenum.py 10.0.0.10 --mode rids --range 500-50000

जब SAMR locked हो

कुछ DCs anonymous SAMR को पूरी तरह मना कर देते हैं (enumdomains और RID translation ACCESS_DENIED वापस आते हैं)। Run हार नहीं मानता:

  • LSA recon हमेशा चलता है। Domain name, SID, और अक्सर forest, GUID और trusts \lsarpc से आते हैं, जो अक्सर तब जवाब देता है जब SAMR नहीं देता।
  • RID cycling LSA पर fallback कर सकता है (opt-in)। यदि SAMR RIDs translate नहीं करेगा और आप --lsa-fallback पास करते हैं, तो tool domain SID का उपयोग करके LSA LsarLookupSids पर वही sweep दोबारा आज़माता है, जो अभी भी आपको account inventory (names और types, computers सहित) देता है। यह default रूप से off है क्योंकि यह एक दूसरा brute-force pass है; flag के बिना run recon पर रुक जाता है और ऐसा बताता है।
  • गहरी per-user detail और group membership के लिए SAMR चाहिए। जब SAMR blocked हो तो वे stages skip कर दिए जाते हैं और note कर दिए जाते हैं; आपको अभी भी name/type inventory मिलती है।
  • यदि LSA lookups भी blocked हों, तो run केवल recon (domain name और SID) तक degrade हो जाता है। ऐसे target पर, कोई भी anonymous tool accounts enumerate नहीं करेगा।

दोबारा brute-force न करना

Accounts खोजना slow हिस्सा है, इसलिए tool हर run के output folder में list (rids.txt) save करता है। बाद के run को --session के साथ उस folder पर point करें और यह brute को skip करके वही reuse करता है जो आपने पहले ही खोज लिया था:

root@kitploit:~
python3 adnullenum.py 10.0.0.10 --mode rids
# -> output/20260917-1530_10.0.0.10_rids/

python3 adnullenum.py 10.0.0.10 --mode users \
    --session output/20260917-1530_10.0.0.10_rids

--session पिछले run का folder लेता है। (--rid-file वही काम एक plain text file से करता है जिसमें प्रति line एक RID होती है।)


Output

हर run output/ के नीचे एक timestamped folder छोड़ता है:

root@kitploit:~
output/20260917-1530_10.0.0.10_full/
├── rids.txt          # the account IDs found (reuse with --session)
├── manifest.json     # summary: counts, interesting accounts, run details
├── access_denied.txt # only if something was denied/restricted (with a timestamp)
├── output
├──── lists/          # ready-to-use lists (see below)
├──── txt/            # easy to read
└──── csv/            # easy to grep / open in a spreadsheet

txt और csv हमेशा लिखे जाते हैं; json/ folder के लिए --json जोड़ें।

lists/ folder में दो plain files होती हैं जो सीधे अन्य tools को feed करने के लिए बनाई गई हैं:

  • lists/userlist.txt — सीधे AS-REP roasting, password spraying, या किसी cracker की --users list में डालें। users/full mode में इसमें केवल enabled accounts होते हैं; rids mode में (कोई per-user detail नहीं) यह हर user है।
  • lists/computerlist.txt — machine-account names $ सहित (sAMAccountName), pre-Windows 2000 machine-account checks के लिए।

उन्हें देखना भूल गए, या केवल rids चलाया और अब lists चाहिए? Run के folder पर point करें और वे CSVs से rebuild हो जाती हैं, कोई network आवश्यक नहीं:

root@kitploit:~
python3 adnullenum.py --lists-from output/20260917-1530_10.0.0.10_full

स्क्रीन पर आपको एक capped preview मिलता है ताकि बड़ा domain आपके terminal को flood न करे (--limit, default 100 प्रति section) — files में हमेशा पूरा data होता है। जब आप terminal पर हों तो colour on रहता है; --no-color इसे बंद कर देता है।


उदाहरण

एक test DC (sanitized) के विरुद्ध एक full run। स्क्रीन पर आपको recon, RID sweep, interesting-account summary, और लिखी गई files की list मिलती है:

root@kitploit:~
$ python3 adnullenum.py 10.0.0.10 --mode full
[*] Connecting to 10.0.0.10:445 anonymously ...
[+] SAM domain: CORP (S-1-5-21-1111111111-2222222222-3333333333)
...
[ COUNTS ]
  Users:   43
  Groups:  0
  Aliases: 17

[ PASSWORD POLICY ]
  Min length:       7
  Max age:          42 days
  Properties:       COMPLEX

[*] Bruting RIDs via SAMR (chunk=1000, open-ended 500-100000, stop-after 5000)
[*] up to RID 1498: 31 resolved, gap=0
[*] stop: 5000 consecutive empty RIDs (--stop-after 5000)
[+] Resolved: 5 users, 4 computers, 22 groups, 0 other
[*] Deep-querying 5 users (skipping 4 computers)
    [!] Administrator (RID 500)  PWD_NEVER_EXPIRES
    [!] Guest (RID 501) (disabled)  PWD_NOT_REQUIRED, PWD_NEVER_EXPIRES
    [!] svc_sql (RID 1104)  ASREP_ROASTABLE
[+] 5 users: 3 enabled, 2 disabled, 3 interesting (full detail in the users file)

[ FILES WRITTEN in output/20260101-120000_10.0.0.10_full ]
  txt/recon.txt / csv/recon.csv        domain info + password/lockout policy
  txt/inventory.txt / csv/inventory.csv  all resolved accounts
  txt/users.txt / csv/users.csv        full per-user detail
  txt/groups.txt / csv/groups.csv      groups + aliases with members
  rids.txt                             existing RIDs (reuse with --session)
  lists/userlist.txt                   usernames, one per line
  lists/computerlist.txt               machine accounts (with $)
  manifest.json                        run metadata + counts

txt/users.txt से एक single record (primary group और direct groups names में resolved हैं):

root@kitploit:~
[+] RID 500
    Enabled:                   True
    SamAccountName:            Administrator
    SID:                       S-1-5-21-1111111111-2222222222-3333333333-500
    Description/AdminComment:  Built-in account for administering the computer/domain
    Last Logon:                2026-09-03 17:58:26+09:00
    Password Last Set:         2026-01-23 05:14:35+09:00
    Primary Group:             Domain Users (513)
    Account Control:           NORMAL_ACCOUNT | PASSWORD_NEVER_EXPIRES
    Logon Count:               92
    Direct Domain Groups:      Domain Users; Administrators; Domain Admins
    >> INTERESTING:            PWD_NEVER_EXPIRES

हाथ से करना

यहाँ सब कुछ standard SAMR/LSARPC है, इसलिए आप Samba के rpcclient के साथ एक-एक call करके वही तथ्य निकाल सकते हैं। पहले anonymously connect करें:

root@kitploit:~
rpcclient -U "" -N 10.0.0.10

enumdomusers standard user accounts को केवल नाम से लौटाता है; machine ($) accounts filtered out हो जाते हैं, और पूरी detail का मतलब है queryuser एक-एक account पर चलाना। rpcclient में कोई built-in RID-cycling loop नहीं है, इसलिए जब server-side enumeration restricted हो तो यह machine accounts (या कुछ और) recover नहीं कर सकता; आपको खुद एक range पर lookupsids script करना पड़ेगा। इसमें कोई lockout-policy command भी नहीं है और यह LSA DNS/forest/GUID या trusts वापस नहीं करता, यही कारण है कि यह tool सीधे PolicyDnsDomainInformation query करता है।

Scripted equivalents और यह tool उनसे कैसे संबंधित है, इसके लिए देखें How it compares।


Mitigations

यदि आप blue side पर हैं और इसे बंद करना चाहते हैं, तो anonymous path ही वह चीज़ है जिसे बंद करना है:

  • "Do not allow anonymous enumeration of SAM accounts" और "…accounts and shares" को on करें (RestrictAnonymousSAM / RestrictAnonymous settings)।
  • Pre-Windows 2000 Compatible Access group से Anonymous Logon (और Everyone) को हटा दें। आमतौर पर यही कारण है कि domain controller पर null-session RID cycling काम करता है।
  • "Let Everyone permissions apply to anonymous users" को Disabled पर सेट करें, और named pipes तक anonymous access को restrict करें।
  • SMB signing require करें और SMBv1 disable करें।

इनमें से कोई भी किसी logged-in user को वही data पढ़ने से नहीं रोकता — यह सामान्य और अपेक्षित है। यह केवल no-credentials path को बंद करता है।

इसका पता लगाना

  • SAM/directory object auditing on करें और एक छोटी window में एक machine से event 4661 / 4662 (SAM या directory object के लिए एक handle) की burst पर नज़र रखें।
  • बहुत सारे anonymous logons (event 4624, logon type 3, ANONYMOUS LOGON account) और IPC$ activity (5140 / 5145) पर नज़र रखें।
  • पहचान एक ही source से volume है: कम समय में \samr के विरुद्ध बहुत सारे account-ID lookups, या \lsarpc के विरुद्ध policy/lookup calls।
  • चूँकि --sleep और --jitter calls को फैला सकते हैं, इसलिए केवल rate पर नहीं बल्कि एक window में total count पर alert करें।

Notes

  • केवल port 445 उपयोग होता है — यह 135 पर RPC endpoint mapper को touch नहीं करता।
  • यदि SAMR RID translation ACCESS_DENIED वापस आता है, तो inventory के लिए LSA LsarLookupSids आज़माने हेतु --lsa-fallback जोड़ें (देखें "When SAMR is locked down")। यदि LSA lookups भी blocked हों, तो केवल recon (domain name + SID) संभव है।

License

MIT. देखें LICENSE।

टूल डाउनलोड करें
enumdomusers
$
queryuser
Doing it by hand
Modeआपको क्या मिलता है
reconDomain info, counts, password/lockout policy, और LSA/DNS details। कोई brute-forcing नहीं। बस एक नज़र।
ridsपता लगाता है कि कौन से accounts मौजूद हैं और उन्हें users / computers / groups में छाँटता है।
usersऊपर वाला सब, साथ ही हर असली user पर पूरी detail और "interesting accounts" summary। हर user के groups भी list करने के लिए --include-groups जोड़ें।
groupsDomain groups और builtin aliases उनके members के साथ।
fullयह सब कुछ।
यह toolrpcclient equivalent
recon (domain info + counts)querydominfo
recon (password policy)getdompwinfo
recon (LSA domain + SID)lsaquery, lsaenumsid
rids (name/SID translation)lookupnames <name>, lookupsids <SID>
rids (server-side list)enumdomusers (standard users only — no $ machine accounts)
users (per-user detail)queryuser <rid> or queryuser <name>, querydispinfo
groupsenumdomgroups, querygroupmem <rid>, enumalsgroups builtin, queryaliasmem builtin <rid>