Los investigadores de ESET han descubierto recientemente un interesante ataque a usuarios de Android camuflado como aplicaciones de juegos pero con un añadido interesante. Estas aplicaciones se encuentran unidas a otras que tienen como nombre systemdata o resourcea y esto es, ciertamente, algo sospechoso. ¿Por qué una aplicación descargada desde Google Play Store viene con otra de nombre systemdata? Estas aplicaciones / juegos de Google Play no son aplicaciones del sistema, tal y como su nombre pretende sugerir.
La aplicación empaquetada se descarga en el dispositivo pero solicita al usuario confirmar la instalación. Esta aplicación se camufla como “Manage Settings” y, tras la instalación, la aplicación se ejecuta en segundo plano como un servicio.
ESET detecta los juegos que instala el troyano como Android/TrojanDropper.Mapin y el troyano mismo como Android/Mapin. De acuerdo con nuestra telemetría, los usuarios de Android en India son los más afectados actualmente, con un 73,58 % de detecciones observadas.
Estre troyano toma el control del dispositivo y lo hace formar parte de una botnet bajo el control del atacante. El troyano también establece un contador que retrasa la ejecución del código malicioso. Esto se hace así para que resulte menos obvio que el juego troyanizado es responsable de este comportamiento sospechoso. En algunas variantes de esta amenaza se necesitaron al menos 3 días para activar todas las funcionalidades del troyano. Muy probablemente, este retraso en la activación es lo que ha permitido a esta amenaza pasar a través del sistema de prevención de malware de Google Bouncer.
Tras instalarse, el troyano solicita permisos de administrador del dispositivo y empieza a comunicarse con su centro remoto de mando y control. Android/ Mapin contiene múltiples funcionalidades, tales como enviar notificaciones al usuario, descargar, instalar y ejecutar aplicaciones y obtener la información privada del usuario, pero su principal propósito parece que es mostrar anuncios a pantalla completa en el dispositivo infectado.
Vectores de distribución
Lo más interesante de este troyano es que estuvo disponible para su descarga de la tienda oficial de Google Play a finales de 2013 y 2014 camuflado dentro de aplicaciones como Hill climb racing the game, Plants vs zombies 2, Subway suffers, Traffic Racer, Temple Run 2 Zombies y Super Hero Adventure por los desarrolladores TopGame24h, TopGameHit y SHSH. El malware se subió a Google Play entre el 24 y el 30 de noviembre de 2013 y el 22 de noviembre de 2014.
De acuerdo a MIXRANK, Plants vs zombies 2 tuvo alrededor de 10.000 descargas antes de ser retirada. En las mismas fechas System optimizer, Zombie Tsunami, tom cat talk, Super Hero adventure, Classic brick game y las aplicaciones mencionadas anteriormente de la tienda Google Play, empaquetados con el mismo troyano, fueron subidas a varios mercados alternativos de Android por los mismos desarrolladores. El mismo troyano fue también fue encontrado con otras aplicaciones subidas por el desarrollador PRStudio (no confundir con prStudio) a mercados alternativos de Android, con algunos de ellos apuntando a la tienda de Google Play.
Este desarrollador subió al menos otras cinco aplicaciones troyanizadas a varios mercados alternativos de Android: Candy crush o Jewel crush, Racing rivals, Super maria journey, Zombie highway killer, Plants vs Zombies. Todos estos juegos infectados siguen disponibles para su descarga desde estos mercados y las aplicaciones infectadas han sido descargadas miles de veces. Tal y como se puede comprobar por los nombres e iconos usados, los creadores de este tipo de aplicaciones maliciosas buscan confundir a los usuarios utilizando nombres similares e iconos muy parecidos a los de las aplicaciones reales.
Imagen 1: Aplicaciones infectadas
Imagen 2: La aplicación recibe comentarios positivos
Análisis
Existen variaciones en la forma en que se ejecuta este malware. Por ejemplo, el troyano puede esperar a solicitar su instalación 24 horas después de haberse descargado la aplicación maliciosa. Este método parece menos sospechoso de cara al usuario y le hace creer que la petición para instalar una aplicación proviene del propio sistema operativo. Versiones antiguas del troyano no se esperan tanto tiempo y se ejecutan inmediatamente. Sin embargo, todas las variantes se activan cuando se cambia el tipo de conectividad y un receptor broadcast se registra el manifiesto de la aplicación.
Cambio en el receptor de la conectividad
Cuando se cambia la conexión se le solicita al usuario que instale la “system application”. El malware se camufla haciéndose pasar por Google Play Update o Manage Settings.
Imagen3: Peticiones de instalación realizadas por el troyano
Si el usuario elige la opción de Cancelar se le mostrará esta pantalla de instalación siempre que se cambie el tipo de conexión. El usuario medio pensará que se trata de algún tipo de actualización importante y es muy probable que termine instalando el malware solo para librarse de la notificación. Después de instalarse, el troyano inicia un servicio con su propio receptor de broadcast, esperando un nuevo cambio en la conexión.
Cuando se active una conexión, el malware trata de registrarse con los servidores de Google Cloud Messages (GMC) antes de empezar a recibir mensajes. Tras registrarse en el GMC, Android/Mapin se registrará el dispositivo infectado en su propio servidor enviando el nombre de usuario, la cuenta de Google, IMEI, ID de registro y su propio nombre del paquete.
Imagen 4: Registro del dispositivo en el servidor del atacante
Para prevenir su desinstalación, el troyano exige que el usuario le otorgue permisos de administrador del dispositivo.
Imagen 3: Solicitud de permisos de Administrador del dispositivo
El troyano notificará al servidor remoto si la activación de los permisos de administración del dispositivo se realizó con éxito o no. Seguidamente, al usuario se le mostrará un anuncio (interstitial) a pantalla completa y se mostrará cada vez que cambie el tipo de conexión. Estos anuncios se envían por un uso ilegítimo del SDK AdMob.
Imagen 4: Anuncios Interstitial
Comunicación
El troyano se comunica con el servidor usando Google Cloud Messaging (GCM). Este sistema de comunicación está siendo utilizado cada vez más frecuentemente por el malware actual y permite al troyano responder a los comandos enviados por el servidor.
A día de hoy, aún no se ha implementado toda la funcionalidad posible en este troyano y parte de la que sí está implementada no es utilizada por sus creadores. Existe la posibilidad de que esta amenaza se encuentre aún en fase de desarrollo y el troyano reciba mejoras en el futuro. Su propósito principal, controlado desde el servidor remoto, es mostrar publicidad agresiva a los usuarios mientras se camufla como una aplicación del sistema.
También puede instalar otros programas maliciosos en el dispositivo del usuario, activar o desactivar banners de anuncios intersitiales, cambiar el ID del editor, elegir si mostrar o no anuncios al usuario, cambiar el tiempo de retraso existente entre distintos anuncios, instalar, descargar y ejecutar aplicaciones, enviar notificaciones, eliminar permisos de administrador del dispositivo, cambiar el servidor con el que se comunica el malware y generar enlaces directos en la pantalla de inicio a direcciones web que descargan e instalan aplicaciones. Tras ejecutar cada una de estas tareas, recibidas mediante GMC, el dispositivo del cliente informará al servidor remoto vía HTTPS de que sus tareas se han realizado con éxito.
Conclusión
El troyano consiguió ser subido a la tienda de Google Play probablemente porque el mecanismo de Bouncer no tenía implementados los detectores de malware, en este caso los que se encargan de detectar cambios extraños en la conectividad a diferentes redes. Otra pregunta interesante sería averiguar por qué Bouncer no analizó de forma estática el fichero malicioso que había dentro del juego subido.
Por ese motivo, el troyano permaneció sin ser detectado y fue proporcionado a los usuarios sin restricción alguna. El juego infectado “Super Hero adventure” fue subido a Google Play Store por el desarrollador “SHSH” y es posible que más aplicaciones de este desarrollador fueran subidas a la tienda oficial. Estos troyanos fueron retirados de la tienda oficial de Google, pero estuvieron sin ser detectados alrededor de un año y medio. Quizás por este caso y otros similares, Google anunció en marzo de 2015 que todas las aplicaciones y sus actualizaciones pasarían por un proceso de revisión humana.
La mejor manera de evitar la descarga de malware de la tienda oficial es descargando aplicaciones de desarrolladores de confianza y leyendo los comentarios de los usuarios que ya están usándolas. También es importante tener en cuenta si los permisos que exige una aplicación están justificados. Si tu sistema funciona de manera anómala, sería interesante que enviases una muestra del instalador de la aplicación sospechosa a su casa de antivirus para que proceda a analizarla.
Josep Albors a partir de una investigación de Lukas Stefanko
Más información:
Nombre App | Nombre del Paquete | MD5 | Detección |
Highway Zombie | com.heighwayzombie | 2f6323af124f9fd57edb1482827f9481 | Android/TrojanDropper.Mapin |
Plant vs Zombie | com.plantzombie | 8721901a2caaeb98a19e0fb909ce2569 | Android/TrojanDropper.Mapin |
USubway Suffer | com.subwaysuffers | ba3c1894310d38aa814ad3c58f1c8469 | Android/TrojanDropper.Mapin |
Climb racing | com.hillclimbrace | 87cc79d6f6795fea0df109e181d1a3e8 | Android/TrojanDropper.Mapin |
Temple run 2 Zoombie | com.templerunzombies | d5afd7ba5b3bd24cd4fa5201882e1a9d | Android/TrojanDropper.Mapin |
Traffic Racer | com.traficracer | 9cbfd66f35a36d9f75a89f342da9c784 | Android/TrojanDropper.Mapin |
Google Play update | com.system.main | f8df9e2d21018badc7555a9233a8b53e | Android/Mapin |
Arrange Block – Brick game | com.game.arrangeblock | d7facf652d3947a53f85431ba8a4cd4a | Android/TrojanDropper.Mapin |
Manage Settings | com.appgp.main | 5586e93ac84317348904adfe01c9715c | Android/Mapin |
Candy crush | com.tgame.candycrush | 745e9a47febb444c42fb0561c3cea794 | Android/TrojanDropper.Mapin |
Manage Settings | com.appgp.main | c19896fdd3b96b9324c6b79cc39eca5b | Android/Mapin |
Super maria adventure | com.game.supermario | 0d7c889e8a9be51a58041d55095f104f | Android/TrojanDropper.Mapin |
Manage Settings | com.appgp.main | c19896fdd3b96b9324c6b79cc39eca5b | Android/Mapin |
Super maria journey | com.tgame.maria | ee8e4e3801c0101998b7dfee33f35f95 | Android/TrojanDropper.Mapin |
Google Play Update | com.appgp.main | 195432955e70ec72018ead058f7abc2d | Android/Mapin |
Zombies highway killer | com.absgame.zombiehighwaykiller | 1516174c4a7f781c5f3ea6ac8447867b | Android/TrojanDropper.Mapin |
Manage Settings | com.appgp.main | f05ac3ac794ee8456db4d0331830d2d8 | Android/Mapin |
Plants Vs Zombies | com.tgame.plantvszombie | 10edaf2b4c25375644faf78a25790061 | Android/TrojanDropper.Mapin |
Google Play Update | com.appgp.main | f8879f759b00ed9d406dd14ce450584b | Android/Mapin |
Plants Vs Zombies | com.popcap.pvz_row | 9b72df484915ce589ade74e65ecdfaed | Android/TrojanDropper.Mapin |