OceanLotus: تحديث Malvari لنظام التشغيل macOS

في مارس 2019 ، حملت VirusTotal ، وهي خدمة مسح ضوئي شهيرة عبر الإنترنت ، عينة جديدة من البرمجيات الخبيثة لماك أو إس من مجموعة OceanLotus cybergroup. يحتوي الملف القابل للتنفيذ backdoor على نفس إمكانيات الإصدار السابق من malvari لنظام التشغيل macOS الذي درسناه ، لكن هيكله قد تغير وأصبح اكتشافه أكثر صعوبة. لسوء الحظ ، لم نتمكن من العثور على القطارة المرتبطة بهذه العينة ، لذلك لا نعرف بعد ناقل العدوى.

لقد قمنا مؤخرًا بنشر منشور حول OceanLotus وكيف يحاول المشغلون ضمان الثبات وتسريع تنفيذ التعليمات البرمجية وتقليل آثار التواجد على أنظمة Windows. من المعروف أيضًا أن مجموعة cybergroup هذه تحتوي على مكون لـ macOS. يصف هذا المنشور بالتفصيل التغييرات في أحدث إصدار من البرامج الضارة لنظام التشغيل MacOS مقارنة بالإصدار السابق ( الموصوف بواسطة Trend Micro ) ، وكذلك كيف يمكن للتحليل أتمتة فك تشفير السلسلة باستخدام IDA Hex-Rays API.


تحليل


تصف الأجزاء الثلاثة التالية تحليل العينة باستخدام E615632C9998E4D3E5ACD8851864ED09B02C77D2 SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2 . يُطلق على الملف flashlightd ، وتكتشف منتجات مكافحة الفيروسات ESET أنه OSX / OceanLotus.D.

مكافحة التصحيح وحماية رمل


مثل كل ثنائيات OceanLotus macOS ، يتم تعبئة العينة مع UPX ، لكن معظم أدوات التعرف على الرازم لا تتعرف عليها على هذا النحو. ربما لأنها تحتوي بشكل أساسي على توقيع ، اعتمادًا على وجود السلسلة "UPX" ، بالإضافة إلى ذلك ، تكون توقيعات Mach-O أقل شيوعًا ولا يتم تحديثها كثيرًا. هذه الميزة تجعل من الصعب اكتشاف ثابت. ومن المثير للاهتمام ، بعد التفريغ ، تكون نقطة الدخول في بداية قسم __cfstring في مقطع .TEXT . توجد سمات إشارة في هذا القسم ، كما هو موضح في الصورة أدناه.


الشكل 1. سمات القسم MACH-O __cfstring

كما هو مبين في الشكل 2 ، يسمح __cfstring موقع الكود في قسم __cfstring بخداع بعض أدوات التفكيك عن طريق عرض الكود على شكل سلاسل.


الشكل 2. يتم تعريف رمز الباب الخلفي من قبل المؤسسة الدولية للتنمية على أنها بيانات

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

  • محاولات ptrace PT_DENY_ATTACH أي مصحح أخطاء عن طريق استدعاء ptrace مع PT_DENY_ATTACH كمعلمة طلب
  • يتم التحقق مما إذا كانت بعض منافذ الاستثناء مفتوحة عن طريق استدعاء task_get_exception_ports
  • يتحقق مما إذا كان مصحح الأخطاء متصلًا ، كما هو موضح في الشكل أدناه ، عن طريق التحقق من وجود علامة P_TRACED في العملية الحالية


الشكل 3. فحص اتصال مصحح الأخطاء باستخدام وظيفة sysctl

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

ioreg -l | grep -e "Manufacturer" sysctl hw.model

بعد ذلك ، تقوم العينة بالتحقق من القيمة المرجعة مقابل قائمة ذات سلاسل ثابتة لأنظمة المحاكاة الافتراضية المعروفة: acle أو vmware أو virtualbox أو المتوازيات . أخيرًا ، يتحقق الأمر التالي مما إذا كان الجهاز واحدًا من "MBP" و "MBA" و "MB" و "MM" و "IM" و "MP" و "XS". هذه هي رموز طراز النظام ، على سبيل المثال ، تعني "MBP" MacBook Pro ، و "MBA" تعني MacBook Air ، إلخ.

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

الإضافات الرئيسية


على الرغم من حقيقة أن فرق الباب الخلفي لم تتغير منذ دراسة Trend Micro ، لاحظنا العديد من التعديلات الأخرى. خوادم C & C المستخدمة في هذه العينة جديدة تمامًا ، تاريخ إنشائها هو 10/22/2018.

  • daff.faybilodeau [.] com
  • sarc.onteagleroad [.] كوم
  • au.charlineopkesston [.] com

تم تغيير عنوان URL /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35 إلى /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35 .
تحتوي الحزمة الأولى المرسلة إلى خادم C&C على مزيد من المعلومات حول الجهاز المضيف ، بما في ذلك جميع البيانات التي تم جمعها بواسطة الأوامر من الجدول أدناه.



