
POC tool for ResetNightmare (CVE-2026-27912)
أداة إثبات المفهوم (POC) لثغرة ResetNightmare (CVE-2026-27912).
ResetNightmare هي خلل في التحقق في بروتوكول Kerberos لتغيير كلمة المرور (Change Password protocol)، يسمح بإعادة تعيين كلمة مرور أي حساب مستخدم/كمبيوتر مستهدف دون معرفة كلمة المرور الحالية.
يتطلب الهجوم وحدة تحكم مجال غير محدّثة، والقدرة على كتابة userPrincipalName (UPN) على أي حساب تتحكم فيه.
بدلاً من ذلك، يمكن أيضاً استغلال الثغرة من قبل مهاجم لديه القدرة على إنشاء مستخدمين/أجهزة كمبيوتر جديدة في أي وحدة تنظيمية (OU)، إذ إن إنشاء مستخدم/جهاز كمبيوتر يمنحك صلاحيات GenericWrite عليه.
يعمل هذا السكربت على أتمتة تسلسل الهجوم بالكامل وينظف آثاره بنفسه بعد ذلك. تسلسل الهجوم كما يلي:
-CreateNewPath.sAMAccountName الخاص بالهدف، على سبيل المثال "Administrator".NT-ENTERPRISE. سيتم طلب هذا TGT إلى SPN الخاص بـ kadmin/changepw.يمكن استهداف كل من حسابات المستخدمين وأجهزة الكمبيوتر.

-RubeusPath.-CreateNewPath).-DC.قم بتحميل السكربت في الجلسة (Dot-source) لتحميل الدالة، ثم استدعها:
. .\ResetNightmare.ps1
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
استخدم sAMAccountName (المنتهي بـ $) للمعامل -TargetAccount:
Invoke-ResetNightmare `
-TargetAccount 'server$' `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
إذا كان لديك صلاحية إنشاء كائنات في وحدة تنظيمية/حاوية، يمكنك تحديد الاسم المميز (DN) للوحدة التنظيمية/الحاوية باستخدام -CreateNewPath. عند تحديده، يتم التعامل مع -UPNUser و -UPNUserPassword كبيانات اعتماد الحساب المراد إنشاؤه، بدلاً من حساب موجود في المجال:
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "attackerAcct" `
-UPNUserPassword "AttackerP@ss!" `
-CreateNewPath "OU=Temp,DC=demo,DC=lab"
أضف -Computer لإنشاء/استخدام حساب جهاز كمبيوتر بدلاً من حساب مستخدم.
إخلاء مسؤولية
هذا المحتوى مقدم للأغراض التعليمية والإعلامية فقط. يهدف إلى تعزيز الوعي والمعالجة المسؤولة للثغرات الأمنية التي قد تكون موجودة على الأنظمة التي تملكها أو مخوّل باختبارها. يُحظر تماماً الاستخدام غير المصرح به لهذه المعلومات لأغراض خبيثة أو الاستغلال أو الوصول غير القانوني. لا يؤيد المؤلفون أي نشاط غير قانوني ولا يتغاضون عنه، ويتنصلون من أي مسؤولية ناتجة عن إساءة استخدام هذه المادة. بالإضافة إلى ذلك، لا يضمن المؤلفون دقة أو اكتمال المحتوى ولا يتحملون أي مسؤولية عن أي أضرار ناتجة عن استخدامه.
| Parameter | Required | Description |
|---|
-TargetAccount | نعم | sAMAccountName الخاص بالحساب المستهدف لإعادة تعيين كلمة المرور. تأكد من تضمين $ في النهاية إذا كان الهدف حساب جهاز كمبيوتر. |
-TargetNewPassword | نعم | كلمة المرور الجديدة التي سيتم تعيينها للحساب المستهدف. |
-UPNUser | نعم | الحساب الذي يمكنك كتابة UPN عليه، أو الحساب المراد إنشاؤه إذا تم تحديد -CreateNewPath. |
-UPNUserPassword | نعم | كلمة المرور الصريحة (Cleartext) لـ -UPNUser. |
-Computer | لا | التعامل مع -UPNUser كحساب جهاز كمبيوتر (وإنشاء حساب جهاز كمبيوتر عند دمجه مع -CreateNewPath). |
-RubeusPath | لا | المسار إلى ملف Rubeus القابل للتنفيذ. القيمة الافتراضية هي ".\Rubeus.exe". |
-SupportedEncryption | لا | نوع التشفير المدعوم لـ TGT. القيمة الافتراضية هي "AES256" ويجب أن تعمل في معظم الحالات. إذا كان تغيير هذا مطلوباً، فإن القيم المدعومة هي: DES|RC4|AES128|AES256 |
-CreateNewPath | لا | الاسم المميز (DistinguishedName) لوحدة تنظيمية/حاوية حيث لديك صلاحيات إنشاء كائنات. إذا تم تحديده، فسيتم اعتبار معاملي -UPNUser و -UPNUserPassword بمثابة بيانات اعتماد المستخدم المراد إنشاؤه، بدلاً من استخدام مستخدم موجود. |
-DC | لا | اسم وحدة تحكم المجال التي سيتم العمل ضدها. يتم حله تلقائياً إذا لم يتم تحديده. |