برامج تشغيل الجهات الخارجية الخطرة على نظامك أو LOLDrivers


هل تعلم أن برنامج التشغيل الشرعي تمامًا يمكن أن يمنح المهاجم فرصة التسجيل في نظامك لفترة طويلة ، مع الاستمرار في الداخل حتى بعد إعادة تثبيته؟ أو تحويل جهاز الكمبيوتر الخاص بك إلى لبنة؟ على سبيل المثال ، تعتبر بعض برامج التشغيل غير الموقعة (الموقعة) غير المؤذية أدوات بالمناسبة للكتابة فوق BIOS. بعد هذا الهجوم ، فقط المبرمج سيوفر.


في Windows ، هناك تطبيقات / نصوص / مكتبات موثوق بها مع إضافات مثير وظيفة خطيرة مثل تنفيذ التعليمات البرمجية التعسفية ، وتنزيل الملفات ، وتجاوز UAC ، إلخ. إذا تم العثور على هذه الوظيفة الإضافية في مكون kernel ، فستصبح أكثر إثارة للاهتمام.


بدءًا من نظام التشغيل Windows Vista x64 ، يتم تطبيق سياسة توقيع برنامج التشغيل (DSE) - يجب توقيع جميع برامج تشغيل مستوى kernel. إذا أراد أحد المهاجمين (مع حقوق المستخدم / المسؤول) بعد اختراق النظام الحصول على أقصى مستوى من الوصول (تثبيت kernel rootkit / bootkit / SMM-rootkit / BIOS-rootkit) ، فسيتعين عليه تجاوز شرط التوقيع لبرنامج التشغيل بطريقة أو بأخرى. يمكن أن تتيح القدرة على استدعاء وظائف أو تعليمات معينة من وضع kernel في وضع kernel للمهاجمين أداة لرفع الامتيازات أو الكشف عن المعلومات أو التسبب في رفض الخدمة. نحن نسمي هذه الوظيفة وظيفة مزدوجة الغرض (في بعض الحالات ، قد يطلق عليها نقاط الضعف أو الخلفية ، ومع ذلك ، فإن المناقشة حول التعريف الصحيح تتجاوز نطاق هذه المقالة).


حلول DSE


دعونا نلقي نظرة على الخيارات التي يجب على المهاجم عمومًا تجاوز DSE (يجب عليك اختراق ring0 بطريقة أو بأخرى). يلخص الجدول التالي طرق تجاوز DSE بمزاياها وعيوبها (للمهاجم ، ويحيط حراس الأمن علما بذلك). تجدر الإشارة إلى أن هذه المعلومات تنطبق على نظام التشغيل Windows x64 ، بدءًا من نظام التشغيل Vista.


طريقة لالفوائدالقصور
إعداد بيانات تهيئة التمهيد (وضع الاختبار)سهولة
  • لا يعمل مع جميع التطبيقات.
  • تظهر علامة مائية على سطح المكتب
  • إعادة تشغيل المطلوبة
باستخدام مفتاح خاص للخطرالقدرة على تثبيت أي سائق
  • في حالة اكتشاف تسرب ، تتم إضافة الشهادة إلى قائمة إبطال الشهادات (CRL)
استخدام الضعف في تطبيق التحكم DSEلم يتم الكشف عنها بواسطة أنظمة مكافحة الفيروسات والأمان من Windows
  • صعوبة في العثور على مثل هذه الثغرات
  • إصدار نظام التشغيل يعتمد
تعديل آليات فحص برنامج التشغيل (bootmgr ، winload.exe ، winresume.exe ، ci.dll)القدرة على تثبيت أي برنامج تشغيل دون الشيكات OC
  • تعديل التعقيد
  • يتطلب طريقة لتجاوز التمهيد الآمن (في حالة التمكين)
  • إعادة تشغيل المطلوبة
  • إصدار نظام التشغيل يعتمد
  • ملف الضوابط الأخرى
باستخدام برنامج تشغيل موقع مع وجود ثغرة أمنيةصعوبة اكتشاف الهجوم
  • صعوبة في العثور على مثل هذه الثغرات
  • كشف قفل الأمان
استخدام برنامج تشغيل موقّع مع وظائف ثنائية الغرضلم يتم الكشف عنها بواسطة أنظمة مكافحة الفيروسات والأمان من Windows
  • مدى تعقيد البحث (عن المهاجم) في برنامج التشغيل مع الوظيفة المزدوجة المطلوبة

