Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
adnullenum — تعداد Active Directory مجهول در یک پاس از طریق SAMR و LSARPC — نشست null، بدون اعتبارنامه، با خروجی ساختاریافته قابل استفاده مجدد. | Kitploit
أدوات/GitHubGitHub/crypt0p3g/adnullenum
أدوات دفاعيةالاستخبارات مفتوحة المصدر (OSINT)الاستطلاعتحليل الثغرات الأمنيةجمع المعلوماتأمن الشبكاتاختبار الاختراقالفريق الأحمر
GitHubcrypt0p3g/adnullenum

adnullenum

تعداد Active Directory مجهول در یک پاس از طریق SAMR و LSARPC — نشست null، بدون اعتبارنامه، با خروجی ساختاریافته قابل استفاده مجدد.

عرض المستودع
37710منذ 3 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

adnullenum

مُعدِّد Active Directory بتمريرة واحدة لجلسة مجهولة (null)، باستخدام الأنابيب المُسمّاة \samr و\lsarpc. لا يتطلب أي بيانات اعتماد.

لا يفعل شيئًا لا تستطيع الأدوات الكلاسيكية فعله. ما يفعله هو جمع كل شيء في تشغيل واحد وعرض النتائج بشكل مرتب. في مهمة اختبار اختراق تبدأ بدون حساب نطاق، وتجد وحدة التحكم بالمجال (DC) عبر DNS، وتريد الصورة الكاملة، الحسابات، وتفاصيل كل مستخدم، والمجموعات، والسياسات، وأجزاء LSA/DNS، دون تجميع جلسات rpcclient أو عدة نصوص منفصلة ثم تحليل مخرجاتها يدويًا. هذا يفعل ذلك نيابة عنك ويكتب مخرجات منظمة وقابلة لإعادة الاستخدام:

  • أمر واحد يغطي معلومات النطاق، والسياسة، واكتشاف RID، وتفاصيل كل مستخدم والمجموعات، مع اختيار الطريقة التي تعمل والتدرج بسلاسة عند قفل SAMR (انظر How it compares و When SAMR is locked down).
  • مخرجات مُصمَّمة لتغذية الأداة التالية. مجلدات تشغيل بطوابع زمنية مع txt / csv / (اختياري) json، وmanifest.json، وuserlist.txt / computerlist.txt جاهزة للاستخدام، وقائمة RID محفوظة يمكنك إعادة استخدامها بدلًا من القوة الغاشمة مرتين.
  • تمييز الحسابات المثيرة للاهتمام أثناء المرور عليها (قابلة لـ AS-REP roasting، كلمة المرور غير مطلوبة، تفويض غير مقيّد، وما إلى ذلك).

يُرجى تشغيل هذا فقط ضد الأنظمة التي تملكها أو المصرّح لك صراحةً باختبارها. تعداد دليل شخص آخر دون إذن غير مقبول، وقد يكون غير قانوني حسب موقعك.

هناك نسختان تتصرفان بشكل متطابق. استخدم أي مكتبة متوفرة لديك:

  • adnullenum.py — مبني على impacket.

ما الذي يجمعه

  • المستخدمون وأجهزة الكمبيوتر والمجموعات. حسابات الأجهزة (تلك المنتهية بـ $) مفصولة عن المستخدمين الحقيقيين.
  • تفاصيل كاملة لكل مستخدم. الوصف، وعضويات المجموعات، وطوابع وقت كلمة المرور وتسجيل الدخول، وعلامات الحساب، وقيود تسجيل الدخول (ساعات تسجيل الدخول، وأجهزة العمل المسموح بها، والانتهاء).
  • المجموعات مع أعضائها، مُترجَمة إلى أسماء حقيقية.
  • معلومات النطاق والسياسة. اسم النطاق، وSID، ودور الخادم، وأعداد المستخدمين/المجموعات/أجهزة الكمبيوتر الفعلية، وسياسة كلمة المرور والقفل.
  • تفاصيل LSA / DNS. اسم نطاق DNS والغابة، وGUID النطاق، وSID النطاق، وأي علاقات ثقة — غالبًا ما تُعاد هذه حتى عند قفل SAMR نفسه.

