voidmap
أداة بسيطة جداً لتعيين برامج التشغيل يدوياً (manual mapper) تستغل CVE-2021-40449 لتنفيذ دالة عشوائية على عنوان معين مع وسيط واحد محدد. تعتمد على PoC استغلال CallbackHell. تم اختبارها على Windows 10 Pro For Workstations 1809 17763.379 (64-bit)، ولكن من الواقعي أن أي إصدار قريب من ذلك الوقت يجب أن يكون مدعوماً.
تقوم بالأتي:
- تعطيل SMEP (وربما SMAP) عن طريق إعادة كتابة قيمة سجل cr4
- القفز إلى كود وضع المستخدم الذي يقوم بتعيين برنامج التشغيل المطلوب يدوياً
- إعادة تمكين SMEP (وربما SMAP) مرة أخرى
هناك مشكلتان رئيسيتان مع هذا النهج:
- سيتم تخصيص برنامج التشغيل المعيّن يدوياً في تجمع (pool) مخصص بواسطة ExAllocatePool. إذا كنت تريد استخدام هذا لأي شيء أكثر جدية، يجب أن تفكر في إيجاد طريقة أفضل لتخصيص الذاكرة بحيث لا يمكن تفريغها (dump) بسهولة.
- لا توجد طريقة سهلة لقراءة قيمة cr4 الأصلية، مما يعني أنني اضطررت إلى ترميز القيمة التي كانت موجودة على نظامي بشكل ثابت (hardcode). بينما يجب أن تكون نفس القيمة لمعظم وحدات المعالجة المركزية الحديثة، يجب عليك مع ذلك التحقق مرة أخرى من أن القيمة صحيحة.
فيديو:
