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

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


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

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

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

(2) وبعد ذلك ، باستخدام الاختراق لاستكشاف عناوين القابلية للكتابة ، يحدد الجيب الضار في مناطق ذاكرة التطبيق المضيف المناسبة لحقن الحمولة النافعة.

(3) بعد ذلك ، ينشئ الجيب سلسلة ROP من الأدوات الذكية الموجودة في الخطوة (1) ويحقن تلك السلسلة في رصة تطبيق المضيف.

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

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

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

ابحث عن مكان لحقن الحمولة النافعة:

بناء سلسلة شرطة عمان السلطانية:

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