كما يميّز الحسابات المثيرة للاهتمام نيابة عنك: أشياء مثل "كلمة المرور غير مطلوبة"، و"كلمة المرور لا تنتهي أبدًا"، وقابلة لـ AS-REP roasting، وتفويض غير مقيّد، ولم تسجّل الدخول أبدًا، أو وصف يذكر كلمة مرور.

هناك أمران ينبعان بشكل طبيعي من هذا:

  • أسماء المستخدمين التي تجمعها هي قائمتك لـ AS-REP roasting.
  • أسماء أجهزة الكمبيوتر هي قائمتك لفحوصات حسابات الأجهزة لما قبل Windows 2000.

كيف يُقارَن

كل شيء هنا هو SAMR/LSARPC مجهول قياسي، والأدوات الراسخة تصل بالفعل إلى نفس البيانات. هذا غلاف للراحة، وليس قدرة جديدة، لذا يجدر معرفة البدائل:

  • enum4linux-ng هو المكافئ الأقرب: جلسة null لـ SAMR + LSA، وتدوير RID، والسياسة، والمستخدمين والمجموعات. إذا أردت أداة ناضجة وواسعة الاستخدام، استخدمها. يتداخل adnullenum معها بشكل كبير.
  • NetExec (--rid-brute، --users، --pass-pol) يغطي نفس التعداد داخل إطار عمل أكبر بكثير.
  • impacket يوفّره كنصين: samrdump.py (المستخدمون/المجموعات/الأسماء المستعارة + تفاصيل كل مستخدم) وlookupsid.py (تدوير RID عبر LSA). لا تشغيل واحد، ولا تراجع من SAMR إلى LSA، والمخرجات على stdout فقط.
  • rpcclient يكشف الاستدعاءات الأساسية (queryuser، enumdomusers، querydominfo، lsaquery، lookupsids، …) لكن بشكل تفاعلي وعلى stdout فقط. أمر enumdomusers الخاص به يسرد المستخدمين القياسيين بالاسم، بدون حسابات الأجهزة ()، والتفاصيل الكاملة تتطلب واحدًا تلو الآخر. بدون حلقة تدوير RID مدمجة لا يمكنه استعادة أجهزة الكمبيوتر أو الالتفاف حول التعداد المقيّد. انظر .

ما يضيفه adnullenum هو التغليف: تشغيل واحد بجلسة null بدلًا من عدة أدوات، SAMR أولًا مع تراجع اختياري إلى LSA، وعلامات منسّقة للحسابات المثيرة للاهتمام، ومخرجات متعددة الصيغ مرتبة يمكنك تسليمها مباشرة إلى الخطوة التالية أو إعادة فتحها لاحقًا. إذا كانت سير العمل هذه تناسب طريقة عملك، استخدمها؛ وإذا كنت تفضّل أداة مُجرَّبة، فاستخدم enum4linux-ng أو NetExec.


التثبيت

تحتاج إلى Python 3.9+ ومكتبة SMB واحدة. البيئة الافتراضية تحافظ على الترتيب:

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 واحد. الافتراضي هو 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

العثور على الحسابات

إذا لم يسمح النطاق بسرد المستخدمين مباشرةً (وهو أمر شائع)، تتراجع الأداة إلى تدوير RID: تطلب من DC ترجمة معرّفات الحسابات إلى أسماء على دفعات من 1000. افتراضيًا تمسح تصاعديًا حتى تجد كل ما يقول DC إنه موجود، أو حتى تعود 5000 معرّف متتالية فارغة. يمكنك تثبيتها على نطاق محدد بدلًا من ذلك:

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

عندما يكون SAMR مقفلًا

بعض وحدات DC ترفض SAMR المجهول تمامًا (تعود enumdomains وترجمة RID بـ ACCESS_DENIED). لا يستسلم التشغيل:

  • استطلاع LSA يعمل دائمًا. اسم النطاق، وSID، وغالبًا الغابة، وGUID، وعلاقات الثقة تأتي من \lsarpc، الذي يستجيب كثيرًا عندما لا يستجيب SAMR.
  • يمكن لتدوير RID التراجع إلى LSA (اختياري). إذا لم يترجم SAMR معرّفات RID ومرّرت --lsa-fallback، تعيد الأداة محاولة نفس المسح عبر LSA LsarLookupSids باستخدام SID النطاق، مما يمنحك جرد الحسابات (الأسماء والأنواع، بما في ذلك أجهزة الكمبيوتر). إنه معطّل افتراضيًا لأنه تمريرة قوة غاشمة ثانية؛ بدون العلامة يتوقف التشغيل عند الاستطلاع ويذكر ذلك.
  • التفاصيل العميقة لكل مستخدم وعضوية المجموعات تحتاج SAMR. عندما يكون SAMR محظورًا تُتخطى تلك المراحل وتُدوَّن؛ لا يزال لديك جرد الأسماء/الأنواع.
  • إذا كانت عمليات بحث LSA محظورة أيضًا، يتدهور التشغيل إلى الاستطلاع فقط (اسم النطاق وSID). على هدف كهذا، لن تعدّد أي أداة مجهولة الحسابات.

عدم استخدام القوة الغاشمة مرتين

العثور على الحسابات هو الجزء البطيء، لذا تحفظ الأداة القائمة (rids.txt) في مجلد مخرجات كل تشغيل. وجّه تشغيلًا لاحقًا إلى ذلك المجلد باستخدام --session وسيتخطى القوة الغاشمة ويعيد استخدام ما وجدته بالفعل:

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 مجلد تشغيل سابق. (--rid-file يفعل الشيء نفسه من ملف نصي عادي يحتوي على RID واحد في كل سطر.)


المخرجات

كل تشغيل يُنشئ مجلدًا بطابع زمني تحت output/:

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 لمجلد json/ أيضًا.

يحتوي مجلد lists/ على ملفين نصيين مصممين لتغذية أدوات أخرى مباشرةً:

  • lists/userlist.txt — أسقطه مباشرة في AS-REP roasting، أو رشّ كلمات المرور، أو قائمة --users لأداة كسر كلمات المرور. في وضع users/full يحتوي على الحسابات الممكّنة فقط؛ في وضع rids (بدون تفاصيل لكل مستخدم) يكون كل مستخدم.
  • lists/computerlist.txt — أسماء حسابات الأجهزة مع الاحتفاظ بـ $ (أي sAMAccountName)، لفحوصات حسابات الأجهزة لما قبل Windows 2000.

نسيت النظر إليها، أو شغّلت rids فقط وتريد القوائم الآن؟ وجّه إلى مجلد التشغيل وسيُعاد بناؤها من ملفات CSV، دون حاجة إلى الشبكة:

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

على الشاشة تحصل على معاينة محدودة حتى لا يُغرق نطاق كبير طرفيتك (--limit، الافتراضي 100 لكل قسم) — الملفات تحتوي دائمًا على البيانات الكاملة. الألوان مفعّلة عندما تكون في طرفية؛ --no-color يوقفها.


مثال

تشغيل full ضد DC اختباري (مُنقّح). على الشاشة تحصل على الاستطلاع، ومسح RID، وملخص الحسابات المثيرة للاهتمام، وقائمة الملفات المكتوبة:

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 (المجموعة الأساسية والمجموعات المباشرة مُترجَمة إلى أسماء):

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

Doing it by hand

كل شيء هنا هو SAMR/LSARPC قياسي، لذا يمكنك سحب نفس الحقائق استدعاءً واحدًا في كل مرة باستخدام rpcclient من Samba. اتصل بشكل مجهول أولًا:

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

يعيد enumdomusers حسابات المستخدمين القياسيين بالاسم فقط؛ تُستبعد حسابات الأجهزة ($)، والتفاصيل الكاملة تعني تشغيل queryuser حسابًا واحدًا في كل مرة. لا يملك rpcclient حلقة تدوير RID مدمجة، لذا لا يمكنه استعادة حسابات الأجهزة (أو أي شيء آخر) عندما يكون التعداد من جهة الخادم مقيّدًا؛ ستحتاج إلى كتابة نص برمجي لـ lookupsids على نطاق بنفسك. كما أنه لا يملك أمر سياسة قفل ولا يعيد LSA DNS/forest/GUID أو علاقات الثقة، ولهذا تستعلم هذه الأداة عن PolicyDnsDomainInformation مباشرةً.

