nullmap
أداة بسيطة جدًا لتعيين برامج التشغيل يدويًا (manual mapper) مبنية على voidmap القديم الخاص بي و CVE-2023-21768 POC بواسطة chompie و b33f. نظرًا لأن primitive القراءة/الكتابة في الذاكرة بعد الاستغلال (post-exploitation) المستندة إلى IoRing لا تتعامل بشكل جيد مع العديد من القراءات والكتابات المتتالية، قررت الكتابة فوق CR4 لتعطيل SMEP/SMAP لتنفيذ برنامج التشغيل المعيّن في وضع المستخدم (usermode). تم اختباره على Windows 11 22H2 (22621.525).
الاستخدام:
nullmap.exe <path_to_driver>
المشاكل المحتملة:
- سيكون برنامج التشغيل المعيّن يدويًا في تجمع (pool) مخصص بواسطة ExAllocatePool. إذا كنت تريد استخدام هذا لأي شيء أكثر جدية، فيجب عليك التفكير في إيجاد طريقة أفضل لتخصيص الذاكرة بحيث لا يمكن تفريغه (dump) بسهولة.
- لا توجد طريقة سهلة لقراءة قيمة cr4 الأصلية، مما يعني أنني اضطررت إلى ترميز القيمة التي كانت موجودة على نظامي بشكل ثابت (hardcode). بينما يجب أن تكون هي نفسها بالنسبة لمعظم وحدات المعالجة المركزية الحديثة، يجب عليك مع ذلك التحقق مرة أخرى من أن القيمة صحيحة.
- لقد قمت بترميز إزاحة (offset) ثابتة إلى NtGdiGetEmbUFI نظرًا لعدم وجود طريقة سهلة لفحص التواقيع (sigscan)، مما يعني أنه سيتعين عليك تحديث هذه الإزاحة لبناء Windows الخاص بك.
- تمت كتابته في ظهيرة واحدة، وقد لا يكون أنظف قاعدة أكواد.
الفيديو:
