إلى الخلف
ذكاء البرامج الضارة
جدول المحتوى

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

اكتشف الباحثون في ProofPoint أداة تحميل برامج ضارة جديدة تسمى Bumblebee. تتم تسمية أداة تحميل البرامج الضارة على اسم سلسلة وكيل المستخدم الفريدة المستخدمة للاتصال بـ C2. وقد لوحظ أن الخصوم بدأوا في استخدام Bumblebee لنشر البرامج الضارة مثل منارات CobaltStrike وقذائف Meterpreter. تستخدم مجموعة التهديدات TA578 أيضًا أداة تحميل Bumblebee في حملاتها.

تستكشف هذه المقالة برامج تحميل البرامج الضارة من Bumblebee وتفك تشفيرها:

  • الميزات التقنية
  • التدفق المنطقي
  • عملية الاستغلال
  • صيانة الشبكة
  • ميزات فريدة

تسليم الحملة

يدفع الخصوم ملفات ISO من خلال سلاسل البريد الإلكتروني المخترقة (الرد)، والمعروفة باسم رسائل البريد الإلكتروني المخترقة، لنشر أداة تحميل Bumblebee. تحتوي ملفات ISO على نسخة بايت إلى بايت من البيانات ذات المستوى المنخفض المخزنة على القرص. يتم تسليم ملفات ISO الضارة من خلال روابط Google Cloud أو مجلدات zip المحمية بكلمة مرور.

ISO file retrieved from Google Cloud (“storage.googleapis.com”)
تم استرداد ملف ISO من غوغل كلاود («storage.googleapis.com»)

 

ISO file retrieved from password protected zip files
تم استرداد ملف ISO من ملفات zip المحمية بكلمة مرور

 

تحتوي ملفات ISO على DLL مخفي بأسماء عشوائية وملف LNK. DLL (مكتبة الارتباط الديناميكي) هي مكتبة تحتوي على رموز وبيانات يمكن استخدامها من قبل أكثر من برنامج في نفس الوقت. LNK هو ملحق اسم ملف في Microsoft Windows لاختصارات الملفات المحلية.

غالبًا ما يحتوي ملف LNK على رابط مباشر إلى ملف قابل للتنفيذ أو بيانات تعريف حول الملف القابل للتنفيذ، دون الحاجة إلى تتبع المسار الكامل للبرنامج. تعد ملفات LNK بديلاً جذابًا لفتح ملف، وبالتالي فهي طريقة فعالة للجهات الفاعلة في مجال التهديد لإنشاء هجمات تستند إلى البرامج النصية. تم تعيين الموقع المستهدف لملفات LNK للتشغيل rundll32.exe، والتي ستستدعي دالة تم تصديرها في DLL المرتبط. إذا لم يتم تمكين خيار «إظهار العناصر المخفية» على نظام الضحية، فقد لا تكون ملفات DLL مرئية للمستخدم.

تحليل لودر النحل

العينة التي تم تحليلها (f98898 df74fb2b2fd3a2ea2907086397 b36ae496 ef3f4454 bf6b7125 f103b8) هو ملف DLL بوظائف تم تصديرها.

الوظائف المصدرة في نموذج ملف DLL

كل من الوظائف المصدرة، وظيفة داخلية و تعيين المسار، قم بتنفيذ الوظيفة الفرع الفرعي 180004AA0.

وظيفة داخلية/تنفيذ الدالة sub_180004AA0 تعيين/مسار تنفيذ الدالة sub_180004AA0

إنتروبيا DLL

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

Entropy of the Malware Sample
إنتروبيا عينة البرامج الضارة

 

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

تفريغ الحمولة ونشرها (الوظيفة sub_180004AA0)

الوظيفة المصدرة الفرع الفرعي 180004AA0 هو عنصر حاسم في تفريغ الحمولة الرئيسية ونشرها على النظام المستهدف.

Exported Function sub_180004AA0
الوظيفة المصدرة sub_180004AA0

 

الوظيفة sub_180003490 يعمل بمثابة أداة فك الحمولة الرئيسية.

Function sub_180003490
الوظيفة الفرعية 180003490

 

الوظيفة الفرعية 180003490

وظيفة sub_180003490 يحتوي على وظيفتين مهمتين:

الرقم الفرعي 1800021D0: روتين الوظيفة هذا مسؤول عن تخصيص ذاكرة الكومة.

Function sub_1800021D0
الوظيفة الفرعية _1800021d0

 

تحت 1800029 قبل الميلاد: تقوم هذه الوظيفة بكتابة البيانات المضمنة، في مقطع البيانات لعينة DLL، في ذاكرة الكومة المخصصة حديثًا. يتم جلب الحمولة المعبأة من مقطع البيانات وكتابتها في ذاكرة الكومة المخصصة. مقطع الكود الموضح في الصورة أدناه مسؤول عن نقل البيانات.

Function sub_1800029BC
الوظيفة الفرعية: 1800029BC

الوظيفة الفرعية: 1800029BC

Assembly code representation of function sub_1800029BC
تمثيل رمز التجميع للوظيفة sub_1800029bc

 

  • يقوم رمز التجميع المميز باللون الأصفر بنقل البيانات المضمنة (الحمولة المعبأة) من مقطع بيانات DLL إلى سجل CL وسيط.
  • يقوم رمز التجميع المميز باللون الأحمر بنقل البيانات من CL إلى الكومة المخصصة. أثناء وقت التشغيل، تستمر ذاكرة الكومة في الامتلاء بالحمولة المعبأة المضمنة في عينات DLL.
Heap memory during run time
ذاكرة التخزين المؤقت أثناء وقت التشغيل

 

الوظيفة الفرعية: 180002ff4

بعد تفريغ الحمولة المعبأة في الذاكرة المخصصة، يعود عنصر التحكم إلى الفرع الفرعي 180004AA0 والوظيفة تحت 180002ff4 يتم تنفيذه.

الوظيفة الفرعية: 180002ff4

وظيفة تحت 180002ff4 يقوم بالعمليات التالية:

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

بعد عودة عنصر التحكم إلى الفرع الفرعي 180004AA0 وظيفة sub_180004180 يتم تنفيذه.

الوظيفة الفرعية 180004180

الوظيفة الفرعية 180004180

ثلاث وظائف مضمنة في الوظيفة sub_180004180

وظيفة sub_180004180 يحتوي على 3 وظائف:

  • sub_180001670: هذه الوظيفة مسؤولة عن تخصيص العديد من ذاكرات الكومة للبرامج الضارة. تقوم البرامج الضارة لاحقًا بتفريغ ملف MZ الذي تم فك حزمه في إحدى الذكريات المخصصة.
  • الجزء الفرعي 180003CE4: هذه الوظيفة مسؤولة عن تفريغ الحمولة المعبأة التي تم تفريغها مسبقًا في كومة المعالجة وإلقاءها في إحدى الذكريات المخصصة بواسطة تحت 180001670.
  • الرقم الفرعي 180001a84: هذه الوظيفة مسؤولة عن إلغاء تخصيص الذاكرة.
Unpacked MZ artifact in the memory
قطعة أثرية MZ غير معبأة في الذاكرة

 

تنفيذ هوك

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

مباشرة بعد أن يقوم محمل Bumblebee بتفريغ الحمولة الرئيسية في الذاكرة، فإنه يربط بعض الوظائف المثيرة للاهتمام التي تم تصديرها بواسطة ntdll.dll (ملف يحتوي على وظائف NT kernel، عرضة للهجمات الإلكترونية) من خلال تقنية الربط المضمنة. تلعب الخطافات المضمنة دورًا مهمًا في تنفيذ الحمولة النهائية. تُظهر آلية التشغيل، لنشر الحمولة، إبداع مطور البرامج الضارة. وظيفة تحت 180001000 مسؤولة عن تنفيذ الخطافات المضمنة.

Function sub_180001000
الوظيفة الفرعية 180001000

 

وظيفة تحت 180001000 يحفظ مبدئيًا عناوين 3 وظائف التفاف تستخدم للتثبيت. وظائف الالتفافية مسؤولة عن اختطاف تدفق التحكم في وظائف Windows المرتبطة. بعد تخزين العناوين، تحت 1800025EC يتم تنفيذه لحل عناوين وظائف API (واجهة برمجة التطبيقات) المستهدفة للتثبيت.

