سنخبرك اليوم عن طريقة جديدة لإرسال البرامج الضارة إلى مجموعة Buhtrap.

وحدة محمل الإقلاع
في 19 كانون الأول (ديسمبر) ، علمنا بالبريد الضار الذي يحتوي على ملف قابل للتنفيذ (
md5: faf833a1456e1bb85117d95c23892368 ). استغرق الملف أسماء مختلفة: "المصالحة لـ December.exe" ، "Docs wednesday.exe" ، "المستندات 19.12.exe" ، "إغلاق المستندات wednesday.exe".
من المثير للاهتمام - الملف مكتوب في .Net ، وهو ليس نموذجي لهذه المجموعة الإجرامية. لفك تشفير .Net ، يمكنك أن تأخذ أي برنامج:
Reflector ،
dotPeek ،
dnSpy ،
ILSpy . سنتحدث في المقال عن ميزات تطبيق هذا الملف وكيف قمنا بتحليله.
التفتيش الأولي بووتلوأدر
للتحليل ، استخدمنا
dnSpy ،
وستكون كل لقطات الشاشة الأخرى منه.
من المعتاد ، افتح الملف القابل للتنفيذ في
IDA Pro وانظر قسم الاستيراد. أمثلة:

يقترح وجود بعض الوظائف وجود حمولة محملة (
LoadCursorW ،
LoadIconW - حصلت على الكائن من الموارد ،
VirtualProtect - تغيير سمات الصفحة ، ثم يمكنك تنفيذ التعليمات البرمجية) ومكافحة بسيطة للتصحيح (
IsDebuggerPresent ). لكن كل شيء تبين أنه أبسط. لم يصل التنفيذ حتى إلى IsDebuggerPresent ، ولم يكن LoadCursorW و LoadIconW عديم الجدوى لأنهما حاولا الوصول إلى موارد غير موجودة (LoadCursorW من "
fiza " و LoadIconW من "
saxikulatebutohutejijobodugore "):


لكن العودة إلى
dnSpy decompiler. في الملف القابل للتنفيذ ، نرى كمية كبيرة من التعليمات البرمجية غير المُدارة:

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


بعد ذلك ، في
IDA Pro ، سنبحث بالتتابع السداسي:

في الخرج ، نحصل على الوظيفة غير المدارة _main () ، والتي يمكنك من خلالها العمل بسهولة بمساعدة وحدة فك تشفير idov:


الحصول على الحمولة
العودة إلى dnSpy. يتم توجيه الانتباه إلى بيانات
الحمولة المتغيرة.


نجد هذا التسلسل في IDA Pro ، ونحصل على روابط إليه ونكتشف أن المكالمة تحدث فقط في وظيفة
_main () :

يشبه رمز decompiled باستخدام هذا المخزن المؤقت:

الدالات التالية مسؤولة عن تحويل هذا المخزن المؤقت:

هنا ، يتم
تهيئة المتغير
holdrand إلى
0xEA48CB16 ويتم استدعاء الدالة
foo () في حلقة لكل بايت من
payloadData (
معلمة cbyte c ). تجدر الإشارة إلى أن الدالة t () مأخوذة من رمز غير آمن: إذا نظرت إلى الكود ، فيمكنك التأكد من أنها ترجع دائمًا
0x343FD .
نحن نسلح أنفسنا بـ IDA Pro ، وبالنظر إلى المخزن المؤقت الناتج عن ذلك ، نلاحظ أنه يحتوي على بعض الأكواد في البداية:

عند الإزاحة
0x15A0 من بداية المخزن المؤقت ، يوجد ملف قابل للتنفيذ:

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

ثم ، باستخدام الوظائف التي تم الحصول عليها ، يتم إنشاء عملية نفس الملف القابل للتنفيذ (
md5: faf833a1456e1bb85117d95c23892368 ) ، ويتم تعيين الملف القابل للتنفيذ الذي تم فك حزمه إلى العناوين الافتراضية للعملية الجديدة. بعد تغيير عنوان التعليمات القابلة للتنفيذ (مجموعة من
GetThreadContext و
SetThreadContext ) ، يبدأ مؤشر ترابط العملية الجديدة ، ويتم قتل العملية الأصل نفسها.
حسنًا ، ننتقل الآن إلى تحليل الملف القابل للتنفيذ الناتج (الحمولة النافعة).
تفريغ الحمولة الصافية
يتم كتابة الحمولة (
md5 dump: d8f40c7060c44fab57df87ab709f058f ) أيضًا على .Net Framework.
للحماية من التحليل الثابت والديناميكي ، استخدم مطورو
البرامج الضارة أحدث واقي
ConfuserEx الشهير:
ConfuserEx هو حامي مفتوح المصدر راسخ.
التفريغ الأساسي
نقطة دخول الملفات المحمية بواسطة هذا الحامي هي كما يلي:

بعد فك التشفير ، يتم تحميل صفيف البايت في الذاكرة في شكل وحدة نمطية تسمى
koi . ثم يتم تحديد الطريقة الرئيسية لهذه الوحدة وتسمى. على النظام الأساسي .Net ، يمكن الحصول على طريقة أو مُنشئ في وحدة نمطية من الرمز المميز للبيانات التعريفية عن طريق استدعاء الوظيفة
Module.ResolveMethod () . لنقل التحكم إلى الطريقة التي تم الحصول عليها ، يتم استخدام
MethodBase.Invoke () الدالة.

التعليمات البرمجية القابلة للتنفيذ في وحدة
koi هي كما يلي:

لإزالة المداس ، استخدمنا الأدوات التالية:
فك تشفير
ConfuserEx-Unpacker لفك تشفير الأسطر
والكود داخل الطرق ، وجعل
de4dot أسماء الطرق قابلة للقراءة.
والنتيجة هي رمز مناسب لتحليل ثابت:

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

إذا قمت بالتبديل إلى رمز IL ، فستلاحظ المكالمات عند وجود مؤشرات فارغة:

لإصلاح أخطاء إلغاء الترجمة ، استبدل التعليمات غير الصحيحة بتعليمات nop. (تسمح
لك الأداة المساعدة
dnSpy بتعديل كل من الشفرة الشفرة ورمز IL.)
بعد الاستبدال ، تبدو الشفرة التي تم فك تشفيرها صحيحة:

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

- في الملف الذي تم فك حزمه ، ابحث عن الطريقة ذات التسمية [STAThread] :

في هذه الحالة ، الرمز المميز للبيانات الوصفية لطريقة الإدخال هو
0x6000106 . نقوم بتغييره باستخدام الأداة المساعدة
CFF Explorer :

بعد حفظ التغييرات ، يبدأ الملف الذي تم فك حزمه ويصحح بشكل صحيح.
تحليل بووتلوأدر
بعد بدء العمل مباشرة ، يتحقق أداة تحميل التشغيل من تشغيله في بيئة افتراضية.
يتم تحديد التشغيل ضمن برنامج
VMWare أو
QEMU من خلال البحث عن سلاسل "vmware" و "qemu" في قيمة التسجيل التالية:
- [HKLM \ النظام \ CurrentControlSet \ الخدمات \ القرص \ التعداد \ 0].
في حالة اكتشاف جهاز افتراضي ، يعرض أداة تحميل التشغيل رسالة النافذة المقابلة:

ومن المثير للاهتمام ، لا يؤثر إخراج هذه الرسالة على تشغيل العملية.
بعد ذلك ، تحاول البرامج الضارة تحميل المكتبات من القائمة التالية في الذاكرة:
SbieDll.dll ، dbghelp.dll ، api_log.dll ، dir_watch.dll ، pstorec.dll ، vmcheck.dll ، wpespy.dll ، snxhk.dll ، guard32.dll .
بالإضافة إلى ذلك ، باستخدام المكالمات إلى الدالتين
Debugger.IsLogging () و
Debugger.get_IsAttached () ، يتحقق المُحمل من تشغيله ضمن مصحح الأخطاء.
إذا تم تحميل إحدى المكتبات على الأقل بنجاح أو اكتشف المحمل أنه يعمل تحت مصحح الأخطاء ، فسيتم
حذفه ذاتيًا باستخدام الأمر "
cmd / C ping 8.8.8.8 -n 1 -w 3000> Nul & Del ". ومن المثير للاهتمام ، أن محمل الإقلاع يمكنه الحذف الذاتي حتى على نظام حقيقي عن طريق تحميل مكتبة
dbghelp.dl .
بعد ذلك ، يتحقق البرنامج الضار من تشغيله من الدليل الذي يحتوي على السلسلة الفرعية "Mozilla".
إذا لم تبدأ العملية من الدليل الذي يحتوي على السلسلة الفرعية "Mozilla"
- تنشئ البرامج الضارة قائمة بالأدلة الموجودة على سطح المكتب وتحتوي على الأسس الفرعية التالية (يتم تشفير جميع الخطوط الموجودة داخل أداة تحميل التشغيل باستخدام خوارزمية AES-256-ECB ، يتم إنشاء مفاتيح التشفير باستخدام كلمات مرور مشفرة بشكل ثابت):

- ينشئ قائمة بعناوين URL من محفوظات المتصفح التي تحتوي على سلاسل فرعية التالية:

- ينشئ قائمة بالملفات الموجودة في الدلائل "٪ UserProfile٪ \\ Desktop" و "٪ AppData٪" و "C: \\ Program Files (x86)" و "C: \\ Program Files (x86) (x86)" و لديهم الأسماء التالية:

- يحسب عدد القوائم غير الفارغة من المؤشرات المتعلقة بالعمليات المصرفية (في الإصدار الحالي من أداة تحميل التشغيل ، لا تؤثر هذه الوظيفة على أي شيء).
- ينشئ مهمة لتشغيل هذا الملف في كل مرة يسجل فيها المستخدم استخدام الأمر "schtasks / create / f / sc ONLOGON / RL HIGHEST / tn LimeRAT-Admin / tr".
- إذا تعذر إنشاء المهمة ، فسيتم إنشاء الاختصار "٪ AppData٪ \\ Microsoft \\ Windows \\ قائمة ابدأ \\ البرامج \\ بدء التشغيل \\ MozillaUpdate.lnk" ، مع الإشارة إلى "٪ Appdata٪ \\ Mozilla \\ xaudiodg.exe" الذي يضمن بدء تشغيل ملف xaudiodg.exe في كل مرة يتم فيها إعادة تشغيل النظام.
- يقوم بنسخ نفسه على طول المسار "٪ AppData٪ \\ Mozilla \\ xaudiodg.exe".
- يحذف الملف <self_path>: Zone.Identifier ، ويدير xaudiodg.exe ويحذف نفسه.
إذا بدأت العملية من الدليل الذي يحتوي على السلسلة الفرعية "Mozilla"
- تبحث البرامج الضارة أيضًا عن المؤشرات المذكورة أعلاه للعمليات المصرفية داخل النظام المصاب.
- يجمع معلومات النظام الأخرى لإرسالها إلى خادم الإدارة.
- في موضوع منفصل يرسل المعلومات إلى C&C وينتظر استجابة من الخادم.
- في موضوع آخر ، يرسل سلسلة مشفرة "PING؟" إلى الخادم في حلقة لا نهاية لها.
إدارة خادم التفاعل
عنوان IP الخاص بالخادم في نموذج البرامج الضارة الذي تم اختباره هو 213.252.244 [.] 200. تتم تهيئة الاتصال بواسطة منفذ تم اختياره عشوائيًا من القائمة:
• 8989 ،
• 5656 ،
• 2323.
مباشرة بعد تهيئة الاتصال ، يرسل محمل الإقلاع معلومات حول النظام المصاب إلى C&C:
• معرف المستخدم ،
• اسم المستخدم
• إصدار نظام التشغيل ،
• نسخته الخاصة (لودر v0.2.1) ،
• قوائم مؤشرات العمليات المصرفية الموجودة على الجهاز المصاب.
مثال على خط أرسله اللودر إلى خادم الإدارة:
«INFO<NYANxCAT>9D3A4B22D21C<NYANxCAT>IEUser<NYANxCAT> Windows 7 Enterprise SP 1 <NYANxCAT>loader v0.2.1<NYANxCAT><NYANxCAT><NYANxCAT>1c, »
سيتم إرسال هذا السطر إذا كان هناك مجلد "1c" على سطح مكتب المستخدم المصاب ، ولا توجد مؤشرات أخرى.
وظيفة معالجة الاستجابة من الخادم هي كما يلي:

استجابة فك تشفير من الخادم كما يلي:
كما يمكن رؤيته من لقطة الشاشة ، يمكن أن تأخذ COMMAND إحدى القيم التالية:
- إغلاق - إنهاء الاتصال وإغلاق العملية الحالية ؛
- DW - فك تشفير محتوى base64 من DATA2 من base64 ، يكتبه إلى ملف <temp_file_name> بالملحق من DATA1 ، ويقوم بتشغيل الملف للتنفيذ ؛
- UPDATE - فك تشفير محتوى base64 من DATA1 ، يكتبه إلى ملف يحمل الاسم <temp_file_name> وامتداد exe. ، يقوم بتشغيل ملف قابل للتنفيذ جديد وحذف ذاتي ؛
- RD- - يرسل السلسلة "RD-" استجابة ؛
- RD + - يرسل لقطة شاشة إلى خادم الإدارة ؛
- DEL - حذف ذاتي.
أثناء التحقيق في أداة تحميل التشغيل ، تمكنا من الحصول على الأمر DW من خادم المهاجم. نتيجة لذلك ، تم تثبيت برنامج Punto Switcher مع DLL winmm.dll الخبيثة (md5: 9d25553bb09e2785262b2f7ba7923605) ، وهي وحدة برامج تجسس Buhtrap.
دفق TCP كما يلي:


لتشفير البيانات المنقولة بين العميل وخادم الإدارة ، يتم استخدام خوارزمية
AES-128-ECB . تتم تهيئة مفتاح التشفير بكلمة مرور مشفرة.
بعد فك التشفير ، تكون حركة المرور كما يلي:


من base64 ، يتم فك تشفير مثبت NSIS بالمحتويات التالية:

ومن المثير للاهتمام ، أجاب الخادم ، على الرغم من أن قائمة المؤشرات المصرفية كانت فارغة.
DLL الخبيثة
يتم تنفيذ مكتبة
winmm.dll باستخدام تقنية dll hijacking. ترسل الوحدة النمطية الضارة معلومات حول النظام المصاب وقائمة من قارئات البطاقات الذكية النشطة إلى C&C. بالإضافة إلى ذلك ، يحتوي على مكون keylogger وهو قادر على استقبال وحدات ضارة أخرى من خادم الإدارة أو تنفيذها من القرص أو في ذاكرة العملية الحالية. توجد خوادم C & C للعينة قيد الدراسة في العناوين التالية:
- hxxp: // my1cprovider [.] xyz: 6060 / klog [.] php
- hxxp: // tinderminderorli1999 [.] xyz: 7764 / klog [.] php
الخاتمة
يمكن تمثيل عملية العدوى على النحو التالي:

على الرغم من الحماية الجيدة ضد التحليل ، فمن الواضح أنه في الوقت الحالي لا يعمل محمل الإقلاع بشكل صحيح وعلى الأرجح في عملية التطوير:
- يمكن الحذف الذاتي حتى على نظام حقيقي ؛
- يتحقق من اتصال النظام المصاب بالعمليات المصرفية قبل نسخ نفسه إلى "٪ AppData٪ \\ Mozilla \\ xaudiodg.exe" وقبل التفاعل مع C&C ، لكنه لا يستخدم هذه المعلومات بأي طريقة.
أخيرًا ، تذكر رسالة النافذة الغريبة. ومن المثير للاهتمام ، هل هذا خطأ في المطورين - أم أنه تم على وجه التحديد لتشجيع المستخدمين على ترك البيئة الافتراضية والبدء في جهاز حقيقي؟ ويلكوم في التعليقات.
IOCs
MD5:faf833a1456e1bb85117d95c23892368
9d25553bb09e2785262b2f7ba7923605عناوين URL:hxxp: // my1cprovider [.] xyz: 6060 / klog [.] php
hxxp: // tinderminderorli1999 [.] xyz: 7764 / klog [.] php
عناوين IP:
213.252.244 [.] 200