تحليل ثغرات 0day في نظام ويندوز: من رفع الامتيازات في win32k إلى مخاطر أمان Web3

robot
إنشاء الملخص قيد التقدم

تحليل واستغلال ثغرة 0day في نظام ويندوز من مايكروسوفت

في الآونة الأخيرة، أصدرت مايكروسوفت تصحيح أمان يعالج ثغرة تصعيد الامتياز في win32k التي يتم استغلالها بنشاط. تؤثر هذه الثغرة بشكل أساسي على الإصدارات السابقة من نظام Windows، ويبدو أنه لا يمكن تفعيلها على Windows 11. ستقوم هذه المقالة بتحليل كيف يمكن للمهاجمين الاستمرار في استغلال مثل هذه الثغرات في بيئة الأمان الحالية. يستند هذا التحليل إلى بيئة Windows Server 2016.

Numen حصري: ثغرة 0day من مايكروسوفت يمكن أن تخلخل نظام + الطبقة الفيزيائية في Web3

خلفية الثغرة

تشير ثغرات 0day إلى الثغرات الأمنية غير المعلنة وغير المرقعة، وهي مشابهة لمفهوم تداول T+0 في الأسواق المالية. بمجرد استغلال هذه الثغرات بشكل خبيث، يمكن أن تسبب أضرارًا جسيمة. الثغرة المكتشفة في نظام Windows 0day يمكن أن تمنح المهاجمين السيطرة الكاملة على النظام، مما يمكّنهم من تنفيذ هجمات مثل سرقة المعلومات، وتدمير النظام، وزرع البرمجيات الخبيثة. من منظور Web3، يمكن أن يؤدي ذلك إلى سرقة المفاتيح الخاصة، وتحويل الأصول الرقمية، وحتى تعريض النظام البيئي بأكمله القائم على بنية Web2 للخطر.

Numen الحصرية: ثغرة 0day من مايكروسوفت يمكنها إزاحة نظام + المستوى الفيزيائي في لعبة Web3

تحليل التصحيح

تحليل رمز التصحيح يكشف أن المشكلة الرئيسية التي تم إصلاحها هي معالجة عدّ مرجع الكائن. من التعليقات في شفرة win32k السابقة، يتبين أن الشفرة الأصلية كانت تقفل كائن النافذة فقط، دون قفل كائن القائمة داخل النافذة، مما قد يؤدي إلى الإشارة غير الصحيحة لكائن القائمة.

Numen حصرية: ثغرة 0day من مايكروسوفت يمكنها أن تقلب مشهد Web3 على الصعيدين النظامي والفيزيائي

إثبات مفهوم استغلال الثغرات ( PoC )

تحليل أظهر أن دالة xxxEnableMenuItem قد تعيد حالة عنصر القائمة من القائمة الرئيسية أو القائمة الفرعية. قمنا بإنشاء هيكل قائمة خاص من أربع طبقات يتضمن الخصائص التالية:

  1. يجب أن تكون معرف القائمة الأساسية D من نوع قائمة النظام.
  2. يجب أن تكون القائمة العلوية A أيضًا قائمة النظام، ولكن يجب حذف العناصر التي تحمل نفس معرف القائمة D.
  3. حذف الإشارة إلى القائمة C في القائمة B.
  4. يبدو أن وجود القائمة B يساعد في إطلاق القائمة C.

عند وجود ثغرة، يتم حذف ارتباط القائمة C و B عند عودة xxxRedrawTitle إلى مستوى المستخدم، ويتم تحرير القائمة C. هذا يؤدي إلى الإشارة اللاحقة إلى كائن القائمة C غير الصالح في دالة xxxEnableMenuItem.

Numen حصرية: ثغرة 0day من مايكروسوفت يمكن أن تزعزع نظام Web3 على المستوى النظامي والفيزيائي

استغلال الثغرات ( Exp ) التنفيذ

الفكرة العامة

النظر في اتجاهين محتملين للاستفادة:

  1. تنفيذ shellcode: الإشارة إلى ثغرات سابقة مثل CVE-2017-0263، ولكن قد تواجه العديد من العقبات في إصدارات Windows الأحدث.

  2. استخدام عمليات القراءة والكتابة لتعديل الرمز: في السنوات الأخيرة لا يزال هناك تجارب عامة يمكن الاستفادة منها، والجانب الرئيسي الذي يحتاج إلى حل هو كيفية التحكم في قيمة cbwndextra للمرة الأولى.