وظائف التحويل في الدالة sub_180001000

تحت 1800025EC يقوم بتحميل ntdll.dll في مساحة العنوان الخاصة بعملية التحميل باستخدام الوظيفة تحميل مكتبة. بعد تحميل وظيفة nt.dll احصل على عنوان PROc يستخدم لحل عناوين الوظائف:

  • لا افتح الملف
  • إنشاء قسم NT
  • عرض خريطة NTM للقسم

قم بتحميل المكتبة ووظائف عنوان getProc

بعد الحصول على عناوين صفحات الذاكرة الخاصة بوظائف الالتفاف للتثبيت، يستخدم اللودر الوظيفة الحماية الافتراضية لتغيير أذونات الذاكرة للصفحات المستهدفة. بعد تغيير الأذونات، يقوم المُحمل بكتابة الروابط المضمنة تحت 180002978. ثم الحماية الافتراضية يتم استدعاؤه مرة أخرى لاستعادة أذونات الصفحة.

وظائف الحماية الافتراضية ووظائف sub_180002978

تم تمرير البيانات إلى الحماية الافتراضية في وقت التشغيل يظهر في الصورة أدناه. المكالمة إلى الحماية الافتراضية يغير ال Ntdll.n افتح الملف إذن الصفحة لـ 0x40 (تنفيذ الصفحة/القراءة/الكتابة).

تم تمرير البيانات/الاتصال بوظيفة VirtualProtect

بعد تغيير أذونات الصفحة Ntdll.n افتح الملف، يقوم المُحمل بتعديل التسلسل الأولي للبايتات في لا افتح الملف API عن طريق تنفيذ الوظيفة تحت 180002978.

وظيفة sub_180002978 لتعديل واجهة برمجة تطبيقات nopenFile

يتضمن الربط عبر الإنترنت الخطوات التالية:

Ntdll.nافتح الملف قبل (الربط) تنفيذ الدالة sub_180002978

  • بعد يتم تنفيذ sub_180002978، مكالمة إلى لا افتح الملف يجعل شفرة البرامج الضارة تقفز إلى الموقع 1800023D4 (التفاف). هذه هي الطريقة التي تغير بها الخطافات المضمنة الضارة تدفق تنفيذ واجهات برمجة التطبيقات.

اتصل بـ nOpenFile مما يجعل البرامج الضارة تقفز إلى 1800023D4

  • بعد كتابة الخطاف، الحماية الافتراضية يتم استخدامه مرة أخرى لاستعادة إذن الصفحة الخاص بـ Ntdll.n افتح الملف إلى 0x20 (الصفحة_تنفيذ_القراءة).

وظيفة الحماية الافتراضية تستخدم لاستعادة إذن الصفحة الخاص بملف Ntdll.ntopen

  • تتكرر عملية تغيير إذن الذاكرة وكتابة الخطافات المضمنة في حلقة do-while، لبقية الوظائف المستهدفة، إنشاء قسم NT و عرض خريطة NTM للقسم.
Do-while loop repeating the permission and hooks process for other target functions
حلقة Do-while تكرر عملية الإذن والربط للوظائف المستهدفة الأخرى

 

ملخص الوظائف المربوطة

بعد التثبيت الناجح، عندما يتم استدعاء الوظائف المستهدفة في مساحة العنوان الخاصة بعملية التحميل، يتم نقل تدفق التحكم إلى عناوين الخطاف ذات الصلة المضمنة:

وظيفة الهدفخطاف مدمج (تحويلات)Ntdll.n افتح الملف1800023 د 4إنشاء قسم ntdll.nt1800-041 ثانيةعرض خريطة Ntdll.nt للقسم180001D4C

يعد تحميل gdiplus.dll أمرًا فريدًا بالنسبة لـ Bumblebee

الوظيفة النهائية التي ينفذها اللودر هي الفرع الفرعي 1800013A0. تستخدم البرامج الضارة الوظيفة تحميل المكتبة W لتحميل وحدة DLL. ثم تستخدم الوظيفة احصل على عنوان PROc للحصول على عنوان وظيفة محددة تم تصديرها بواسطة المكتبة المحملة.

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

الوظيفة sub_1800013a0 مع وظائف مكتبة التحميل W وعنوان getProc

