طروادة أخرى [تقريبًا] غير قابلة للتشكيل لنظام Android

في نهاية العام الماضي ، باستخدام وظيفة الكشف عن التغيير في منطقة النظام ، سجل بعض مستخدمينا تغييرًا في ملف النظام / system/lib/libc.so. هذا هو واحد من المكتبات الرئيسية لأنظمة التشغيل المستندة إلى Linux المسؤولة عن مكالمات النظام والوظائف الأساسية. كشف فحص مفصل لهذه الحالة عن عينات جديدة من عائلة Android.Xiny من أحصنة طروادة ، المعروفة لنا منذ عام 2015.

لأول مرة ، رأينا تثبيت السمة " غير القابلة للتغيير " على ملفات ممثليها ، مما أدى إلى تعقيد كبير في إزالة حصان طروادة من الأجهزة.

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

في هذه المقالة ، سننظر في طريقة أخرى مثيرة للدفاع عن النفس ، تستخدمها الإصدارات الجديدة من Android.Xiny.

أندرويد 5.1؟ في 2019؟



تعمل طروادة المذكورة في هذه المقالة على نظام أندرويد حتى الإصدار 5.1 الشامل. قد يبدو من الغريب أن البرامج الضارة المصممة لمثل هذه الإصدارات "القديمة" من نظام Android ما زالت نشطة (تم إصدار الإصدار 5.1 في عام 2015). ولكن على الرغم من العمر ، لا تزال الإصدارات القديمة قيد الاستخدام. وفقًا لـ Google ، اعتبارًا من 7 مايو 2019 ، فإن 25.2٪ من الأجهزة تعمل بنظام Android 5.1 وما دونه. إحصاءات لمستخدمينا يعطي عدد أكبر قليلا - حوالي 26 ٪. هذا يعني أن حوالي ربع أجهزة Android هي أهداف محتملة ، وهي ليست صغيرة جدًا. نظرًا لأن هذه الأجهزة عرضة لنقاط الضعف التي لن يتم إصلاحها أبدًا ، فليس من المستغرب أن الإصدارات القديمة من نظام التشغيل Android لا تزال تهم كتاب الفيروسات. في الواقع ، حقوق الجذر ، والتي يمكن الحصول عليها عن طريق استغلال الثغرات المذكورة ، تقوم بفك أيدي كتاب الفيروسات - بمساعدتهم ، يمكنك القيام بأي شيء على الجهاز. على الرغم من أنه في أغلب الأحيان يتعلق الأمر بالتثبيت العادي للتطبيقات.

المهام الرئيسية لل طروادة


بدءًا من الإصدارات الأقدم ، تتمثل الوظيفة الرئيسية لـ Android.Xiny Trojan في تثبيت التطبيقات التعسفية على الجهاز دون إذن المستخدم. وبالتالي ، يمكن للمهاجمين كسب المال من خلال المشاركة في البرامج التابعة التي تدفع ثمن التثبيت. بقدر ما يمكن للمرء أن يحكم ، وهذا هو واحد من مصادر الدخل الرئيسية للمبدعين من هذه الأسرة. بعد إطلاق بعض ممثليها ، يمكنك الحصول على جهاز غير فعال عملياً في غضون دقائق قليلة ، حيث سيتم تثبيت وإطلاق العديد من تطبيقات المستخدمين غير الضارة ولكن غير الضرورية. بالإضافة إلى ذلك ، يمكن لهذه أحصنة طروادة أيضًا تثبيت البرامج الضارة - كل هذا يتوقف على الأمر الذي تم استلامه من خادم الإدارة.

الشيء الأكثر إثارة للاهتمام الذي ينطلق إصدارات جديدة من Android.Xiny Trojan هو الحماية ضد الحذف. عنصرين مسؤولين عن ذلك. لننظر فيها بمزيد من التفصيل.

المثبت


sha1: f9f87a2d2f4d91cd450aa9734e09534929170c6c
الكشف: Android.Xiny.5261

يبدأ هذا المكون بعد الحصول على امتيازات الجذر. يحل محل ملفات النظام / system / bin / debuggerd و / system / bin / ddexe لضمان تشغيله تلقائيًا ، ويحفظ النسخ الأصلية تحت الأسماء باستخدام اللاحقة _server ، يتصرف مثل فيروس مصاحب تقليدي. يقوم أيضًا بنسخ العديد من الملفات القابلة للتنفيذ إلى قسم النظام من المجلد الذي تم تمريره في معلمات سطر الأوامر. بالإضافة إلى ذلك ، يمكن لـ Trojan تحديث المكونات التي تم تثبيتها في قسم النظام إذا قمت بتشغيلها باستخدام معلمات خاصة وتحديد المجلد الذي توجد به الإصدارات الجديدة.