كما ترون من الجدول ، فإن برنامج التشغيل الموقّع ذو الوظيفة المزدوجة هو الطريقة الأكثر جاذبية لتجاوز DSE للمهاجمين.


وظيفة خطيرة أو مزدوجة الغرض


دعونا نلقي نظرة على أمثلة القدرات الخبيثة التي يظهرها المهاجم في وجود سائق له وظائف خطرة مزدوجة الغرض.


  • امتياز التصعيد لمستوى المشرف / النظام. قراءة / كتابة الذاكرة الفعلية المطلوبة. يمكن تنفيذ هذا الهجوم ، على سبيل المثال ، باستخدام برنامج التشغيل ASMMAP من ASUS. للقيام بذلك ، اقرأ الذاكرة الفعلية وابحث عن بنية EPROCESS (إنها عنصر في قائمة مرتبطة) ، ثم انتقل إلى القائمة بحثًا عن العملية التي نريد زيادة مستوى امتيازها ، وكذلك بعض العمليات المعروفة بمستوى SYSTEM (على سبيل المثال ، lsass ، wininit). ثم انسخ قيمة حقل الرمز المميز لهيكل عملية النظام إلى بنية العملية المستهدفة. ويرد وصف أكثر تفصيلا للهجوم هنا .
  • تعطيل SMEP. للقيام بذلك ، تحتاج إلى الكتابة إلى سجل التحكم cr4 (بتعبير أدق ، إعادة تعيين بت 20). على سبيل المثال ، لا يقوم برنامج التشغيل bandainamcoonline.sys بتعطيل SMEP فحسب ، بل يقوم أيضًا بتنفيذ التعليمات البرمجية وفقًا للمؤشر الذي تم تمريره إليها من المستخدم. للمهتمين ، هناك مقال مع وصف مفصل للسائق.
  • تنفيذ التعليمات البرمجية التعسفية في وضع kernel. قراءة / كتابة الذاكرة الفعلية و MSR المطلوبة. النقطة المهمة هي استبدال العنوان (الموجود في إحدى MSRs) ، والذي سيتم الانتقال إليه عند إجراء مكالمة النظام ، إلى عنوان موقع رمز المهاجم. هنا يمكنك العثور على مزيد من المعلومات حول هذا. سوف تتدخل PatchGuard على طول الطريق ، ولكن يمكنك معرفة ذلك إذا كنت ترغب في ذلك.


    نظرًا لأن كلا من برنامج التشغيل و PatchGuard يعملان في Ring 0 ، فلا شيء يمنع السائق من تعطيل اختبارات PatchGuard (حتى ، بالطبع ، حتى تستمع Microsoft إلى Intel وتتجاوز النموذج مع حلقتين للحماية). يدرك مطورو برامج kernel في Microsoft هذه الحقيقة ويقومون بإجراءات مختلفة لإخفاء موقع هذا الرمز وتعمية تصرفاته والهياكل الداخلية المستخدمة. بمعنى آخر ، نظرًا لعدم القدرة على منعك من تعديل كود PatchGuard ، فإنهم يبذلون قصارى جهدهم لإخفائه.

    - Blunden B. ترسانة Rootkit: الهروب والتهرب في الزوايا المظلمة للنظام.

    الأصلي
    نظرًا لأن كلا من رمز برنامج التشغيل ورمز PatchGuard يتم تنفيذهما في Ring 0 ، فلا يوجد شيء يمنع KMD من تعطيل اختبارات PatchGuard (ما لم تكن Microsoft بالطبع تأخذ إشارة من Intel وتتحرك إلى أبعد من نموذج امتياز ذي حلقتين). يدرك مهندسو النواة في Microsoft هذه الحقيقة تمامًا ويؤدون جميع أنواع برامج الألعاب البهلوانية للتشويش على أماكن تواجد الكود وما يفعله وهياكل البيانات الداخلية التي يتعامل معها. بمعنى آخر ، لا يمكنهم منعك من تعديل كود PatchGuard ، لذلك سيحاولون مثل الجحيم لإخفائه.

    - Blunden B. ترسانة Rootkit: الهروب والتهرب في الزوايا المظلمة للنظام.



  • دخول BIOS. مثال في البرية هو Lojax . استولى المهاجمون على RwDrv.sys المعروفة واستخدموها لأغراضهم المتسخة: لقد قرأوا نظام BIOS ، وقاموا بتعديله وكتابته. لن تساعد إعادة تثبيت Windows هنا ، لأن الشفرة الخبيثة موجودة في البرنامج الثابت على SPI-flash. إذا لم تنجح عملية الكتابة الفوقية لـ BIOS (أو الكتابة فوقها بشكل خاص) ، فستكون غير سارة أيضًا. في أي حال ، سوف تضطر إلى القيادة بعد المبرمج لإصلاح العواقب المزعجة.
  • اتصل بمعالج SMI. أولاً ، ليست كل وحدات BIOS غير معزولة بنفس القدر عن الكود في وضع ring0: هناك آليات متعددة لحماية القراءة / الكتابة ، لذلك قد يكون هناك موقف تحتاج إلى خفضه - إلى وضع SMM (الأكثر امتيازًا). طريقة واحدة للوصول إلى هناك من وضع kernel هي سحب معالج SMI (غالبًا ما تكون هناك نقاط ضعف بينها). للاتصال بمعالج SMI ، يجب أن تكون قادرًا على الكتابة إلى منفذ الإدخال / الإخراج ، ويمكن القيام بذلك فقط بامتيازات ring0. بمعنى أن برنامج تشغيل لديه القدرة على الكتابة إلى منافذ الإدخال / الإخراج قادر على اكتشاف معالج SMI ضعيف يمكن أن يسمح للمهاجم بتنفيذ التعليمات البرمجية في وضع SMM. في المثال ، يستخدم المؤلف برنامج التشغيل RwDrv.sys.
  • معلومات حول النظام. قراءة ذاكرة kernel (من خلال قراءة الذاكرة الفعلية) ، وقراءة BIOS ، ومعلومات حول إعدادات النظام ، والأجهزة المتصلة وآليات الحماية الممكّنة / المعطلة (من خلال قراءة MSR ، وسجلات التحكم ، والوصول إلى منافذ الإدخال / الإخراج) ، في بعض الحالات ، يمكن اكتشاف برنامج مشرفي مشهور ( مثل VirtualBox عبر MSR ). لهذه المهمة ، حتى السائق الذي يمكنه القراءة فقط ، وليس بالضرورة الكتابة ، يكون مناسبًا في أغلب الأحيان. على سبيل المثال ، تعتبر RamCaptureDriver64.sys من Belkasoft مناسبة لقراءة الذاكرة الفعلية.