الوحدة gdiplus.dll يتم تحميلها في مساحة عنوان ذاكرة العملية. Gdiplus.dll هي وحدة مهمة، تحتوي على مكتبات تدعم إدارة نوافذ GDI، في نظام التشغيل Microsoft Windows.

تنفيذ وقت التشغيل للدالة sub_1800013a0

الوحدة gdiplus.dll يتم تنفيذه في الوظيفة الأخيرة لمحمل البرامج الضارة. هذه هي الحالة الأولى التي يتم فيها استخدام حمولة MZ التي تم تفريغها مباشرة بواسطة اللودر. وبالتالي، يبدو تحميل هذه الوحدة مريبًا. أيضًا، عنوان أساسي غير عادي (0x1d54fd0000) تم تعيينه إلى المحمل gdiplus.dll وحدة.

تم تعيين عنوان أساسي غير عادي لـ gdiplus.dll

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

العنوان كصفحة تم تعيينها بإذن RWX

ولكن في تحليلنا حتى الآن لم نجد أي كود يقوم بالتفريغ. ثم كيف قامت البرامج الضارة بتغيير محتويات gdiplus.dll؟ ومن المثير للاهتمام أن هذا هو المكان الذي قرر فيه مطور البرامج الضارة الإبداع! يعتبر التثبيت الذي تم رؤيته سابقًا مسؤولاً عن تفريغ الوحدة المحملة بالحمولة غير المعبأة. يتم تناول المزيد من التفاصيل حول نفس الشيء في القسم التالي.

التحقيق في الخطافات والزناد

كما رأينا في القسم السابق، تربط البرامج الضارة 3 واجهات برمجة تطبيقات محددة:

  • لا افتح الملف
  • إنشاء قسم NT
  • عرض خريطة NTM للقسم

اختيار API ليس عشوائيًا. العمل الداخلي لتحميل أي DLL عبر مكتبة التحميل تستخدم API الوظائف الثلاث المذكورة أعلاه. إن ربط هذه الوظائف يمنح البرامج الضارة المرونة لنشر الحمولة التي تم تفريغها سراً. هذه الميزة تجعل من الصعب على الباحثين البحث عن الحمولة الرئيسية.

يتم استخدام وظيفة التحويل عند 0x180001d4c لربط الوظيفة عرض خريطة NTM للقسم، مما يضع الأساس لتفريغ الوحدة المحملة (في هذه الحالة، gdiplus.dll) مع ثنائي Bumblebee غير المعبأ. وظيفة الالتفاف قادرة على الإجراءات التالية:

  • إنشاء كائن القسم عبر إنشاء قسم NT API
  • رسم خريطة لعرض gdiplus.dll لمساحة عنوان أداة التحميل عبر عرض خريطة NTM للقسم
  • كتابة الحمولة غير المعبأة في العرض المعين لـ gdiplus.dll
  • إلغاء تخصيص ذاكرة الكومة التي تحتفظ بالحمولة غير المضغوطة من الخطوات السابقة

يُظهر تنفيذ وظيفة التحويل في 0x180001d4c استخدام مؤشر إلى إنشاء قسم NT API، لإنشاء كائن مقطع لاستخدامه لاحقًا في تعيين gdiplus.dll وحدة.

مؤشر إلى واجهة برمجة تطبيقات NTC CreateSection

بعد إنشاء كائن مقطع، تستدعي وظيفة الالتفاف عرض خريطة NTM للقسم، عبر مؤشر. الآن يتم إنشاء طريقة عرض القسم من قبل النظام. الوظيفة الجزء الفرعي 180002e74 مسؤول عن ملء العرض المعين بحمولة غير معبأة.

مؤشر إلى NTMAPViewOfSection جنبا إلى جنب مع وظيفة sub_180002E74

عنوان العرض المعين، الذي تم إرجاعه بواسطة عرض خريطة NTM للقسم المؤشر في عملية التحميل، وهو 0x1d54f5D0000، هو نفس العنوان الذي يظهر أثناء فحص وحدات العملية.

عنوان العرض المعين الذي تم إرجاعه بواسطة ntmapViewOfSection

تم تعيين عنوان أساسي غير عادي لـ "gdiplus.dll" كما رأينا سابقًا

