Hace cinco años, ocurrió una revelación inquietante. Las aplicaciones originales de Android en Google Play Store fueron secretamente comprometidas a través de una biblioteca utilizada por los desarrolladores para generar ingresos publicitarios. Como resultado, la aplicación se cargó con código malicioso que permitió que 100 millones de dispositivos se conectaran a servidores controlados por piratas informáticos y descargaran en secreto cargas útiles dañinas.
Recientemente, este escenario volvió a hacerse realidad. Investigadores de una empresa de seguridad con sede en Moscú, Rusia, descubrieron el lunes que dos nuevas aplicaciones descargadas 11 millones de veces desde Google Play Store estaban infectadas con el mismo tipo de malware. El equipo de Kaspersky sospecha una vez más que el culpable fue un kit de desarrollo de software malicioso (SDK) utilizado para la integración de anuncios.
Tecnología avanzada de malware
Los SDK son herramientas que ayudan a los desarrolladores al proporcionarles marcos listos para usar que simplifican el proceso de desarrollo de aplicaciones al manejar tareas repetitivas. Las aplicaciones infectadas utilizaban módulos SDK no verificados, aparentemente para facilitar la visualización de anuncios. Sin embargo, este módulo también permitía la comunicación encubierta con servidores maliciosos. Además de recibir datos del usuario de la aplicación, estos servidores enviaban código malicioso que podía ejecutarse y actualizarse de forma remota en cualquier momento.
El malware, identificado como Necro en ambos incidentes, empleó técnicas sofisticadas en esta ronda. Algunas versiones empleaban esteganografía, una técnica para ocultar datos que no es común en el malware móvil. Además, algunas variantes introdujeron técnicas sofisticadas para entregar código malicioso que puede ejecutarse con privilegios elevados del sistema. Una vez que el dispositivo se vio comprometido, se conectó a un servidor de comando y control administrado por piratas informáticos y envió datos JSON cifrados sobre el dispositivo y la aplicación que contenía el módulo malicioso.
El servidor responde con un archivo JSON que contiene metadatos que contienen un enlace a la imagen PNG y un hash de la imagen. Una vez que el hash se verifique exitosamente en el dispositivo infectado, se descargará la imagen.
Los investigadores de Kaspersky escribieron en un informe separado que “el módulo SDK emplea técnicas de esteganografía bastante básicas. Una vez que pasa la validación MD5, utiliza herramientas estándar de Android para extraer el contenido del archivo PNG (específicamente, el método getPixel luego extrae el valor, que contiene el canal azul y comienza el procesamiento del código.
Agregaron:
Si observa el canal azul como una matriz de bytes unidimensional, los primeros cuatro bytes tienen el tamaño de la carga útil codificada en orden little endian. Luego se registra una carga útil del tamaño especificado. Este es un archivo JAR codificado en Base64 que DexClassLoader decodifica y luego ejecuta. Luego, Coral SDK carga la clase sdk.fkgh.mvp.SdkEntry desde el archivo JAR usando la biblioteca nativa libcoral.so oculta usando la herramienta OLVVM. La ejecución comienza con el método 'ejecutar' de la clase cargada.
Las cargas útiles posteriores instalan diferentes complementos maliciosos en diferentes dispositivos y permiten diversas actividades dañinas. Un complemento le permite ejecutar código con privilegios elevados del sistema. Android normalmente restringe el uso de WebView, el componente que muestra contenido web dentro de una aplicación, a procesos privilegiados. Para solucionar esto, Necro utiliza una técnica de piratería llamada ataque de reflexión para crear una instancia de otra fábrica WebView.
Este complemento también puede descargar y ejecutar archivos ejecutables adicionales que manipulan la visualización de la URL de WebView. Con privilegios elevados, estos archivos pueden modificar la URL para agregar códigos de verificación para suscripciones pagas o comenzar a descargar y ejecutar código desde enlaces controlados por atacantes. Los investigadores identificaron cinco cargas útiles diferentes en su análisis de Necro.
La estructura modular de Necro crea una variedad de posibilidades para el comportamiento del malware. Kaspersky compartió una imagen que ofrece una descripción general de esta estructura.
Entre las aplicaciones infectadas descubiertas se encontraba Wuta Camera, que se descargó 10 millones de veces. Las versiones 6.3.2.148 a 6.3.6.148 de Wuta Camera contenían un SDK malicioso. Desde entonces, esta aplicación se ha actualizado para eliminar componentes dañinos. Otra aplicación, Max Browser, que se descargó aproximadamente 1 millón de veces, también resultó infectada y fue eliminada de Google Play Store.
Además, Necro también se encontró en varias aplicaciones de Android en mercados alternativos. Estas aplicaciones a menudo se disfrazaban de versiones modificadas de aplicaciones legítimas como Spotify, Minecraft, WhatsApp, Stumble Guys, Car Parking Multiplayer y Melon Sandbox.
Se recomienda a las personas preocupadas por una posible infección por Necro que revisen sus dispositivos en busca de signos de compromiso, como se detalla al final de este informe.
Google Play Infected! 11 Million Devices Hit by Botnet Malware