BlueSky Ransomware هو برنامج ضار حديث يستخدم تقنيات متقدمة للتهرب من الدفاعات الأمنية. يستهدف في الغالب مضيفي Windows ويستخدم نموذج Windows متعدد مؤشرات الترابط للتشفير السريع. ظهرت لأول مرة في أواخر يونيو 2022 ولوحظ انتشارها عبر رسائل البريد الإلكتروني المخادعة ومواقع التصيد الاحتيالي والتنزيلات المحصنة.
يغطي هذا التحليل العميق لـ BlueSky Ransomware الجوانب الفنية التالية:
إجراءات تصعيد الامتيازات
إصرار
آلية التشفير
تقنيات التهرب
المرحلة الأولية
يتم تحميل الوحدات المطلوبة لبرنامج الفدية ديناميكيًا ويتم تخزين عناوين الوظائف المثيرة للاهتمام في مصفوفة لاستخدامها لاحقًا.
تم حل عناوين قائمة واجهات برمجة التطبيقات التالية:
واجهات برمجة التطبيقات المخزنةNtdll.rtl قم بتخصيص نواة الملفات 32. إنشاء ملف Kernel 32.تعيين مؤشر الملف Kernel 32.lstcmpwadvapi 32.cryptgen عشوائي Ntdll. البحث عن نواة الملف 32. احصل على حجم الملف exkernel 32.تعيين سمات الملف kernel 32. تعيين سمات الملف kernel 32. افتح العمليات HLWAPI.path دمج النواة الجديدة 32. ابحث عن الملف الأول exwkernel 32. اقرأ نواة الملفات 32. الحصول على حالة الإكمال في قائمة الانتظار Kernel 32. نقل الملف باستخدام نواة التقدم 32. إنهاء العمليات HLWAPI. المسار إزالة الامتداد wkernel 32. ابحث عن الملف التالي Wkernel 32. اكتب نواة الملف 32. نواة حالة الإكمال في قائمة الانتظار الأخيرة Kernel 32.lstrcatwkernel 32. انتظر كائنًا واحدًا
بعد تحميل المكتبات المطلوبة، تستمر برامج الفدية في تنفيذ المهام التالية:
يتحقق من أن عملية التشغيل هي 32 بت عبر عملية كيرنيل 32. آي إس WOW64
يقوم بفك تشفير السلاسل
اضبط امتياز العملية إلى SE_DEBUG بواسطة امتياز Ntdll.rtlad العادل
يسترد ما يلي:
دليل الآلة من البرامج\\ ميكروسوفت\\ التشفير
معرف المنتج الرقمي و تاريخ التثبيت من البرامج\\ ميكروسوفت\\ ويندوز NT\\ الإصدار الحالي
يخفي الخيط الرئيسي من مصحح الأخطاء عن طريق الاتصال موضوع معلومات Ntdll.zwset عن طريق تمرير ThreadHide من مصحح الأخطاء (0x11) كفئة معلومات الموضوع
تقوم برامج الفدية بتحديث الحالة على أنها «مكتملة» بعد المرحلة الأولية ويتم قفل بيانات المستخدم.
قفل بيانات المستخدم بعد المرحلة الأولية
جيل موتكس
يقوم برنامج الفدية بإنشاء موتكس عالمي عن طريق الاتصال Kernel 32. قم بإنشاء Mutexa API.
ابتكار موتكس
فك تشفير السلسلة
يقوم برنامج الفدية بفك تشفير جميع السلاسل في وقت التشغيل. فيما يلي العديد من الإضافات التي تم تجنبها أثناء القفل، وإضافات بيانات المستخدم المقفلة، وأسماء الأدلة لتعداد الملفات.
الإضافات المدرجة في القائمة السوداء
يترك برنامج الفدية الملفات ذات الامتدادات المدرجة في القائمة السوداء التالية من القفل.
تستخدم برامج الفدية أسماء الأدلة هذه لغرض تعداد الملفات.
أسماء الدليل«$recycle.bin» «boot» «windows» «perflogs» «بيانات التطبيق» «ملفات البرنامج» «windows.old» «جميع المستخدمين» المستخدمين» «بيانات البرنامج» «$windows. ~ws» «معلومات وحدة تخزين النظام» «$windows. ~bt» «ملفات البرنامج (x86)»
التشفير المسبق
خوارزمية التشفير
سياق التشفير هو نوع من البيانات المصادق الإضافية التي تتكون من أزواج قيمة الاسم العشوائية غير السرية. أثناء مرحلة التهيئة، يكتسب برنامج الفدية سياق التشفير من advapi32.crypt: اكتساب السياق API. موفر التشفير الذي تستخدمه البرامج الضارة هو «موفر التشفير المحسن من Microsoft v1.0" ونظام التشفير المحدد هو RSA.
الحصول على سياق التشفير
بيانات الاسترداد
قبل تنفيذ وظيفة التشفير، يقوم برنامج الفدية بكتابة البيانات اللازمة لاستعادة الملفات المقفلة في السجل. تتم كتابة البيانات التالية:
فقاعة الاسترداد
المفتاح العام X25519
كتابة البيانات اللازمة لاستعادة الملفات المقفلة
عرض محدث للسجل
مذكرة الفدية
في حالة فشل كتابة بيانات فك التشفير، لن يقوم برنامج الفدية بتنفيذ الروتين المسؤول عن تشفير بيانات المستخدم. بعد عملية تسجيل ناجحة، يقوم برنامج الفدية بإنشاء مذكرة فدية كمهمة أولية في الوظيفة التي تقوم بإجراء القفل.
إنشاء مذكرة الفدية
يتم تنفيذ الخطوات التالية:
يتم إنشاء معرف استرداد عشوائي وفريد للضحية وتخزينه في مخزن الكومة المؤقت.
يقوم برنامج الفدية Bluesky بإنشاء مذكرة فدية بتنسيقات «.txt» و «.html».
يتم تخصيص كتلتين من 1000 (4096) بايت من ذاكرة الكومة للاحتفاظ بملاحظات الفدية النهائية.
يتم تخصيص مخزنين مؤقتين (txt_ransom_note_buffer و html_ransom_note_buffer) للاحتفاظ بالملاحظات المشفرة المستردة من الملف الثنائي.
يتم استخدام محدد سلسلة تنسيق المكان كعنصر نائب لمعرف الاسترداد الذي تم إنشاؤه في الخطوة الأولى.
الوظيفة»فرعية 2866e0» مسؤول عن تنسيق الملاحظة عن طريق استبدال «%s» بقيمة معرف الاسترداد التي يبلغ طولها 242 حرفًا.
يتم تخزين النتيجة بعد ذلك في الذاكرة، ليتم استخدامها لاحقًا بواسطة الوظيفة المسؤولة عن كتابة الملاحظة إلى نظام الملفات.
ملاحظة مشفرة في المخزن المؤقت
إنهاء العملية
بعد إنشاء مذكرة الفدية، يقوم برنامج الفدية بتعداد العمليات التي تعمل على النظام المخترق. ال معلومات نظام الاستعلام Ntdll.zw يتم استدعاء API عن طريق تمرير فئة SystemInformation (0x5) للحصول على قائمة العمليات من النظام. يتم استخدام القائمة بواسطة برنامج الفدية لقتل العمليات بشكل انتقائي.
تعداد العمليات التي تعمل على النظام المخترق
مهمة إنهاء العملية
يتم تنفيذ الخطوات التالية لإنهاء العمليات الجارية:
يبدأ برنامج الفدية بتحليل بنية العملية لاسترداد اسم الصورة واستخداماتها shlwapi.path إزالة الامتداد W API لإزالة الامتداد (.exe) من الاسم.
بمجرد استرداد اسم العملية بدون ملحق، تستدعي برامج الفدية الفرع الفرعي 2869b0 لحساب حجم اسم العملية.
بعد ذلك يتم إجراء مكالمة إلى الرقم الفرعي 2868 درجة مئوية لتحويل الأحرف إلى أحرف صغيرة للتوحيد.
أخيرًا، يتم استخدام ترميز البايت المخصص لتحويل السلسلة إلى قيمة سداسية عشرية.
يتم فحص القيمة السداسية التي تم إنشاؤها مقابل مجموعة من القيم المشفرة للعمليات التي سيتم إنهاؤها.
أسماء العمليات التي يريد ممثل التهديد إنهاءها
في المرحلة الأولية، يتم التعامل مع «Shell_Traywnd»، والذي يتم الحصول عليه باستخدام المستخدم 32. ابحث عن النافذة A، يتم تمريره إلى احصل على معرف عملية مؤشر ترابط Windows API من أجل الحصول على معرف العملية الخاص بـ explorer.exe. (explorer.exe مسؤولة عن إنشاء «Shell_Traywnd»). يتم تخزين معرف العملية في الذاكرة.
في حالة وجود تطابق، يتم تمرير معرف العملية المستهدفة، الذي تم الحصول عليه في المرحلة الأولية، إلى الرقم الفرعي 2910f0.
تتحقق البرامج الضارة مما إذا كان معرف العملية خاصًا بها أو explorer.exe. بعد الفحص، يتم استرداد مقبض المعالجة عبر عملية كيرنيل 32 المفتوحة API.
يتم إنهاء العمليات «غير الحرجة» فقط لمنع التحقق من الأخطاء (شاشة الموت الزرقاء). إذا لم يكن مقبض العملية الذي تم تمريره حرجًا، فسيتم إنهاؤه عبر Kernel 32. إنهاء العملية.
الدالة sub_2910f0
مكالمات برامج الفدية عملية معلومات الاستعلام عن Ntdll.nt من خلال اجتياز ProcessBreakOnTerination (0x1d) كفئة المعلومات لتحديد العمليات الحرجة.
اتصل بفئة عملية معلومات NTQuery
سلة المحذوفات الفارغة
بعد إنهاء العملية، يقوم برنامج الفدية بإفراغ سلة المحذوفات عن طريق الاتصال آلة إعادة التدوير الفارغة من Shell32.she.
تفريغ سلة المحذوفات
التشفير
نموذج الترابط: منافذ إكمال Windows IO باختصار
يقوم برنامج Bluesky ransomware بإجراء التشفير من خلال استخدام منافذ إكمال IO. توفر منافذ إكمال الإدخال/الإخراج نموذجًا فعالاً للترابط لمعالجة العديد من طلبات الإدخال والإخراج غير المتزامن (I/O) على نظام متعدد المعالجات.
نموذج الترابط باستخدام منافذ الإدخال/الإخراج
يقوم الخيط الرئيسي بإنشاء منفذ إكمال IO عبر إنشاء منفذ إكمال iOS. يمكن ربط المنفذ الذي تم إنشاؤه بالعديد من مقابض الملفات. عند اكتمال عملية الإدخال والإخراج غير المتزامن على أحد مقابض الملفات، يتم وضع حزمة إكمال الإدخال/الإخراج في قائمة الانتظار بترتيب FIFO إلى المنفذ المقترن.
يقوم مؤشر ترابط العامل بإجراء مكالمة إلى حالة إكمال النشر في قائمة الانتظار لتجميع البيانات المرتبطة. في حالة برامج الفدية، ستكون البيانات هي المسار المطلق لملفات المستخدم التي تنتظر في قائمة الانتظار ليتم تشفيرها.
ينفذ خيط عامل آخر احصل على حالة الإكمال في قائمة الانتظار لإلغاء قائمة المحتويات من قائمة الانتظار الرئيسية. عادةً، في برامج الفدية، يكون هذا الموضوع مسؤولاً عن إجراء التشفير وإنشاء مذكرة الفدية.
يحتوي القسم التالي على وصف متعمق لكل وظيفة من الوظائف المذكورة أعلاه.
إنشاء منفذ إكمال iOS
تتضمن المكالمة إلى CreateIOCompletionPort الخطوات التالية:
يسترد الخيط الرئيسي عدد المعالجات من بنية PEB (كتلة بيئة العملية).
مكالمة إلى إنشاء منفذ إكمال iOS يتم إجراؤه عن طريق تمرير عدد المعالجات كقيمة معلمة NumberConcurrentThreads.
يتم إنشاء سلاسل عمل متعددة عن طريق الاتصال كيرنيل 32. إنشاء موضوع.
بالنسبة لكل مؤشر ترابط، يتم تعيين قناع التقارب (قناع بت يشير إلى المعالج الذي يجب تشغيل مؤشر الترابط عليه) عن طريق الاتصال قناع تقارب الخيط Kernel 32.
يقوم الخيط الرئيسي بإجراء تعداد محرك الأقراص الأساسي والمكالمات. حالة إكمال النشر في قائمة الانتظار.
استدعاء منفذ إكمال Creatio/
استرداد عدد المعالجات من PEB
وظيفة حالة إكمال قائمة الانتظار
يتم استخدام واجهات برمجة التطبيقات التالية لتعداد محركات الأقراص على النظام:
Kernel 32. احصل على سلسلة القيادة المنطقية SW
Kernel 32. احصل على نوع محرك الأقراص W
يتم إجراء تعداد إضافي للملفات عن طريق إنشاء مؤشر ترابط عامل لـ حالة إكمال النشر في قائمة الانتظار.
إنشاء مؤشر ترابط عامل لـ PostQueuedCompletionStatus
مكالمات الموضوع الرئيسي القائمة المفتوحة لـ mpr.wnet لتعداد موارد الشبكة وإنشاء مؤشر ترابط عامل كما هو مذكور أعلاه يقوم بإجراء استدعاء PostQueuedCompletionStatus.
استدعاء وظيفة MPR.wnetOpenEnumw
موضوع العامل: حالة إكمال البريد في قائمة الانتظار
مؤشر الترابط العامل الذي يقوم بتنفيذ PostQueuedCompletionStatus
يؤدي الموضوع الذي تم إنشاؤه حديثًا لـ PostQueuedCompletionStatus إلى ما يلي:
يتم تعداد الملفات عبر كيرنيل 32. ابحث عن الملف الأول EXW و Kernel 32. ابحث عن الملف التالي.
إذا كان الدليل، يتم استدعاء دالة thread بشكل متكرر لإجراء تعداد الملفات.
إذا كان ملف مستخدم، فسيتم وضع المسار المطلق في قائمة انتظار الإكمال عبر حالة إكمال النشر في قائمة الانتظار مكالمة.
مؤشر الترابط العامل هذا مسؤول عن جمع الملفات للتشفير.
موضوع العامل: احصل على حالة الإكمال في قائمة الانتظار
مؤشر الترابط العامل هذا مسؤول عن القيام بالقفل الفعلي لملفات المستخدم. يخفي برنامج الفدية هذا الموضوع من مصحح الأخطاء عبر موضوع معلومات Ntdll.zwset عن طريق تمرير ThreadHideFromDebugger كفئة معلومات الموضوع.
استدعاء وظيفة مؤشر ترابط معلومات Ntdll.zwset
يقوم مؤشر الترابط بفك تشفير امتداد الملف «.bluesky» ويستمر في تنفيذ التشفير. ال Kernel 32. احصل على حالة الإكمال في قائمة الانتظار يتم استدعاؤه في حلقة لا نهائية لاسترداد المسار المطلق لبيانات المستخدم.
ملحق ملف فك التشفير «.bluesky»
ال فرعي 288780 الوظيفة مسؤولة عن تشفير البيانات. يتحقق مؤشر الترابط مما إذا كان العنصر الذي تم إلغاء وضعه في قائمة الانتظار عبارة عن دليل أو ملف.
إذا كان ملفًا، فسينتقل إلى تشفير البيانات باستخدام واجهات برمجة التطبيقات التالية:
كيرنيل 32. إنشاء ملف
Kernel 32. تعيين مؤشر الملف
كيرنيل 32. اقرأ الملف
كيرنيل 32. اكتب ملف
إذا كان العنصر عبارة عن دليل، إذن المادة الفرعية 28 من EA0 يتم تنفيذه لتفريغ مذكرة الفدية. يتم فك تشفير سلاسل اسم الملف ديناميكيًا.
يتم فك تشفير سلاسل أسماء الملفات
تنفيذ البرنامج الفرعي 28eda0
تتم كتابة محتوى الملاحظة الذي تم إنشاؤه بواسطة برنامج الفدية على القرص عن طريق الاتصال بـ:
كيرنيل 32. إنشاء ملف
كيرنيل 32. اكتب ملف
ملاحظة الفدية التي تتم كتابتها على القرص
التشفير اللاحق
بمجرد تأمين بيانات المستخدم بنجاح، يقوم برنامج الفدية بإجراء العمليات التالية:
يقوم بإصدار mutex الذي تم إنشاؤه في المرحلة الأولية