تبدأ طريقة العرض المعينة من 0x1D54F5D0000. يقوم اللودر بتفريغ الحمولة غير المعبأة هنا، وهو مجوف gdiplus.dll. وبالتالي، تظل حمولة Bumblebee النهائية مخفية داخل الوحدة المحملة gdiplus.dll.

مباشرة بعد تعيين العرض، يتم تنفيذ وظيفة الالتفاف الجزء الفرعي 180002e74 لبدء كتابة الملف الثنائي الذي تم فك حزمه.

الوظيفة sub_180002e74 المسؤولة عن ملء العرض المعين بالحمولة النهائية

يتم تنشيط الخطافات بمجرد تحميل اللودر gdiplus.dll الوحدة عبر تحميل المكتبة W API. ثم يتم تحميل الحمولة بشكل سري في gdiplus.dll وحدة. الحمولة النهائية هي DLL، وبالتالي يتعين على أداة التحميل استدعاء دالة تم تصديرها بشكل صريح لبدء التنفيذ.

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

يحصل برنامج التحميل على عنوان الوظيفة المصدرة «setPath» عبر getProcAddress

توضح الصورة أدناه الوظيفة تعيين المسار تم تصديرها بواسطة حمولة Bumblebee غير المعبأة.

وظيفة تعيين المسار

تحليل الحمولة الرئيسية لـ Bumblebee

يتم تنفيذ المكون الضار الأساسي للنحلة الطنانة في الذاكرة، عندما يتم تجويفها gdiplus.dll يتم تحميله عبر مكتبة التحميل API. عندما يتم تحميل الوحدة في الذاكرة، فإن الوظيفة Dlmain ينشئ موضوعًا جديدًا وينفذ الفئة الفرعية 180008 EC0 روتين.

وظيفة DLL الرئيسية لحمولة النحلة الطنانة

الفئة الفرعية 180008 EC0 الروتين هو وظيفة كبيرة جدًا مسؤولة عن جميع الأنشطة الضارة التي يقوم بها Bumblebee على النظام المخترق.

التدفق المنطقي للوظيفة الفرعية Sub_180008EC0

فحوصات مكافحة VM

أول نشاط يقوم به الفئة الفرعية 180008 EC0 هو التحقق من بيئة الجهاز الظاهري (VM). إذا قامت الدالة بإرجاع True، فسيقوم Bumblebee بإيقاف تشغيل نفسه عن طريق تنفيذ عملية الخروج وظيفة.

يقوم sub_18003DA0 بإجراء فحص الجهاز الظاهري

روتين فحص VM هو. صارم. وهي تستخدم تقنيات مختلفة لضمان عدم تشغيل البرامج الضارة في بيئة الحماية التي يستخدمها باحثو الأمن. بعض الميزات المثيرة للاهتمام هي:

  • التكرار من خلال العمليات الجارية عبر الوظائف إنشاء أداة مساعدة 32 لقطة، المعالجة 32 أولاً، و العملية 32: الخطوة الثانية.

وظائف البرامج الضارة التي تساعد في التكرار من خلال العمليات الجارية

  • تتم مقارنة كل عملية تشغيل بقائمة أسماء البرامج.

تتم مقارنة عملية التشغيل بقائمة أسماء البرامج

  • تقوم البرامج الضارة أيضًا بالتحقق من أسماء المستخدمين المحددة المستخدمة في بيئات وضع الحماية لتأكيد عدم وجود جهاز افتراضي.

فحص البرامج الضارة لأسماء مستخدمين محددة

  • يقوم روتين فحص VM أيضًا بتعداد خدمات النظام النشطة التي تعمل عبر افتح مدير SCM API. يتم تخزين أسماء الخدمات الشائعة التي تستخدمها برامج VM في مصفوفة.

تعداد خدمات النظام النشطة التي تعمل عبر OpenSCmanagerW

  • يقوم أيضًا بمسح دليل النظام بحثًا عن برامج التشغيل الشائعة وملفات المكتبة التي تستخدمها تطبيقات VM.

فحص النظام لبرامج التشغيل الشائعة وملفات المكتبة التي تستخدمها تطبيقات VM الشائعة

  • يقوم الروتين أيضًا بفحص الأنابيب المسماة لتحديد وجود VM.