للمكافئات البرمجية وكيفية ارتباط هذه الأداة بها، انظر How it compares.


التخفيفات

إذا كنت في الجانب الأزرق وتريد إيقاف هذا، فالمسار المجهول هو ما يجب إغلاقه:

  • فعّل "Do not allow anonymous enumeration of SAM accounts" و "…accounts and shares" (إعدادات RestrictAnonymousSAM / RestrictAnonymous).
  • أزل Anonymous Logon (وEveryone) من مجموعة Pre-Windows 2000 Compatible Access. هذا عادةً هو سبب نجاح تدوير RID بجلسة null على وحدة تحكم بالمجال.
  • اضبط "Let Everyone permissions apply to anonymous users" على Disabled، وقيّد الوصول المجهول إلى الأنابيب المُسمّاة.
  • اشترط توقيع SMB وعطّل SMBv1.

لا شيء من هذا يمنع مستخدمًا مسجّل الدخول من قراءة نفس البيانات — هذا طبيعي ومتوقع. إنه فقط يغلق المسار بدون بيانات اعتماد.

اكتشافه

  • فعّل تدقيق كائنات SAM/الدليل وراقب اندفاعًا من الحدث 4661 / 4662 (مقبض إلى كائن SAM أو دليل) من جهاز واحد في نافذة قصيرة.
  • راقب الكثير من عمليات تسجيل الدخول المجهولة (الحدث 4624، نوع تسجيل الدخول 3، حساب ANONYMOUS LOGON) ونشاط IPC$ (5140 / 5145).
  • الدليل هو الحجم من مصدر واحد: العديد من عمليات بحث معرّفات الحسابات ضد \samr، أو استدعاءات السياسة/البحث ضد \lsarpc، في وقت قصير.
  • لأن --sleep و--jitter يمكنهما توزيع الاستدعاءات، نبّه على العدد الإجمالي خلال نافذة بدلًا من المعدل وحده.

ملاحظات

  • يُستخدم المنفذ 445 فقط — هذا لا يلمس مخطط نقاط نهاية RPC على 135.
  • إذا عادت ترجمة RID عبر SAMR بـ ACCESS_DENIED، أضف --lsa-fallback لتجربة LSA LsarLookupSids للجرد (انظر "When SAMR is locked down"). إذا كانت عمليات بحث LSA محظورة أيضًا، فلا يمكن سوى الاستطلاع (اسم النطاق + SID).

الترخيص

MIT. انظر LICENSE.

تنزيل الأداة
$
queryuser
Doing it by hand
الوضعما تحصل عليه
reconمعلومات النطاق، والأعداد، وسياسة كلمة المرور/القفل، وتفاصيل LSA/DNS. لا قوة غاشمة. مجرد نظرة حول المكان.
ridsيجد الحسابات الموجودة ويفرزها إلى مستخدمين / أجهزة كمبيوتر / مجموعات.
usersما سبق، بالإضافة إلى تفاصيل كاملة عن كل مستخدم حقيقي وملخص "الحسابات المثيرة للاهتمام". أضف --include-groups لسرد مجموعات كل مستخدم أيضًا.
groupsمجموعات النطاق والأسماء المستعارة المدمجة مع أعضائها.
fullكل ما سبق.
هذه الأداةمكافئ rpcclient
recon (معلومات النطاق + الأعداد)querydominfo
recon (سياسة كلمة المرور)getdompwinfo
recon (نطاق LSA + SID)lsaquery، lsaenumsid
rids (ترجمة الاسم/SID)lookupnames <name>، lookupsids <SID>
rids (قائمة من جهة الخادم)enumdomusers (المستخدمون القياسيون فقط — بدون حسابات الأجهزة $)
users (تفاصيل كل مستخدم)queryuser <rid> أو queryuser <name>، querydispinfo
groupsenumdomgroups، querygroupmem <rid>، enumalsgroups builtin، queryaliasmem builtin <rid>