يحتوي Android.Xiny.5261 على قائمة رائعة من الملفات المراد حذفها. ويشمل مسارات مميزة للأفراد الأقدم في العائلة ، وكذلك العائلات المتنافسة من أحصنة طروادة المثبتة في قسم النظام. مثل ، على سبيل المثال ، تريادا.



بالإضافة إلى ذلك ، يزيل Android.Xiny.5261 بعض التطبيقات المثبتة مسبقًا - ربما لإفراغ المساحة. أخيرًا ، يزيل تطبيقات إدارة حقوق الجذر المعروفة - مثل SuperSU و KingRoot وغيرها. وبالتالي ، فإنه يحرم المستخدم من القدرة على استخدام حقوق الجذر ، وبالتالي ، إزالة مكونات طروادة المثبتة في قسم النظام.

مكتبة النظام المعدلة libc.so


sha1: 171dba383d562bec235156f101879223bf7b32c7
الكشف: Android.Xiny.5260

هذا الملف يهمنا أكثر ، وهذا البحث بدأ به. تكشف نظرة سريعة على ذلك في hiew عن وجود تعليمات برمجية قابلة للتنفيذ بالقرب من النهاية في قسم .data ، وهو أمر مشبوه.





افتح الملف في المؤسسة الدولية للتنمية وشاهد نوع الكود الذي هو عليه.

اتضح أن الوظائف التالية قد تم تغييرها في هذه المكتبة: mount ، execve ، execv ، execvp ، execle ، execl ، execlp.

تعديل رمز وظيفة جبل:
int __ fastcall mount ( const char * source ، const char * target ، const char * filesystemtype ، علامة mount int غير الموقعة ، const void * data )
{
غير موقعة __int8 systemPath [ 19 ] ؛ // [sp + 18h] [bp-1Ch]
استقبل منطقي // [sp + 2Bh] [bp-9h]
كثافة العمليات v13 ؛ // [sp + 2Ch] [bp-8h]
v13 = MAGIC_MOUNTFLAGS ؛ // 0x7A3DC594
receivedMagicFlags = mountflags == MAGIC_MOUNTFLAGS ؛
if ( علامات التحميل == MAGIC_MOUNTFLAGS )
mountflags = 0x20 ؛ // MS_REMOUNT
إذا ( receivedMagicFlags )
إرجاع call_real_mount ( المصدر ، الهدف ، نظام الملفات ، علامات التحميل ، البيانات ) ؛
if ( mountflags & 1 ) // MS_RDONLY
إرجاع call_real_mount ( المصدر ، الهدف ، نظام الملفات ، علامات التحميل ، البيانات ) ؛
إذا ( getuid_ ( ) ) // ليس الجذر
إرجاع call_real_mount ( المصدر ، الهدف ، نظام الملفات ، علامات التحميل ، البيانات ) ؛
memCopy ( systemPath ، ( غير موقع __int8 * ) off_73210 + 471424 ، 8 ) ؛ // / النظام
فك تشفير ( systemPath ، 8 ) ؛
إذا كان ( memCompare ( ( غير موقع __int8 * ) هدفًا ، systemPath ، 8 ) || ! isBootCompete ( ) )
إرجاع call_real_mount ( المصدر ، الهدف ، نظام الملفات ، علامات التحميل ، البيانات ) ؛
* ( _DWORD * ) errno_ ( ) = 13 ؛
عودة - 1 ؛
}

في البداية ، يتم فحص المعلمة mountflags لوجود القيمة "السحرية" 0x7A3DC594. إذا تم تمرير هذه القيمة إلى الوظيفة ، يتم نقل التحكم على الفور إلى وظيفة التحميل الحقيقية. بعد ذلك ، يتم التحقق مما إذا كانت هناك محاولة لإعادة تحميل قسم / النظام للكتابة وما إذا كان قد تم إكمال تمهيد نظام التشغيل. إذا تم استيفاء هذه الشروط ، فلن يتم استدعاء وظيفة التحميل الحقيقية ويتم إرجاع خطأ. وبالتالي ، فإن وظيفة التركيب المعدلة بواسطة طروادة لا تسمح لأي شخص بإعادة تركيب قسم النظام للكتابة ، باستثناء طروادة نفسها ، والتي تطلق عليها المعلمة "السحرية".