التحقق من الأنابيب المسماة

فيما يلي بعض الأمثلة على التقنيات التي تستخدمها البرامج الضارة لتحديد بيئات التحليل. كما أن لديها وظائف أخرى تم إنشاؤها مثل استخدام WMI ووظائف التسجيل لتحديد معلومات الأجهزة للتحقق من وجود بيئات VM المثبتة على النظام المستهدف.

إنشاء حدث

بعد التحقق من VM، إذا كان من الآمن المتابعة، تقوم البرامج الضارة بإنشاء حدث. معرف الحدث هو 3C29FEA2-6FE8-4BF9-B98A-0E3442115F67. يتم استخدام هذا لمزامنة مؤشر الترابط.

الحدث الذي تم إنشاؤه بواسطة البرامج الضارة

إصرار

تستخدم البرامج الضارة wsript.exe كمتجه دائم لتشغيل البرامج الضارة في كل مرة يقوم فيها المستخدم بتسجيل الدخول إلى النظام. يتم كتابة تعليمات VB في .vbs ملف. يتم تنفيذ ذلك عندما يرسل C2 الأمر «ins» كمهمة للتنفيذ على النظام.

Wsript.exe

تعليمات VB مكتوبة في ملف.vbs

التلاعب بالرمز

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

يتم منح البرامج الضارة «SedebugPrivilege»

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

قائمة واجهات برمجة التطبيقات المستخدمة لإجراء عمليات حقن التعليمات البرمجية

حقن التعليمات البرمجية عبر NTqueeAPCthread

عندما تتلقى البرامج الضارة الأمر جنبًا إلى جنب مع مخزن DLL المؤقت، الذي يتم حقنه، تبدأ البرامج الضارة في البحث عن قائمة العمليات على النظام. يتم اختيار أحد الملفات التنفيذية في القائمة بشكل عشوائي لحقن ملف DLL الضار.

برامج ضارة تبحث عن قائمة العمليات على النظام

قائمة الملفات التنفيذية

بعد إدخال التعليمات البرمجية، تقوم البرامج الضارة بما يلي:

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

تقوم البرامج الضارة بإنشاء عملية وحقن كود shellcode فيها

وظيفة الرقم الفرعي 180037A80 مسؤول عن إجراء حقن كود القشرة في العملية المولدة في الحالة المعلقة.

الوظيفة الفرعية 180037A80

بعد إدخال رمز shellcode في العملية، تستأنف البرامج الضارة العملية. ثم يقوم بتنفيذ الوظيفة تحت 18003A9 قبل الميلاد لحقن DLL الضار أخيرًا عن طريق إنشاء أقسام وعروض ذاكرة متعددة.

تنفيذ وظيفة sub_18003a9bc لحقن ملف DLL الضار

يتم تنفيذ كود DLL عبر مؤشر ترابط الكمبيوتر في قائمة انتظار NT API، والتي يتم حلها ديناميكيًا أثناء التنفيذ.

تم تنفيذ كود DLL عبر واجهة برمجة تطبيقات NTqueueAPCthread

شبكة C2

البنية التحتية للقيادة والتحكم، والمعروفة أيضًا باسم C2 أو C&C، هي مجموعة من الأدوات والتقنيات المستخدمة للحفاظ على الاتصال بنظام الأجهزة المخترق بعد الحصول على الوصول الأولي. يمكن استرداد عنوان IP الخاص بـ C2 من رمز الحمولة كما هو موضح أدناه.

استرداد عنوان IP الخاص بـ C2

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

البيانات المنقولة في اتصال C2

ومن المثير للاهتمام أن سلسلة وكيل المستخدم التي تستخدمها البرامج الضارة للاتصال هي «bumblebee».

حركة المرور الصادرة

تم نقل البيانات من النظام المخترق

معايير العميل

  • معرف العميل
  • اسم_المجموعة
  • إصدار النظام
  • اسم المستخدم
  • إصدار العميل

حركة المرور الواردة

الأوامر التي تم تلقيها من قبل النظام المخترق

معايير العميل

  • حالة الاستجابة
  • المهام

الأوامر المدعومة

سيحتوي حقل المهمة في استجابة C2 على أحد الأوامر التالية:

أمروصفيقوم DEX بتنزيل أداة تحميل ملفات DLL القابلة للتنفيذ في PersistencediJ.dll

قصة ملفات DLL والخطافات المجمعة

تأتي الحمولة الأساسية مع اثنين من ملفات DLL المضمنة في الملف الثنائي. الغرض والوظيفة لكل من مكتبات DLL متماثلان، ولكن أحدهما 32 بت والآخر 64 بت. يتم استخدامها لإجراء المزيد من عمليات الربط والتحكم في التدفق.

تواقيع DLL (SHA256)

  • 32 بت: B9534DDEA 8B672 CF2E4F4ABD373 F5730C7A28FE2DD5D56E009F6E5819E9E9E9E9E9615
  • 64 بت: 1333 CC4210483 E7597B 26042B8FF7972 FD17C23488A06 AD393325 FE2E098671B

في هذا القسم، سننظر في الأعمال الداخلية لـ DLL المضمن 32 بت. تبحث الوحدة عن مجموعة محددة من الوظائف في ntdll.dll، kernel32.dll، kernelbase.dll، و advapi32.dll لإزالة أي خطافات موجودة في الكود لاحقًا. سيؤدي هذا أيضًا إلى إزالة أي خطافات تم تنفيذها بواسطة EDR/AV (اكتشاف نقطة النهاية والاستجابة/مكافحة الفيروسات) المستخدمة للمراقبة.

تم فحص الوظائف في ntdll.dll بحثًا عن الروابط الموجودة

تم فحص الوظائف في kernel32.dll بحثًا عن الروابط الموجودة

في kernelbase32.dll، يتم فحص الوظائف التالية بحثًا عن أي روابط موجودة بالفعل:

تم فحص الوظائف في kernelbase32.dll بحثًا عن الروابط الموجودة

تم فحص الوظائف في advapi32.dll بحثًا عن الروابط الموجودة

آلية فك القفل

تتضمن عملية إلغاء التثبيت الخطوات التالية:

  • تقوم الوحدة باسترداد المقابض لاستهداف ملفات DLL عبر احصل على واجهة برمجة تطبيقات جديدة لمعالجة الوحدة. المقبض الذي تم إرجاعه بواسطة API هو لـ DLL الذي تم تحميله في الذاكرة من خلال عملية البرامج الضارة، أي العملية المسؤولة عن تنفيذ أداة تحميل bumble، وهي rundll32.exe.
  • ثم تقوم البرامج الضارة بإنشاء المسار المطلق لملفات DLL المستهدفة عبر دليل نظام LET A API، للوصول إلى دليل system32، حيث توجد جميع ملفات DLL للنظام.
  • مؤشر إلى الذاكرة الافتراضية للحماية من NT يتم حسابه بعد إنشاء مسار DLL.
  • وظيفة الفرع الفرعي 10005b90 يتم استدعاؤه للقيام بعملية فك الربط. المعلمات التي تم تمريرها إلى الوظيفة هي:
    • العنصر الأول: المسار المطلق لملف DLL المستهدف
    • العنصر الثاني: التعامل مع ملف DLL المستهدف الذي تم تحميله بالفعل
    • العنصر الثالث: الإزاحة إلى المصفوفة التي تحتوي على الوظائف المستهدفة التي تم تصديرها بواسطة DLL الهدف
    • الفن الرابع: فارغ
    • المحور الخامس: مؤشر إلى NT لحماية الذاكرة الافتراضية

خطوات آلية فك القفل

تقوم الوظيفة sub_10005b90 بتنفيذ العمليات التالية:

  • يقوم بتعيين نسخة جديدة من ملف DLL المستهدف من القرص الصلب لمعالجة مساحة عملية البرامج الضارة عبر الوظائف إنشاء ملف A، إنشاء خرائط الملفات A، و عرض الخريطة للملف.
  • وظيفة المكالمات الجزء الفرعي 10005D40 لإجراء عملية فك الربط. يتم تمرير البيانات التالية إلى الوظيفة:
    • العنصر الأول: العنوان المعين لنسخة جديدة من DLL
    • الفن الثاني: مثل Sub_10005b90
    • الفن الثالث: مثل Sub_10005b90
    • الفن الرابع: مثل Sub_10005b90
    • الفن الخامس: مثل Sub_10005b90
  • بعد إلغاء الربط، يتم تحرير العرض المعين عبر عرض ملف UNMAP API.

