
Process Explorer تجاوز PPL عبر برنامج تشغيل قابل للاستغلال
في حين أنه من المعروف جيدًا أن الإصدارات القديمة (قبل 17.x) من برامج تشغيل SysInternals Process Explorer (PSEXP152.sys) معرّضة للثغرات ويمكن استغلالها لفتح مقابض عمليات بوصول كامل إلى عمليات PPL (IOCTL: 0x8335003c)، فإن الإصدارات الأحدث (17.x وما فوق) لا تزال معرّضة للثغرات وقادرة على فعل الشيء نفسه باستخدام دالة برنامج تشغيل مختلفة (IOCTL: 0x83350014). تقوم دالة IOCTL هذه بمضاعفة مقابض عشوائية، وقد حصلت أيضًا على تصحيح لتصفية عملية النظام وأي عملية محمية (PP/PPL) في إصدار برنامج التشغيل 17.00. لكن كان هناك إغفال كبير في هذه الدالة، حيث كان لا يزال من الممكن مضاعفة أي مقبض عملية أو خيط من عمليتك غير المحمية (non-PPL). مجرد فتح عملية PPL بأذونات منخفضة مثل PROCESS_QUERY_LIMITED_INFORMATION ثم مضاعفة هذا المقبض من عمليتك الخاصة عبر برنامج تشغيل Process Explorer كان كافيًا لتجاوز التصفية والحصول على مقبض بوصول كامل إلى عملية PPL. استخدمت هذه الطريقة منذ سنوات لتجاوز حماية عمليات PPL، لكن Microsoft قامت بتصحيح هذا التجاوز في إصدار برنامج التشغيل 17.11 من خلال التحقق الآن مما إذا كان المقبض الهدف مقبض عملية أو خيط PPL. ومع ذلك، فإن إصدارات برنامج التشغيل من 17.00 حتى 17.09 (17.10 غير موجود) غير مُدرجة في قائمة حظر برامج التشغيل المعرّضة للثغرات لدى Microsoft، وأشك في أن بعض موردي EDR أيضًا لا يضعون علامة على هذه الإصدارات (في الوقت الحالي).
هذا مجرد تنفيذ PoC لإنهاء عمليات PPL. يمكن أيضًا استخدام نفس دالة IOCTL القوية لمضاعفة المقابض لاستنساخ أنواع مقابض أخرى مثل الخيوط (threads) وحقن شيفرة برمجية (shellcode) في عمليات PPL أخرى.
الاستخدام:
1. قم بتنزيل إصدار أقدم من SysInternals Process Explorer (17.00 إلى 17.10)
2. شغّل procexp64.exe كمسؤول لتحميل برنامج التشغيل المعرّض للثغرات
3. ابحث في Process Explorer عن PID الخاص مثلاً بـ MsMpEng.exe (مثال: 3660)
4. شغّل ps_ppl_bypass.exe PID ("ps_ppl_bypass.exe 3660") كمسؤول لإنهاء العملية الهدف
لا يزال من الممكن أيضًا الحصول على إصدار قديم من برنامج التشغيل من موقع SysInternals الرسمي عن طريق استخراجه من أداة SysInternals Handles: https://learn.microsoft.com/en-us/sysinternals/downloads/handle