
أداة استغلال لتصعيد الصلاحيات في ويندوز، تسيء استخدام SeImpersonate عبر DiagTrack RPC، باستخدام Secondary Logon للحصول على رمز مميز (token) تفاعلي وكسب صلاحيات SYSTEM.
مجرد طريقة أخرى لاستغلال امتياز SeImpersonate.
يعتمد هذا الإثبات (PoC) على هذه المدونة بقلم @crisprss.
في هذه المدونة، عرض @crisprss طريقة مثيرة للاهتمام لاستغلال امتياز SeImpersonate باستخدام AzureAttestService الذي يأتي مع الإصدارات الحديثة من SQL server، ويمكن العثور على الإثبات (PoC) لذلك هنا https://github.com/crisprss/magicAzureAttestService.
في تلك المدونة، يعرض أيضاً طريقة أخرى محتملة لاستغلال امتياز SeImpersonate باستخدام خدمة DiagTrack لكن المؤلف فشل في تحويلها إلى أداة عملية، وهذا مأخوذ من تلك المدونة (مترجم من الصينية لذا قد لا يكون دقيقاً 100%) :
But just when I thought it could be triggered normally, I didn't realize that this service is transparent to service users, which also means that it is not feasible to simulate pipeline privilege escalation through service users, because service users such as sqlserver There is no way to call the RPC interface, which also means that you can only escalate rights from the administrator user to SYSTEM in this way, so here is just a process sharing
ونعم، إذا حاولت استدعاء الأسلوب الذي يعرضه خادم RPC من مستخدم خدمة، ستحصل على خطأ رفض الوصول

لكن لماذا يستطيع المستخدمون العاديون غير المميزين استدعاء هذا الأسلوب؟
كان افتراضي أن مستخدمي الخدمة يعملون في الجلسة 0 لذلك لن يحصلوا على NT AUTHORITY\INTERACTIVE SID في رمزهم (token) بينما المستخدمون العاديون الذين يسجلون الدخول عبر RDP أو تفاعلياً سيحصلون عليه.
إذاً كيف يمكننا الحصول على NT AUTHORITY\INTERACTIVE SID من الجلسة 0؟ في الواقع سهل جداً، خدمة Secondary Logon ستفعل ذلك لنا.
يمكننا استخدام استدعاء واجهة برمجة التطبيقات LogonUser للحصول على رمز يحمل NT AUTHORITY\INTERACTIVE SID ولا نحتاج إلى بيانات اعتماد صالحة لأننا سنستخدم نوع تسجيل الدخول NewCredentials(9).
عند استخدام نوع تسجيل الدخول NewCredentials، ستنشئ Secondary Logon جلسة تسجيل دخول جديدة وتنسخ رمز المتصل ولكنها ستُدرج أيضاً NT AUTHORITY\INTERACTIVE SID، وهذا وضع مثالي لنا لأننا لا نحتاج إلى بيانات اعتماد صالحة (لا يتم التحقق من بيانات الاعتماد المستخدمة مع نوع تسجيل الدخول NewCredentials حتى يحاول المستخدم الوصول إلى مورد شبكة).
والآن بعد أن حصلنا على رمز يحمل NT AUTHORITY\INTERACTIVE SID، هل سيعمل الاستغلال؟ نعم سيعمل :D

تم اختبار هذا الإثبات (PoC) على نظامي Windows 10 وWindows 2019.
@crisprss - https://www.crisprx.top/archives/561