Investigadores de ESET descubrieron una aplicación maliciosa para Android utilizada para lanzar ataques de DDoS. Gracias al hecho de que el sitio web de ESET era el objetivo de esos ataques, los investigadores pudieron identificar la aplicación, analizarla e informar a Google, que rápidamente la eliminó de Play Store.

El ataque dirigido al sitio web global de ESET, www.eset.com, ocurrió en enero de 2020. Duró siete horas y se llevó adelante utilizando más de 4,000 direcciones IP únicas, las cuales fueron identificadas como maliciosas y bloqueados al momento del ataque.

Nuestro análisis mostró que el ataque se llevó a cabo utilizando miles de instancias de la aplicación “Updates for Android”, que en ese momento estaba disponible en la tienda oficial de aplicaciones para Android. La única funcionalidad maliciosa de la aplicación se basaba en su capacidad para cargar JavaScript desde un servidor controlado por el atacante y ejecutarlo en el dispositivo del usuario. Esto explica por qué la aplicación llegó a Play Store.

La aplicación "Updates for Android" se cargó en la Play Store por primera vez el 9 de septiembre de 2019. La versión original de la app no contaba con la funcionalidad de cargar JavaScript que, en última instancia, era la que permitía llevar a cabo el ataque DDoS. Dicha funcionalidad se agregó en la última actualización de la app realizada dos semanas antes del ataque. La app tuvo más de 50,000 instalaciones, aunque no sabemos cuántas instancias de la aplicación se instalaron después de la actualización o se actualizaron a la versión maliciosa. A partir de nuestro aviso, Google eliminó rápidamente la app de la tienda oficial.

Para atraer a sus víctimas y simular ser legítima, la aplicación cuenta con un sitio web (i-updater[.]com) que se promociona a sí mismo como "actualizaciones diarias de noticias". (El sitio web todavía está activo, ya que no hay motivos para realizar ningún esfuerzo de eliminación dado que en sí mismo no es malicioso).

Figura 1. El sitio web que promociona la aplicación maliciosa “Updates for Android”

Funcionalidad de la app

La funcionalidad anunciada por la aplicación “Updates for Android”, que todavía está disponible en tiendas no oficiales, muestra al usuario un feed de noticias diarias.

Figura 2. Apariencia de la aplicación maliciosa en Google Play antes de su eliminación

Incluso si se descarta la función maliciosa de la aplicación, tanto su nombre como también el nombre de su desarrollador, "System apps", son engañosos, ya que la app no tiene ninguna relación con ningún sistema o con actualizaciones del sistema.

Para evitar sospechas, la aplicación muestra algunas noticias; sin embargo, su funcionalidad principal es recibir comandos de un sitio web predefinido que funciona como servidor de Comando y Control (C&C). El malware hace ping al C&C cada 150 minutos y proporciona el ID del dispositivo, una medida que permite que cada dispositivo se controle individualmente.

Figure 3. Lista de comandos que podrían ser ejecutados por la app Updates for Android

Figura 4. Lista de comandos recibidos por el C&C

Funcionalidad maliciosa

De acuerdo con los comandos que la aplicación recibe del C&C, puede desplegar anuncios en el navegador predeterminado del usuario (nota: esta funcionalidad se extiende fuera de la aplicación), ocultar su presencia del usuario ocultando el icono de la misma y ejecutar JavaScript, suministrado de forma remota, de manera arbitraria.

Esta última funcionalidad se utilizó para llevar a cabo el ataque DDoS en el sitio web de ESET.

La siguiente información proviene del análisis de las muestras utilizadas en el ataque.

El malware abrirá un archivo local llamado new_method.html que la aplicación lleva consigo. Su objetivo es cargar JavaScript de manera remota proporcionado por el servidor C&C.

Figura 5. El contenido del archivo new_method.html

Según el código JavaScript recibido por la aplicación de su C&C, el dispositivo se conecta cada segundo al sitio web apuntado para inundarlo con tráfico.

Figura 6. Código devuelto por el servidor del atacante y ejecutado por un dispositivo infectado

El ataque DDoS comienza con el dispositivo comprometido que recibe un comando para cargar el script del atacante que especifica el dominio al cual se apunta. Una vez que se carga el script, el dispositivo comienza a realizar solicitudes al dominio apuntado hasta que el servidor de C&C le proporciona otro script que puede contener un dominio de destino diferente.

Desde que comenzamos a monitorear el sitio web que proporciona la funcionalidad de C&C a la botnet, fuimos testigos del envío de otros seis scripts, cada uno con un dominio diferente, para que los dispositivos comprometidos atacaran. Esos sitios eran de noticias y de comercio electrónico, la mayoría de ellos en Turquía. Desde el 2 de febrero, el script está vacío, lo que significa que los atacantes trataron de alimentar a su botnet hasta dos días después de que Google puso fin a la mayor parte de ella.

Conclusión

El método de ataque DDoS descrito en este artículo depende de la cantidad de dispositivos infectados disponibles para los atacantes. Más allá de las 50,000 instalaciones, alrededor del 10% estuvieron realmente involucrados en el ataque.

El ataque descrito muestra que los cibercriminales pueden ser pacientes y esperar a que la base de usuarios de una aplicación crezca al tamaño requerido antes de implementar la funcionalidad maliciosa en la app.

La detección de este tipo de funcionalidad maliciosa no es sencilla, ya que docenas de kits y frameworks para el desarrollo de software legítimos para Android utilizan la misma técnica (por supuesto, sin ningún JavaScript malicioso). Esto significa que cualquier detección simple basada en dicho código daría lugar a muchos falsos positivos.

Sin embargo, esto último no significa que los usuarios de dispositivos Android no puedan estar protegidos. A partir de lo que hemos aprendido de las características y el comportamiento de esta aplicación hemos mejorado nuestros mecanismos de detección. Algunas de esas mejoras ya se han implementado en las tecnologías que utilizamos para la protección de Play Store dentro de la App Defense Alliance. Otras están siendo implementadas en otras capas de seguridad de nuestra solución de seguridad de punto final, incluidas nuestras detecciones basadas en machine learning.

Indicadores de Compromiso (IoCs)

Package Name Hash Detection
com.world.hello.myapplication 34A6BD8B96729B6F87EC5E4110E02BEE1C76F5A9 Trojan.Android/Hiddad.AJN

Técnicas de MITRE ATT&CK

Tactic ID Name Description
Initial Access T1475 Deliver Malicious App via Authorized App Store The malware impersonates legitimate services on Google Play.
Persistence T1402 App Auto-Start at Device Boot The malware listens for the BOOT_COMPLETED broadcast, ensuring that the app's functionality will be activated every time the device starts.
Defense Evasion T1508 Suppress Application Icon The malware hides its icon from launcher.
Impact T1472 Generate Fraudulent Advertising Revenue The malware can display unwanted advertisement.
Command and Control T1436 Commonly Used Port The malware uses port 443 for its C&C communications.
T1437 Standard Application Layer Protocol The malware uses HTTPS for its C&C communications.