
هل تعلم أن برنامج التشغيل الشرعي تمامًا يمكن أن يمنح المهاجم فرصة التسجيل في نظامك لفترة طويلة ، مع الاستمرار في الداخل حتى بعد إعادة تثبيته؟ أو تحويل جهاز الكمبيوتر الخاص بك إلى لبنة؟ على سبيل المثال ، تعتبر بعض برامج التشغيل غير الموقعة (الموقعة) غير المؤذية أدوات بالمناسبة للكتابة فوق 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.
كما ترون من الجدول ، فإن برنامج التشغيل الموقّع ذو الوظيفة المزدوجة هو الطريقة الأكثر جاذبية لتجاوز DSE للمهاجمين.
وظيفة خطيرة أو مزدوجة الغرض
دعونا نلقي نظرة على أمثلة القدرات الخبيثة التي يظهرها المهاجم في وجود سائق له وظائف خطرة مزدوجة الغرض.
- دخول 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 في برامج التشغيل. يسرد الجدول أدناه الوظائف الخطرة ومصادر المعلومات عنها.
وهذه ليست القائمة الكاملة للوظائف الخطرة المحتملة. يمكنك أيضًا التحدث عن قراءة / كتابة الذاكرة الظاهرية لـ 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 ، ولكن مع البعض الآخر الأقل شهرة ، فسيكون من الصعب اكتشافه. لذلك عليك أن تكون في حالة تأهب ، وأن تراقب مثل هذه الأشياء ولا تسمح لكل برنامج تشغيل بالتمهيد في النظام.
المؤلف: إليزافيتا كومينكو