مرحبا بالجميع! تحسبا لبدء دفق جديد في دورة
الهندسة العكسية ، فإننا نشارك معك ترجمة لمواد مثيرة للاهتمام للغاية. استمتع بالقراءة

يمكن أن يسمى العامين الماضيين سنوات من المتسللين رانسومواري. كان Ransomware ، بلا شك ، أكثر أنواع البرامج الضارة شيوعًا. ومع ذلك ، في نهاية السنوات الأخيرة ، بدأنا نلاحظ انخفاض شعبيتها وزيادة لصالح عمال المناجم. من الممكن أن ينمو هذا الاتجاه في عام 2018 فقط.
من وجهة نظر الضحية ، هذا أمر مريح ، نظرًا لأن عمال المناجم ليسوا خطرين مثل الفدية. نعم ، إنهم يبطئون النظام ، ولكن بمجرد التخلص منهم ، يمكنك الاستمرار في استخدام جهاز الكمبيوتر الخاص بك كما كان من قبل. لا تُسرق بياناتك أو تُفقد ، كما هو الحال مع فيروس الفدية.
من وجهة نظر باحث البرمجيات الخبيثة ، عمال المناجم مخيبة للآمال. أنها لا توفر مواد جديدة كافية للتحليل الأعمق ، وذلك أساسا لأنها تستند إلى مكونات مفتوحة المصدر معروفة مع القليل من الارتباك أو الشبح.
ومع ذلك ، من وقت لآخر نجد عمال المناجم باستخدام الحيل مثيرة للاهتمام. لقد شاهدنا مؤخرًا تقنية تسمى "بوابة السماء" ، والتي تسمح بالحقن في عمليات 64 بت من محمل الإقلاع 32 بت. هذه الفكرة ليست جديدة ، ويعود تاريخ تنفيذها الأول إلى عام 2009 ، ولكن من المثير للاهتمام أن نرى كيف تم تنفيذها في شكل جديد ، تم الحصول عليها مباشرة "من البرية".
يمكن للمبتدئين في تحليل الفيروسات قراءة دليل حول ماهية بوابة السماء وكيفية التعامل مع تحليلها.
مواد للتحليل
تم العثور على هذا النمط في استمرار حملة
Ngay (المزيد حول هذا
هنا ). قادني التحقق من سيرة هذه العينات إلى
المقال_qaz_qaz ، الذي يصف حملة سابقة بعينة مماثلة. ومع ذلك ، فإن تحليله لم يتضمن تقنية Heaven's Gate.
تحليل السلوك
لنرى الحقن المذكور ، يجب علينا تشغيل العينة على نظام 64 بت. نرى أنه يطلق جوهر الكمبيوتر الدفتري ، مع المعلمات الخاصة بالتعدين بالعملات المشفرة:

بالنظر إلى الخطوط الموجودة في الذاكرة في ProcessExplorer ، نرى أن هذا ليس دفتر ملاحظات حقيقيًا ، ولكنه
عامل منجم XMRig Monero.

لذلك ، في الوقت الحالي ، نحن على يقين من أن صورة دفتر الملاحظات في الذاكرة قد تم استبدالها على الأرجح بطريقة RunPE (معالجة التجويف).
القطارة الرئيسية هي 32 بت ، لكنها تنقل الحمولة إلى كمبيوتر محمول 64 بت:

الأكثر إثارة للاهتمام ، أن هذا النوع من الحقن غير مدعوم من قبل واجهة برمجة تطبيقات Windows الرسمية. يمكننا القراءة / الكتابة على ذاكرة العمليات ذات 32 بت من تطبيق 64 بت (باستخدام واجهة برمجة تطبيقات WoW64) ، ولكن ليس بالعكس.
ومع ذلك ، هناك بعض الحلول غير الرسمية ، مثل تقنية تسمى "بوابة السماء".
استعراض بوابة السماء
تم وصف تقنية Heaven's Gate لأول مرة في عام 2009 من قبل أحد المتطفلين الذين يطلق عليهم اسم Roy G. Biv. في وقت لاحق ، تم إنشاء العديد من التطبيقات ، على سبيل المثال ، مكتبة
Wow64ext أو ، بناءً على ذلك ،
W64oWoW64 . في مدونته عام 2015 ، وصف Alex Ionescu
تدابير لمكافحة هذه التقنية .
دعونا ننظر في كيفية عملها.
تشغيل عمليات 32 بت على Windows 64 بت
كل عملية 32 بت تعمل على إصدار 64 بت من Windows تعمل على نظام فرعي خاص
WoW64 يحاكي بيئة 32 بت. يمكنك رسم تشبيه مع صندوق رمل 32 بت يتم إنشاؤه داخل عملية 64 بت. أولاً ، يتم إنشاء بيئة عملية 64 بت. وبالفعل داخلها يتم إنشاء بيئة 32 بت. يعمل التطبيق في هذه البيئة 32 بت ، ولكن ليس لديه حق الوصول إلى الجزء 64 بت.
إذا قمنا بفحص عملية 32 بت من الخارج باستخدام ماسح ضوئي 64 بت ، فسنرى أن بداخلها كل من DLL و 32 بت. الأهم من ذلك ، أنه يحتوي على نسختين من NTDLL: 32 بت (محملة من دليل SysWow64) و 64 بت (محملة من دليل System32):

ومع ذلك ، فإن عملية 32 بت نفسها لا ترى الجزء 64 بت وتقتصر على استخدام DLL 32 بت. للحق في عملية 64 بت ، تحتاج إلى استخدام إصدارات 64 بت من الوظائف المقابلة.
شرائح الكود
للوصول إلى الجزء المقيد من البيئة ، نحتاج أن نفهم كيف تتم العزلة. اتضح أن كل شيء بسيط جدا. يتوفر تنفيذ التعليمات البرمجية 32 بت و 64 بت من خلال عنوان قطعة رمز مختلفة: 32 بت - 0x23 و 64 بت - 0x33.
إذا اتصلنا بالعنوان بالطريقة المعتادة ، فسيتم تعيين الوضع الذي يتم استخدامه لتفسيره افتراضيًا. ومع ذلك ، يمكننا طلب التغيير صراحة باستخدام رمز التجميع.
داخل عامل المنجم: تنفيذ بوابة السماء
لن أجري تحليلًا كاملاً لهذا العامل ، حيث سبق وصفه
هنا . دعنا نذهب مباشرة إلى المكان الذي تبدأ فيه المتعة. يتحقق البرنامج الضار من بيئته ، وإذا اكتشف أنه يعمل على نظام 64 بت ، فإنه يستخدم طريقة مختلفة للحقن في عملية 64 بت:

بعد إجراء بعض اختبارات مكافحة التحليل ، تقوم بإنشاء عملية 64 بت جديدة مع وقف التنفيذ (في هذه الحالة ، مفكرة):

هذا هو الهدف الذي سيتم فيه تنفيذ الحمل الضار.
كما تعلمنا سابقًا ، من أجل تضمين الحمولة النافعة في عملية 64 بت ، نحتاج إلى استخدام وظائف 64 بت المناسبة.
أولاً ، يقوم أداة تحميل التشغيل بتمرير معالجة NTDLL 64 بت:

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

يبدو أنه تم نسخ هذا الرمز مباشرة من المكتبة المفتوحة:
https://github.com/rwfpl/rewolf-wow64ext/blob/master/src/internal.h#L26يتم تحديد محدد مقطع 0x33 على المكدس. بعد ذلك ، تستدعي البرامج الضارة السطر التالي: (وبهذه الطريقة ، يتم أيضًا إدخال عنوان السطر التالي على المكدس.)

يتم إصلاح العنوان الذي تم
retf
المكدس بإضافة 5 بايت ويتم تعيينه بعد
retf
:

في النهاية ، يتم استدعاء بيان RETF. RETF هو "عائد بعيد" ، وعلى عكس RET العادي ، فإنه يسمح لك بتحديد ليس فقط العنوان الذي تريد مواصلة التنفيذ منه ، ولكن أيضًا شريحة. كحجج ، فإنه يأخذ DWORDs اثنين من المكدس. وبالتالي ، عندما يتم تنفيذ RETF ، يصبح عنوان المرتجعات:
0x33: 0x402A50بفضل الجزء الذي تم تغييره ، يتم تفسير الشفرة التي تبدأ من العنوان المحدد على أنها 64 بت. لذلك الرمز الذي يرى مصحح الأخطاء هو 32 بت ...