إذا قمنا بتحليل العديد من المقالات والملاحظات حول CVE ، فيمكننا التمييز بين بعض تصنيفات الخطر المحتمل عند الوصول من وظائف ring3 في برامج التشغيل. يسرد الجدول أدناه الوظائف الخطرة ومصادر المعلومات عنها.


وظائف خطرة محددةمصادر المعلومات المتعلقة بالممارسات الأمنية
قراءة / كتابة سجلات MSRCVE-2018-10711 ، CVE-2018-18535 ، CVE-2018-19323 ، CVE-2007-5633 ، CVE-2007-5761
قراءة / كتابة منافذ الإدخال / الإخراجCVE-2018-10712 ، CVE-2018-18536 ، CVE-2018-19322
قراءة / كتابة الذاكرة الفعليةCVE-2018-16712 ، CVE-2018-10710 ، CVE-2017-15302 ، CVE-2017-15303 ، CVE-2018-19321
قراءة / كتابة سجلات التحكمCVE-2018-10709 ، Eset - استغلال ويندوز في عام 2016
أداء الوصول / عدادات على مدار الساعةليف Uhsadel ، أندي جورج ، إنغريد Verbauwhed - استغلال عدادات أداء الأجهزة
قراءة / كتابة سجل العلمWojtczuk R. ، Rutkowska J. بعد الأرنب الأبيض: هجمات برمجية ضد تقنية Intel VT-d
تعليمات الوصول إلى ذاكرة التخزين المؤقتاكتشاف الهجمات على القنوات الجانبية القائمة على ذاكرة التخزين المؤقت من خلال تقنية مراقبة التخزين المؤقت من Intel وعدادات أداء الأجهزة