بالإضافة إلى تغيير التكوين هذا ، لا تستخدم العينة مكتبة libcurl لتصفية الشبكة ، ولكن مكتبة خارجية. للعثور عليه ، يحاول الباب الخلفي فك تشفير كل ملف في الدليل الحالي باستخدام AES-256-CBC مع المفتاح gFjMXBgyXWULmVVVzyxy مع الأصفار. يتم فك تشفير كل ملف وحفظه كـ /tmp/store ، وتم إجراء محاولة لتحميله كمكتبة باستخدام وظيفة dlopen . عندما تؤدي محاولة فك التشفير إلى استدعاء dlopen ناجحًا ، يسترجع الباب الخلفي ChadylonV و Boriry المصدرة ، والتي يبدو أنها مسؤولة عن اتصال الشبكة مع الخادم. ليس لدينا قطارة أو ملفات أخرى من موقع مصدر العينة ، لذلك لا يمكننا تحليل هذه المكتبة. علاوة على ذلك ، نظرًا لأن المكون مشفر ، فإن قاعدة YARA المستندة إلى هذه الخطوط لن تتطابق مع الملف الموجود على القرص.

كما هو موضح في المقالة أعلاه ، يتم إنشاء cliendID . هذا المعرف هو تجزئة MD5 لقيمة الإرجاع لأحد الأوامر التالية:

- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, "\""); printf("%s", line[4]); }' ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, "\""); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, "\""); printf("%s", line[4]); }' ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, "\""); printf("%s", line[4]); }'
- ifconfig en0 | awk \'/ether /{print $2}\' ifconfig en0 | awk \'/ether /{print $2}\' (الحصول على عنوان MAC)
- أمر غير معروف (" \x1e\x72\x0a ") ، والذي يتم استخدامه في العينات السابقة

قبل التجزئة ، تتم إضافة الحرف "0" أو "1" إلى القيمة التي يتم إرجاعها ، مما يشير إلى وجود امتيازات الجذر. يتم تخزين ClientID في /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex إذا كان الرمز قيد التشغيل كجذر أو في ~ / Library / SmartCardsServices / Technology / PlugIns / drivers / snippets.ecgML في جميع الحالات الأخرى. عادةً ما يتم إخفاء الملف باستخدام وظيفة _chflags ؛ يتم تغيير الطابع الزمني الخاص به باستخدام الأمر touch –t بقيمة عشوائية.

سلاسل فك


كما في الإصدارات السابقة ، يتم تشفير السلاسل باستخدام AES-256-CBC (المفتاح السداسي العشري: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 IV مع الأصفار) باستخدام الدالة CCCrypt . تم تغيير المفتاح من الإصدارات السابقة ، ولكن نظرًا لأن المجموعة لا تزال تستخدم خوارزمية تشفير السلسلة نفسها ، يمكن فك التشفير تلقائيًا. بالإضافة إلى هذا المنشور ، نقوم بإصدار برنامج نصي IDA يستخدم واجهة برمجة تطبيقات Hex-Rays لفك تشفير السلاسل الموجودة في ملف ثنائي. قد يساعد هذا البرنامج النصي في التحليل المستقبلي لـ OceanLotus وتحليل العينات الموجودة التي لم نتمكن من الحصول عليها بعد. يعتمد البرنامج النصي على طريقة عالمية لتلقي الوسائط التي يتم تمريرها إلى دالة. إنه يبحث أيضًا عن إعدادات الوجهة. يمكن إعادة استخدام الطريقة للحصول على قائمة وسائط الدالة ثم تمريرها إلى رد اتصال.

معرفة النموذج الأولي لوظيفة فك تشفير ، يجد البرنامج النصي جميع المراجع التبادلية لهذه الوظيفة ، وجميع الحجج ، ثم يقوم بفك تشفير البيانات ووضع نص عادي داخل التعليق على عنوان المرجع التبادلي. لكي يعمل البرنامج النصي بشكل صحيح ، يجب أن يحتوي على الأبجدية المعرفة من قبل المستخدم والتي تستخدمها وظيفة فك ترميز base64 ويجب تحديد متغير عام يحتوي على طول المفتاح (في هذه الحالة ، DWORD ، انظر الشكل 4).


الشكل 4. تعريف المتغير العام key_len

في نافذة الوظيفة ، يمكنك النقر بزر الماوس الأيمن فوق وظيفة فك التشفير والنقر فوق "استخراج وفك تشفير الوسائط". يجب أن يضع النص الأسطر المشفرة في التعليقات ، كما هو مبين في الشكل 5.


الشكل 5. النص المشفر يوضع في التعليق

وبالتالي ، يتم وضع الخطوط المشفرة بشكل ملائم معًا في نافذة xrefs لـ IDA لهذه الوظيفة ، كما هو موضح في الشكل 6.


الشكل 6. Xrefs إلى f_decrypt وظيفة

يمكن العثور على البرنامج النصي النهائي في مستودع جيثب .

استنتاج


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

لقد كشفت منتجات ESET بالفعل هذا الملف في وقت الدراسة. نظرًا لأن مكتبة الشبكة المستخدمة لاتصالات C&C مشفرة الآن على القرص ، فإن بروتوكول الشبكة الدقيق المستخدم من قبل المهاجمين لم يعرف بعد.

مؤشرات التسوية


مؤشرات التسوية وكذلك سمات MITER ATT & CK متاحة أيضًا على GitHub .

Source: https://habr.com/ru/post/ar447530/


All Articles