العمليات التي يتم تنفيذها بواسطة الوظيفة sub_10005b90

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

تمر البرامج الضارة عبر عمليات تصدير ملف DLL المحمل وتقوم بمطابقة السلسلة مع مجموعة أسماء الوظائف المخزنة كمصفوفة في حلقة. يعتبر sub_10005930 مسؤولاً عن مطابقة السلسلة.

تطابق السلسلة مع مجموعة أسماء الوظائف

عندما يتطابق اسم الوظيفة في مصفوفة البرامج الضارة مع الوظيفة المصدرة من الوحدة التي تم تحميلها، يتم تعيين العلامة إلى [v8] وتنقطع عن الحلقة. يحدث هذا في الخطوات التالية:

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

تتطابق البرامج الضارة مع الوظيفة المصدرة

إذا لم تكن الشفرة التي تم تحميلها هي نفسها الشفرة المعينة، فسيتم تنفيذ العمليات التالية بواسطة البرامج الضارة لإلغاء الربط:

  • استعلام افتراضي EX يتم استدعاء API لاسترداد العنوان الأساسي للصفحة التي تحتوي على الوظيفة الهدف.
  • ثم الذاكرة الافتراضية للحماية من NT يتم استخدام API لتغيير أذونات الصفحة التي تحتوي على رمز الوظيفة (READ_WRITE_EXECUTE).
  • استعلام افتراضي يتم استخدامه مرة أخرى للتحقق من الإذن؛ سواء كانت الصفحة قابلة للكتابة أم لا.
  • وظيفة sub_10005890 يتم استدعاؤه لاستعادة الوحدة المحملة بمحتويات الوحدة المعينة. الآن الوظائف في الوحدات المعينة والمحملة في نفس الحالة.

لا تتطابق البرامج الضارة مع الوظيفة المصدرة

بعد مسح جميع الخطافات في الوظائف المحددة، تقوم البرامج الضارة بتثبيت الخطافات.

الوظائف رفع الاستثناء السريع من kernel32.dll و api-ms-win-core-errorhandling-l1-1-2.dll معلقون. ثم وظيفة الالتفاف الفرع الفرعي 100057f0 يقوم باختطاف تدفق التحكم عندما يقوم النظام باستدعاء الوظائف المذكورة أعلاه بعد إجراء التثبيت بواسطة البرامج الضارة.

تثبيت السنانير

وظيفة الفرع الفرعي 100057f0 ما عليك سوى إرجاع المكالمة.

الوظيفة الفرعية _100057f0

يحتوي ملف DLL المضمن على استراتيجية ربط مشابهة لتلك الخاصة بمحمل Bumblebee. يتم ربط الوظائف المختلفة التي يستخدمها النظام، أثناء تحميل وحدة DLL، و wups.dll يتم تحميله لتشغيل السلسلة.

ربط الوظائف المستخدمة أثناء تحميل DLL وتحميل wups.dll

واجهة برمجة التطبيقات المستهدفةوظيفة الالتفافخريطة ZWعرض للقسم الفرعي _10004C50ZW افتح القسم الفرعي الفرعي _10004ff0ZW إنشاء المقطع الفرعي الفرعي _10004BC0ZW افتح الملف الفرعي Sub_10004F20

ترقيات الكود في البرية

بعد تحليل العديد من العينات في البرية، لاحظنا تعديلات التعليمات البرمجية في اللودر.

تم إجراء تعديلات بارزة على التعليمات البرمجية في أداة تحميل Bumblebee منذ اكتشافها

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

تحتوي عينات اللودر الأحدث في البرية على حمولات متنوعة، مثل منارات CobaltStrike وقذائف Meterpreter، على عكس حمولة النحلة الطنانة المخصصة التي شوهدت في الجيل الأول.

مؤشرات التسوية (IOCs)

نظام ثنائيf98898 df74fb2b2fd3a2907086397 b36ae496 ef3f4454 bf6b6b7125 f103b8بروتوكول IPv445.147.229. 23:443

لم يتم العثور على أية عناصر.

مدونات ذات صلة