OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS

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

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

OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS

تحليل

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

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

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

OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS
الشكل 1. سمات قسم MACH-O __cfstring

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

OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS
الشكل 2. رمز الباب الخلفي الذي اكتشفته المؤسسة الدولية للتنمية كبيانات

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

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

OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS
الشكل 3. التحقق من اتصال مصحح الأخطاء باستخدام وظيفة sysctl

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

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

يقوم النموذج بعد ذلك بالتحقق من القيمة المرجعة مقابل قائمة سلاسل مشفرة من أنظمة المحاكاة الافتراضية المعروفة: acle, في إم وير, فيرتثلبوإكس أو التشابه. أخيرًا، يتحقق الأمر التالي مما إذا كان الجهاز واحدًا من "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، إلا أننا لاحظنا بعض التعديلات الأخرى. خوادم القيادة والتحكم المستخدمة في هذه العينة جديدة إلى حد ما وتم إنشاؤها بتاريخ 22.10.2018/XNUMX/XNUMX.

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com

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

OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS

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

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

- 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]); }'
- ifconfig en0 | awk '/ether /{print $2}' (الحصول على عنوان MAC)
- فريق غير معروف ("x1ex72x0a")، والذي تم استخدامه في العينات السابقة

قبل التجزئة، تتم إضافة "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).

OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS
الشكل 4. تعريف المتغير العام key_len

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

OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS
الشكل 5. يتم وضع النص الذي تم فك تشفيره في التعليقات

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

OceanLotus: تحديث البرامج الضارة لنظام التشغيل macOS
الشكل 6. Xrefs إلى وظيفة f_decrypt

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

إنتاج

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

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

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

تتوفر أيضًا مؤشرات التسوية بالإضافة إلى سمات MITRE ATT&CK GitHub جيثب:.

المصدر: www.habr.com

إضافة تعليق