وهذه ليست القائمة الكاملة للوظائف الخطرة المحتملة. يمكنك أيضًا التحدث عن قراءة / كتابة الذاكرة الظاهرية لـ kernel ، والقراءة / الكتابة MMIO ، والوصول إلى أجهزة PCI ، إلخ.


من أهم الاهتمامات ، فضلاً عن الخطر الأكبر (وأكبر احتمال لاكتشاف برنامج تشغيل به مثل هذه الوظائف) ، أول ثلاث وظائف: سجلات MSR للقراءة / الكتابة ، ومنافذ القراءة / الكتابة / الإدخال / الذاكرة الفعلية للقراءة / الكتابة. باستخدام سجلات التحكم ، يمكنك تجاوز بعض آليات الحماية ، تتيح لك الكتابة إلى سجل العلم تمكين منافذ الإدخال / الإخراج للقراءة / الكتابة في الحلقة 3 (بالمناسبة ، تم ذكره في هذه المقالة على Habré) ، ونجاح الهجمات على قنوات الجهات الخارجية (عن طريق الوصول إلى ذاكرة التخزين المؤقت ومراقبة عدادات الأداء / الدورات) من غير المرجح على الأرجح.


أثناء عملية إنشاء هذه المادة في مؤتمر DEFCON 27 في لاس فيجاس ، قدم الباحثان جيسي مايكل وميكي شيكاتوف العمل "انطلق من النواة إذا كنت غير قادر على القيادة" ، والذي يناقش هذه المشكلة أيضًا ، ونحن نوصي بأن تدرس هذه المواد لاستكمال الصورة. إن سيناريوهات استخدام برامج التشغيل هذه بسيطة للغاية وواضحة ، ويتم تقديم أمثلة على أقسام التعليمات البرمجية المسؤولة عن الوظائف الأكثر أهمية. ويوفر أيضًا رمزًا للعمل وإيجاد برامج تشغيل مماثلة.


بشكل عام ، تجدر الإشارة إلى أن هذا الموضوع طالما كان قلقًا بشأن باحثي الأمن. مرة أخرى في عام 2018 ، الباحث الكسندر Matrosov في مقالته "ما الذي يجعل السائقين OS خطير على BIOS؟" أثار هذا السؤال وأظهر كم هو بسيط لاستغلال BIOS.


السائقين ثنائي الوظيفة


فيما يلي أشهر ممثلين للسائقين ذوي وظائف مزدوجة الغرض.


  • RwDrv.sys هو برنامج مشهور جدًا (يأتي مع الأداة المساعدة RWeverything ). يقرأ ويكتب الذاكرة الفعلية ومنافذ الإدخال / الإخراج و MSR وسجلات التحكم. تم استخدامه مرارا وتكرارا في مختلف PoCs ، ثم في الجذور الخفية Lojax المذكورة سابقا. واجهة مكتوبة له في C ++ ، ويستخدم أيضا في chipec .


  • cpuz / gpuz



    يقرأ ويكتب الذاكرة الفعلية ، والموانئ ، و MSR. هناك العديد من الأدوات المساعدة PoC استخدامه ( هنا وهنا ).


  • pcdsrvc_x64 - برنامج تشغيل من Dell ، لمزيد من المعلومات ، اتصل بهذه المشاركة. يتيح لك قراءة / كتابة الذاكرة الفعلية في منافذ الإدخال / الإخراج.


  • AsIO64.sys
    صورة
    يوفر القدرة على قراءة / كتابة الذاكرة الفعلية ومنافذ الإدخال / الإخراج ، ويأتي أيضًا مع ملف dll مناسب لأداء هذه الطلبات.


  • Asmmap64.sys هو برنامج تشغيل آخر من ASUS يسمح لك بقراءة / كتابة الذاكرة الفعلية ومنافذ الإدخال / الإخراج و MSR. سيكون ممتعًا بشكل خاص للمهاجمين ، حيث يمكن الوصول إلى برنامج التشغيل من مستخدم عادي دون حقوق المسؤول. يمكن للفضوليين اللجوء إلى المصدر .


  • ntiolib_x64.sys / winio64.sys - برامج تشغيل من MSI ، يتم وصفها بالتفصيل في المقالة المذكورة سابقًا. باستخدام ntiolib_x64.sys ، يمكنك قراءة / كتابة الذاكرة الفعلية ومنفذ الإدخال / الإخراج و MSR ، يوفر winio64.sys جميع هذه الوظائف باستثناء MSR.