... في الواقع 64 بت.
لتبديل طرق العرض بسرعة ، يمكنني استخدام وظيفة PE-bear:

وفي ما يلي شكل هذه الشفرة إذا تم تفسيرها على أنها 64 بت:

وبالتالي ، فإن الكود الذي يتم تنفيذه هنا هو المسؤول عن نقل محتويات السجل R12 إلى متغير على المكدس ، ثم العودة إلى وضع 32 بت. يتم ذلك من أجل الحصول على
كتلة معلومات مؤشر
الترابط 64 بت
(TEB) ، والتي من خلالها نحصل على
كتلة بيئة معالجة 64 بت
(PEB) من هنا - نحن ننظر إلى
رمز مشابه .
يتم استخدام PEB 64 بت كنقطة بداية لإيجاد إصدار 64 بت من NTDLL. يتم تنفيذ هذا الجزء بطريقة
تافهة (يمكن العثور
هنا على تطبيق "vanilla" لهذه الطريقة) ، وذلك باستخدام مؤشر إلى المكتبات المحملة ، والتي تعد أحد الحقول في بنية PEB. لذلك ، من PEB نحصل على حقل يسمى
Ldr :
Ldr هو بنية من النوع
_PEB_LDR_DATA
. يحتوي على إدخال يسمى
InMemoryOrderModuleList
:

تحتوي هذه القائمة على جميع المكتبات المحملة الموجودة في ذاكرة العملية قيد الدراسة. ننظر من خلال القائمة حتى نجد المكتبة التي نهتم بها ، وهي في حالتنا مكتبة NTDLL. هذا هو بالضبط ما
get_ntdll
وظيفة
get_ntdll
أعلاه. للعثور على اسم مناسب ، تقوم باستدعاء الوظيفة التالية ، المعينة كـ
is_ntdll_lib
، والتي تتحقق من اسم المكتبة مقابل ntdll.dll بواسطة الأحرف. المكافئ من
هذا الرمز يتحول.

إذا تطابقت الأسماء ، فسيتم إرجاع عنوان المكتبة إلى سجالتين:

بمجرد العثور على NTDLL ، نحتاج فقط إلى الحصول على عناوين الدالات المقابلة. يمكننا القيام بذلك من خلال النظر في جدول تصدير المكتبة:

يتم استرجاع الوظائف التالية:
- NttUnmapViewOfSection
- NtGetContextThread
- NtAllocateVirtualMemory
- NtReadVirtualMemory
- NtWriteVirtualMemory
- NtSetContextThread.
كما نعلم ، تعد هذه الوظائف نموذجية لتقنية RunPE. أولاً ، يتم استخدام NtUnmapViewOfSection لإلغاء تعيين ملف PE الأصلي. ثم ، في العملية البعيدة ، يتم تخصيص الذاكرة وكتابة PE جديدة. في النهاية ، يتم تغيير سياق العملية بحيث يبدأ التنفيذ من الوحدة النمطية المضمنة.
يتم تخزين عناوين الوظائف وتسمى لاحقًا (على غرار
هذا الرمز) للتحكم في العملية عن بُعد.
استنتاج
حتى الآن ، لم يظهر مؤلفو عمال المناجم الكثير من الإبداع. يحققون أهدافهم من خلال الاعتماد على مكونات مفتوحة المصدر. تعكس الحالة الموصوفة جيدًا هذا الاتجاه ، حيث تم استخدام تطبيق جاهز.
بوابة السماء موجودة منذ عدة سنوات. بعض البرامج الخبيثة استخدامه لزيادة
الشبح . لكن في حالة عامل المناجم هذا ، ربما سعى المؤلفون بدلاً من ذلك إلى زيادة الأداء عن طريق استخدام الحمولة النافعة التي تناسب الهيكل المستهدف.
هذا كل شيء. يمكنك معرفة المزيد عن دورتنا
هنا .