رمز وظيفة exec المعدلة (في بقية وظائف exec * كل شيء هو نفسه):
int __fastcall execve ( const char * filename ، char * const argv [ ] ، char * const envp [ ] )
{
int v3 ؛ // r3
if ( targetInDataOrSdcard ( filename ) > = 0 ) // بإرجاع -1 إذا كان صحيحًا
{
sub_7383C ( ) ؛
v3 = call_real_execve ( اسم الملف ، argv ، envp ) ؛
}
آخر
{
* ( _DWORD * ) errno_ ( ) = 13 ؛
v3 = - 1 ؛
}
عودة v3 .
}

int __ fastcall targetInDataOrSdcard ( const char * path )
{
شار بوف [ 516 ] ؛ // [sp + 8h] [bp-204h]
إذا ( isDataOrSdcard ( المسار ) )
عودة - 1 ؛
إذا ( * path == '.' && getcwd_ ( buf ، 0x200u ) && isDataOrSdcard ( buf ) )
عودة - 1 ؛
عودة 0 ؛
}

هنا يتم التحقق مما إذا كان المسار إلى الملف الذي تم إطلاقه يبدأ بـ "/ data /" وما إذا كان يحتوي على "/ sdcard". إذا تم استيفاء أحد الشروط ، يتم حظر البداية. تذكر أنه على طول المسار / البيانات / البيانات / هي دلائل التطبيق. هذا يمنع تنفيذ الملفات القابلة للتنفيذ من جميع الدلائل التي يمكن للتطبيق العادي إنشاء ملف.

تؤدي التغييرات التي تم إجراؤها على مكتبة النظام libc.so إلى تعطيل التطبيقات المصممة للحصول على امتيازات الجذر. نظرًا للتغيرات في وظائف exec * ، لن يتمكن مثل هذا التطبيق من بدء عمليات استغلال لزيادة الامتيازات في النظام ، نظرًا لأن عمليات الاستغلال عادة ما تكون ملفات قابلة للتنفيذ يتم تنزيلها من الشبكة إلى دليل التطبيق وتشغيلها. إذا كنت لا تزال تنجح في رفع الامتيازات ، فلن تسمح لك وظيفة التحميل التي تم تغييرها بإعادة تحميل قسم النظام للكتابة ، مما يعني أنه لن يقوم بأي تغييرات عليه.

نتيجةً لذلك ، يتكون الدفاع عن النفس في Trojan من جزأين: المثبت يقوم بإلغاء تثبيت التطبيقات لإدارة حقوق الجذر ، وتمنع مكتبة libc.so المعدلة من تثبيتها مرة أخرى. بالإضافة إلى ذلك ، تعمل هذه الحماية أيضًا من "المنافسين" - أحصنة طروادة الأخرى التي تكتسب امتيازات الجذر ويتم تثبيتها في قسم النظام ، لأنها تعمل على نفس المبدأ مثل تطبيقات امتيازات الجذر "الجيدة".

كيفية التعامل مع مثل هذا طروادة؟


للتخلص من Android.Xiny.5260 ، يمكن وميض الجهاز - شريطة أن يكون هناك برنامج وصول مفتوح مفتوح له. ولكن هل من الممكن إزالة البرامج الضارة بطريقة أخرى؟ صعب ولكنه ممكن - هناك عدة طرق. للحصول على امتيازات الجذر ، يمكنك استخدام عمليات الاستغلال في شكل مكتبات. على عكس الملفات القابلة للتنفيذ ، لن يقوم طروادة بحظر التنزيل. يمكنك أيضًا استخدام مكون طروادة نفسه ، المصمم لتوفير حقوق الجذر لأجزائه الأخرى. يتلقى الأوامر من خلال المقبس على طول المسار / dev / socket / hs_linux_work201908091350 (قد يختلف المسار في تعديلات مختلفة). بالنسبة لتجاوز قفل التحميل ، يمكنك استخدام القيمة "السحرية" لمعلمة mountflags ، أو الاتصال مباشرة بـ syscall المقابل.

بالطبع ، لن أطبق هذا.

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

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


All Articles