عادة ، يتم التعرف على الوظائف الخطرة الموصوفة على أنها نقاط ضعف إذا كان المستخدم في متناول المستخدم بدون حقوق المسؤول (ACL غير صحيحة) أو عندما يسمح بتنفيذ التعليمات البرمجية التعسفية مباشرة (كما في bandainamcoonline.sys). في حالات أخرى ، هذه مجرد وظيفة ، ولأن المستخدم لديه حقوق المسؤول ، يمكنه استخدام جميع وظائف برنامج التشغيل وهذا هو المعيار.


إذا كنت تعتقد أنه لا يوجد أكثر من عشرة من برامج التشغيل هذه ، فأنت مخطئ إلى حد كبير. يمكنك رؤية هذا الاختيار من برامج التشغيل المثيرة للاهتمام. تحتوي هذه القائمة على برامج تشغيل من ASUS و AVAST و Razer و LG و Megatrends الأمريكية وغيرها من الشركات المعروفة. لذلك هناك الكثير منهم ، تحتاج فقط إلى البحث. لذلك ، فإنها تشكل تهديدا حقيقيا.


يتم فهم هذا التهديد أيضًا من قِبل موظفي Microsoft. وسيكونون ممتنين للحصول على معلومات حول برامج التشغيل هذه ؛)
صورة


توصيات


للمستخدمين:


  • يجب ألا تجلس دون داع تحت حساب المسؤول وتعطيل UAC (على الرغم من أنه ليس من الصعب الالتفاف عليه).
  • يمكنك تثبيت الكاشف الذي يحاول تثبيت برامج التشغيل (على سبيل المثال ، هنا ).
  • إذا كان من الضروري استخدام الأدوات المساعدة مع برامج التشغيل هذه (التشخيص ، لتحديث BIOS ، وما إلى ذلك) ، قم بإزالة برامج التشغيل بعد الاستخدام.
  • قم بإعداد واقي الأجهزة (إذا كنت مالكًا سعيدًا لنظام Windows 10). باستخدام هذه التقنية ، يمكنك إنشاء سياسة تكامل التعليمات البرمجية الخاصة بك وإضافة قوائم بيضاء من البرامج والشهادات. على سبيل المثال ، أضف إلى السياسة شرط أن يكون لدى أي برنامج تشغيل وضع kernel توقيع Microsoft WHQL. في هذا المنشور ، يمكنك التعرف بشكل أفضل على إعداد Device Guard لهذا الغرض.

الشركات المصنعة هي أفضل حالا لا توقع مثل هذه السائقين. إذا احتاج المستخدم إلى تحديث نظام BIOS ، فتحقق من وجود ثغرات أمنية (مرحبًا ، chipsec) ، وقياس الأداء أو إجراء بعض التلاعب الأخرى التي تتطلب تثبيت برامج التشغيل هذه ، ثم يمكنه الدخول في Test Mode ، والقيام بكل هذا ، ثم الخروج. ستنخفض قابليتها للاستخدام ، ولكن الأمان سيزداد.


النتائج


إذا تم توقيع شيء ما ، فلا يمكنك الوثوق به على أي حال. أولاً ، يمكنك توقيع شيء كهذا ، وثانياً ، يمكن للمهاجم الاستفادة من هذا الموقع (حتى لو كان من شركة تصنيع موثوق بها).


يجب ألا يستبعد متخصصو أمن المعلومات من مواقف نماذج التهديد التي يتطلب فيها المهاجم سائقًا ذو وظيفة خطيرة لتنفيذ هجوم. هناك ما يكفي من هذه السائقين ؛ الأمر بسيط للغاية للقيام بذلك. إذا لم يتم تنفيذ الهجوم باستخدام برنامج تشغيل البوب ​​مثل RwEverything ، ولكن مع البعض الآخر الأقل شهرة ، فسيكون من الصعب اكتشافه. لذلك عليك أن تكون في حالة تأهب ، وأن تراقب مثل هذه الأشياء ولا تسمح لكل برنامج تشغيل بالتمهيد في النظام.


المؤلف: إليزافيتا كومينكو

Source: https://habr.com/ru/post/ar468691/


All Articles