البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

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

في ظل هذه الحقائق القاسية، هل سيتمكن كاتب الفيروسات من استخدام جيوب SGX لتحقيق أهدافه الخبيثة؟

– اختراق العناوين للتحقق من إمكانية قراءتها
– اختراق للتحقيق في العناوين من أجل الكتابة
– اختراق لإعادة توجيه تدفق التحكم
– ماذا تعطي الاختراقات الثلاثة المذكورة أعلاه للشرير؟
– كيف يستخدم الشرير هذه الاختراقات لإنشاء رانزواري

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

بناءً على كل ما سبق، من المقبول عمومًا أن الجيب قادر فقط على خدمة التطبيق المضيف، وأن الجيب لا يمكنه ممارسة مبادرته الخاصة، بما في ذلك المبادرات الضارة. وهذا يعني أن الجيوب ليست ذات قيمة عملية لكاتبي الفيروسات. يعد هذا الافتراض المتسرع أحد الأسباب التي تجعل حماية SGX غير متماثلة: لا يمكن لرمز التطبيق المضيف الوصول إلى الذاكرة المحصورة، بينما يمكن لرمز الجيب القراءة والكتابة إلى أي عنوان ذاكرة تطبيق مضيف.

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

سنعرض لك بعض الاختراقات التي يستخدمها المهاجمون للتغلب على القيود الموضحة أعلاه للاستفادة من SGX لأغراضهم الضارة: هجمات ROP. إما لتنفيذ تعليمات برمجية عشوائية متخفية في هيئة عملية تطبيق مضيف (على غرار عملية التفريغ، والتي غالبًا ما تستخدمها البرامج الضارة)، أو لإخفاء برامج ضارة جاهزة (لإنقاذ برامجها الضارة من الاضطهاد بواسطة برامج مكافحة الفيروسات وآليات الدفاع الأخرى).

اختراق العناوين للتحقق من إمكانية قراءتها

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

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

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

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

يتمتع هذا التلاعب بـ TSX من داخل الجيب بميزة رائعة للشرير: نظرًا لعدم تحديث معظم عدادات أداء الأجهزة في وقت تنفيذ رمز الجيب، فمن المستحيل تتبع معاملات TSX المنفذة داخل الجيب. وبالتالي، يظل التلاعب الخبيث بـ TSX غير مرئي تمامًا لنظام التشغيل.

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

يستخدم الشرير الاختراق الموضح أعلاه للبحث في رمز التطبيق المضيف عن الأدوات المناسبة لتشكيل سلسلة ROP. وفي الوقت نفسه، لا يحتاج إلى التحقق من كل عنوان. يكفي استكشاف عنوان واحد من كل صفحة من مساحة العنوان الافتراضية. يستغرق فحص جميع سعة الذاكرة البالغة 16 جيجابايت حوالي 45 دقيقة (على Intel i7-6700K). نتيجة لذلك، يتلقى الشرير قائمة بالصفحات القابلة للتنفيذ المناسبة لبناء سلسلة ROP.

اختراق لفحص العناوين من أجل الكتابة

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

يقوم الشرير بهذا البحث من خلال استغلال تأثير جانبي آخر لـ TSX. أولاً، كما في الحالة السابقة، يقوم بالتحقق من وجود العنوان، ثم يتحقق مما إذا كانت الصفحة المقابلة لهذا العنوان قابلة للكتابة. للقيام بذلك، يستخدم الشرير الاختراق التالي: يضع وظيفة الكتابة في معاملة TSX، وبعد اكتمالها، ولكن قبل اكتمالها، يقوم بإجبار المعاملة بالقوة (إجهاض صريح).

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

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

يحتوي هذا التلاعب بـ TSX على ميزة أخرى مفيدة للشرير (إلى جانب استحالة التتبع من خلال عدادات أداء الأجهزة): نظرًا لأن جميع أوامر الكتابة في الذاكرة لا يتم الالتزام بها إلا إذا كانت المعاملة ناجحة، فإن إجبار المعاملة على إكمالها يضمن أن خلية الذاكرة التي تم فحصها يبقى دون تغيير.