نحن نتبنى الخيار الثاني، حيث نقوم بتقسيم exp إلى خطوتين: التحكم في قيمة cbwndextra وإنشاء بدائل قراءة وكتابة مستقرة.

![Numen الحصرية: ثغرة 0day من مايكروسوفت يمكن أن تكشف عن نظام + المستوى الفيزيائي لمشهد Web3](https://img-cdn.gateio.im/webp-social/moments-1cc94ddafacec491507491eef9195858.webp01

) الكتابة الأولى للبيانات

استخدم كائن الاسم WNDClass من فئة النوافذ لاحتلال وإطلاق ذاكرة كائن القائمة المحررة. في دالة xxxRedrawWindow، ابحث عن موقع البيانات القابل للكتابة، من خلال التحكم في بيانات الذاكرة الخاصة بالكائن السابق لتلبية فحص العلامات في الدالة.

![Numen حصرية: ثغرة 0day من مايكروسوفت يمكن أن تقلب لعبة Web3 على النظام + المستوى الفيزيائي]###https://img-cdn.gateio.im/webp-social/moments-697c5814db02534f63b44c0d1d692f83.webp(

) تخطيط الذاكرة المستقرة

تصميم تخطيط الذاكرة لكائن HWND بحجم 0x250 بايت متتالي، تحرير الكائنات الوسيطة واستخدام كائن HWNDClass. تستخدم كائنات HWND الأمامية والخلفية للتحقق من الوظائف وتنفيذ العمليات الأساسية للقراءة والكتابة. تحديد ترتيب الكائنات بدقة من خلال تسرب عنوان مقبض النواة.

![Numen حصرية: ثغرة 0day من مايكروسوفت يمكن أن تكشف عن نظام + المستوى الفيزيائي في لعبة Web3]###https://img-cdn.gateio.im/webp-social/moments-b0942592135ac96c6279544a62022329.webp(

) تنفيذ القراءة والكتابة للعبارات الأساسية

يمكن استخدام دالة GetMenuBarInfo للقراءة بشكل عشوائي، واستخدام دالة SetClassLongPtr للكتابة بشكل عشوائي. باستثناء الكتابة إلى TOKEN، تتم جميع عمليات الكتابة الأخرى من خلال كائن الفئة للكائن النافذة الأول.

![Numen حصرية: ثغرة 0day من مايكروسوفت يمكنها كشف نظام+طبقة فيزيائية لأسواق Web3]###https://img-cdn.gateio.im/webp-social/moments-b06b098af4f07260fdc03a75da160706.webp(

الاستنتاج

  1. مايكروسوفت تعيد بناء كود win32k باستخدام Rust، وقد تحل هذه الثغرات بشكل كامل في المستقبل.

  2. تعتمد هذه الثغرات بشكل رئيسي على تسرب عنوان مقبض كومة سطح المكتب، مما يشكل خطرًا أمنيًا على الأنظمة القديمة.

  3. قد يكون اكتشاف هذه الثغرة نتيجة لتحسينات في كشف تغطية الشيفرة.

  4. تساعد مراقبة تخطيط الذاكرة غير الطبيعي وعمليات القراءة والكتابة على بيانات النوافذ في اكتشاف ثغرات مماثلة.

شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • أعجبني
  • 6
  • مشاركة
تعليق
0/400
TestnetNomadvip
· منذ 14 س
ماذا تتحدث عن Rust؟
شاهد النسخة الأصليةرد0
StealthDeployervip
· منذ 14 س
لقد بدأت باستخدام لينكس منذ فترة طويلة، إنه خيار حكيم
شاهد النسخة الأصليةرد0
CryptoMotivatorvip
· منذ 14 س
مرة أخرى يحدث شيء، هذا الخطأ في مايكروسوفت تقليدي حقًا
شاهد النسخة الأصليةرد0
LiquidatedDreamsvip
· منذ 14 س
استخدام مايكروسوفت دائمًا هو فخ
شاهد النسخة الأصليةرد0
MondayYoloFridayCryvip
· منذ 14 س
أنا مستثمر التجزئة الأقل خبرة في Web3

تعليق على المقال:

هل يمكن لـ rust أن ينقذ ويندوز؟ هذا مضحك حقًا
شاهد النسخة الأصليةرد0
CrashHotlinevip
· منذ 14 س
ويندوز XP التالف عاد ليواجه مشكلة مرة أخرى
شاهد النسخة الأصليةرد0
  • تثبيت