Android.Triada.231 fait partie de la famille de malware Android.Triada. Les programmes malicieux de cette famille s’attaquent au processus système dénommé Zygote (le lanceur des processus d’applications tierces). En s’injectant dans Zygote, ces malwares peuvent ainsi s’infiltrer dans tous les autres processus.
Cette infiltration requiert néanmoins que le malware acquière des droits d’accès root, d’après les explications de la firme Dr. Web. Pour contourner cette nécessité, des développeurs participant au projet de création du firmware pour les marques concernées, ont trouvé la géniale idée d’insérer la variante « 231 » de cette famille directement dans le code source – dans la méthode println_native de la classe android.util.log – de la bibliothèque système libandroid_runtime.so.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | jint __fastcall android_util_Log_println_native(JNIEnv *env, jobject clazz, jint bufID, jint priority, jstring tagObj, jstring msgObj) { const char *tag; // r4@5 const char *msg; // r8@7 int v12; // r0@8 char *v13; // lr@9 char v14; // r1@10 int v15; // t1@10 int v16; // r0@12 const char *tag_; // r2@12 jint v18; // r10@13 char v21[52]; // [sp+10h] [bp-60h]@11 int v22; // [sp+44h] [bp-2Ch]@1 char v23[40]; // [sp+48h] [bp-28h]@12 v22 = MEMORY[0]; if ( !msgObj || (unsigned int)bufID > 5 ) { jniThrowNullPointerException(); return -1; } if ( tagObj ) tag = (const char *)((int (*)(void))(*env)->GetStringUTFChars)(); else tag = 0; msg = (const char *)((int (__fastcall *)(JNIEnv *, jstring, _DWORD))(*env)->GetStringUTFChars)(env, msgObj, 0); if ( tag ) { v12 = strncmp(tag, "@M_", 3u); if ( !v12 ) { v13 = (char *)(tag + 2); while ( 1 ) { v15 = (unsigned __int8)(v13++)[1]; v14 = v15; if ( !v15 ) break; v21[v12++] = v14; } v23[v12 - 56] = v14; v16 = xlogf_java_xtag_is_on(v21, priority); tag_ = v21; if ( !v16 ) goto LABEL_13; LABEL_17: v18 = _android_log_buf_write(bufID, priority, tag_, msg); goto LABEL_18; } } if ( xlogf_java_tag_is_on(tag, priority) ) { tag_ = tag; goto LABEL_17; } LABEL_13: v18 = -1; LABEL_18: j___config_log_println(env, priority, tag, msg, "M5 Plus Lte"); if ( tag ) ((void (__fastcall *)(JNIEnv *, jstring, const char *))(*env)->ReleaseStringUTFChars)(env, tagObj, tag); ((void (__fastcall *)(JNIEnv *, jstring, const char *))(*env)->ReleaseStringUTFChars)(env, msgObj, msg); return v18; } |
« Libandroid_runtime.so est utilisé par toutes les applications Android ce qui fait que le malware se retrouve injecté dans la zone de mémoire de toutes les applications en cours de fonctionnement », explique la firme qui ajoute que « la fonction principale de ce malware est de télécharger des composants malicieux supplémentaires. »
Le malware présent sur l’appareil mobile infecté laisse dès lors une infinité de possibilités à un développeur de virus. Une application bancaire installée sur l’appareil sera donc infiltrée dès son lancement avec les conséquences désastreuses que l’on connait.
Il est bien dommage que la liste d’appareils publiée par la firme Dr. Web ne mentionne que deux marques de smartphones de façon explicite, ceci d’autant plus que la seule façon de se débarrasser de ce cheval de Troie est d’installer un firmware non infecté.
Source : Dr. Web
Et vous ?
Qu’en pensez-vous ?
Voir aussi :
Le malware Android Judy pourrait avoir infecté 36,5 millions d'utilisateurs, selon le spécialiste en sécurité Checkpoint
DressCode, un malware Android dissimulé dans plus de 400 applications de Google Play, susceptible de voler les données sensibles des entreprises