اختراق لإعادة توجيه تدفق التحكم

عند تنفيذ هجوم ROP من منطقة محصورة - على عكس هجمات ROP التقليدية - يمكن للمهاجم التحكم في سجل RIP دون استغلال أي أخطاء في البرنامج الذي تمت مهاجمته (تجاوز سعة المخزن المؤقت أو شيء من هذا القبيل). يمكن للمهاجم الكتابة مباشرة فوق قيمة سجل RIP المخزن على المكدس. على وجه الخصوص، يمكنه استبدال قيمة هذا السجل بسلسلة ROP الخاصة به.

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

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

ماذا تعطي الاختراقات الثلاثة المذكورة أعلاه للشرير؟

(1) أولا، الجيب الخبيثة من خلال اختراق لفحص العناوين لمعرفة ما إذا كان يمكن قراءتها، – يبحث في التطبيق المضيف عن أدوات ROP القابلة للإساءة.

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

(٢) ثم بواسطة hack لفحص العناوين من أجل الكتابة- يحدد الجيب الخبيث المناطق الموجودة في ذاكرة التطبيق المضيف المناسبة لإدخال حمولة.

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

(3) بعد ذلك، يقوم الجيب بإنشاء سلسلة ROP من الأجهزة المكتشفة في الخطوة (1) وإدخال هذه السلسلة في مكدس التطبيق المضيف.

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

(4) أخيرًا، عندما يواجه التطبيق المضيف سلسلة ROP التي تم إنشاؤها في الخطوة السابقة، يبدأ تنفيذ الحمولة الضارة - مع امتيازات التطبيق المضيف والقدرة على إجراء مكالمات النظام.

كيف يستخدم الشرير هذه الاختراقات لإنشاء Ranzowari

بعد أن ينقل التطبيق المضيف التحكم إلى المنطقة المحاصرة من خلال إحدى وحدات ECALL (دون الشك في أن هذه المنطقة ضارة)، تبحث المنطقة الضارة عن مساحة خالية في ذاكرة التطبيق المضيف لإدخال التعليمات البرمجية (مع أخذ تسلسلات الخلايا تلك كمساحات خالية المليئة بالأصفار). ثم من خلال اختراق لفحص العناوين لمعرفة ما إذا كان يمكن قراءتها- يبحث الجيب عن الصفحات القابلة للتنفيذ في التطبيق المضيف ويقوم بإنشاء سلسلة ROP التي تنشئ ملفًا جديدًا يسمى "RANSOM" في الدليل الحالي (في هجوم حقيقي، يقوم الجيب بتشفير ملفات المستخدم الموجودة) ويعرض رسالة فدية. في الوقت نفسه، يعتقد التطبيق المضيف بسذاجة أن الجيب يقوم ببساطة بإضافة رقمين. كيف يبدو هذا في الكود؟

ولتسهيل الإدراك، دعونا نقدم بعض فن الإستذكار من خلال التعريفات:

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

نقوم بحفظ القيم الأصلية لسجلات RSP وRBP من أجل استعادة التشغيل العادي للتطبيق المضيف بعد تنفيذ الحمولة:

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

نحن نبحث عن إطار مكدس مناسب (راجع الكود الموجود في قسم "الاختراق لإعادة توجيه تدفق التحكم").

العثور على أدوات ROP المناسبة:

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

العثور على مكان لحقن الحمولة:

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

نحن نبني سلسلة ROP:

البرمجيات الخبيثة SGX: كيف يستغل الأشرار تقنية Intel الجديدة لأغراض أخرى غير تلك التي صممت من أجلها

هذه هي الطريقة التي يستغل بها الأشرار تقنية Intel SGX، المصممة لمواجهة البرامج الضارة، لتحقيق أهداف معاكسة.

المصدر: www.habr.com

إضافة تعليق