Mientras los analistas descifran nuevas metodologías para analizar malware y los usuarios empiezan a entender cómo este funciona, los cibercriminales buscan novedosas formas para esconderse en los teléfonos y comprometer los dispositivos.
Las enrevesadas triquiñuelas de las cuales se valen para aumentar la efectividad de sus ataques podrían agruparse en dos categorías bien diferenciadas: por un lado, estrategias de Ingeniería Social que buscan confundir a los usuarios y, por el otro, rebuscados mecanismos técnicos para dificultar la detección y análisis de malware.
A lo largo de este artículo, resumiremos algunos de los comportamientos frecuentes en códigos maliciosos para Android durante los últimos años.
Engaños basados en Ingeniería Social
Utilizar cuentas fraudulentas en la Play Store para distribución de malware
El malware en la tienda oficial de Google no cesa de aparecer. Para los cibercriminales, lograr que sus aplicaciones maliciosas logren colarse en los mercados de apps genuinas resulta una gran victoria, pudiendo alcanzar a un conjunto más grande de potenciales víctimas y garantizando casi por completo un número mayor de infecciones.
Además, estas falsas cuentas de desarrollador que propagan aplicaciones inseguras o maliciosas intentan lucir lo más parecido posible a la cuenta real, con el objeto de atrapar a usuarios despistados que terminen confundiéndose. Por ejemplo, poco tiempo atrás, investigadores descubrieron una falsa app para actualizar WhatsApp que utilizaba un engaño mediante un carácter Unicode para dar la impresión de estar siendo distribuida a través de la cuenta oficial.
Aprovecharse de fechas conmemorativas y releases de apps esperadas
Una práctica común en el mundo del ciberdelito es enmascarar malware como versiones de apps –juegos, principalmente– que han cobrado repentina popularidad, que están prontas a ser liberadas o que no están disponibles en tiendas oficiales para determinados países. Este fue el caso de Pokémon GO, Prisma o Dubsmash, sumando cientos de miles de infecciones a nivel mundial.
Tapjacking y superposición de ventanas
El tapjacking es una técnica que consiste en la captura de los toques que el usuario da sobre la pantalla al mostrar dos actividades superpuestas. De esta manera, el usuario cree que realiza toques sobre la actividad que está viendo, mientras estos están siendo verdaderamente desviados a la actividad subyacente, la cual permanece oculta a su vista.
Otra estrategia similar, muy utilizada en spyware para el robo de credenciales en Android, es la superposición de actividades. En este esquema, el malware detecta la aplicación que el usuario está utilizando a cada instante y, cuando esta coincide con una determinada app objetivo, despliega un diálogo propio con la estética de la aplicación legítima, peticionando las credenciales al usuario.
Camuflarse entre las apps del sistema
Claramente, la forma más sencilla de la que dispone un código malicioso para ocultarse en el equipo es simular ser una aplicación del sistema y pasar lo más desapercibida posible. Comportamientos como eliminar el icono de la app una vez que ha terminado la instalación o utilizar nombres, paquetes e iconos de apps de sistema y otras apps populares para inmiscuirse en el equipo son estrategias que podemos ver en códigos como este troyano bancario que pretendía ser Adobe Flash Player para robar credenciales.
Simular ser apps del sistema y seguridad para peticionar permisos de administrador
Dado que la estructura de Android limita los permisos de las aplicaciones, muchos códigos maliciosos necesitan peticionar permisos de administrador para poder desarrollar correctamente su funcionalidad. Además, este permiso ayuda a que el malware pueda dificultar su desinstalación.
El hecho de camuflarse como herramientas de seguridad o actualizaciones del sistema brinda a los cibercriminales ciertas ventajas. En particular, les permite escudarse bajo una figura de confianza, de modo que el usuario no dude en autorizar a la aplicación para acceder a funciones de administración.
Certificados de seguridad que simulan datos verídicos
El certificado de seguridad con el que se encuentra firmado un APK nos permite determinar si la aplicación ha sido alterada. Aunque la mayor parte de los cibercriminales utiliza cadenas de texto genéricas al emitir el certificado, muchos se toman el trabajo de fingir datos que se corresponden con los utilizados por el desarrollador, yendo un paso más allá para intentar confundir a los usuarios que puedan realizar estas comprobaciones.
Técnicas dedicadas a complicar el análisis
Múltiples funcionalidades en un mismo código
Una tendencia dentro del ámbito móvil que ha ganado relevancia en los últimos años es combinar lo que solían ser diferentes tipos de malware dentro de un único ejecutable. LokiBot es un ejemplo de ello: este troyano bancario intenta pasar desapercibido el mayor tiempo posible para robar información del terminal; pero, cuando el usuario intenta quitarle los permisos de administrador para desinstalarlo, activa su funcionalidad de ransomware cifrando los archivos del equipo.
Apps escondidas
La utilización de droppers y downloaders, es decir, encerrar el código malicioso dentro de otro APK o descargarlo de Internet, es una estrategia que no solo se limita a malware para laptops y ordenadores, sino que también es universalmente utilizada por los escritores de códigos maliciosos móviles.
A medida que el aquel entonces llamado Google Bouncer complicaba a los cibercriminales el poder subir malware a la tienda oficial, los atacantes optaron por incluir este tipo de comportamientos para intentar saltar los controles… ¡y funcionó! Al menos por un tiempo…
Desde ese momento, estas dos formas de codificación de malware se sumaron al portfolio de técnicas maliciosas más utilizadas.
Múltiples lenguajes de programación y código volátil
Frecuentemente surgen nuevos frameworks de desarrollo multiplataforma y nuevos lenguajes de programación. Qué mejor manera para despistar a un analista de malware que combinar lenguajes y entornos de desarrollo, por ejemplo, diseñando apps con Xamarin o utilizando código Lua para ejecutar comandos maliciosos. Esta estrategia cambia la arquitectura final del ejecutable, añadiendo niveles de complejidad.
Algunos atacantes suman a este combo la utilización de carga dinámica de scripts o porciones de código que son descargados de servidores remotos y eliminados tras su utilización. Por tanto, una vez que el servidor ha sido dado de baja por el cibercriminal, no se puede conocer con exactitud qué acciones realizó el código en el equipo.
Muestras con estas características comenzaron a aparecer hacia fines del año 2014, cuando investigadores publicaron análisis de malware particularmente complejo.
Malware sinérgico
Una alternativa para complicar el análisis de una muestra es dividir la funcionalidad maliciosa en un conjunto de aplicaciones capaces de interactuar entre sí. De este modo, cada aplicación posee un subconjunto de permisos y de funcionalidad maliciosa, y luego interactúan entre ellas para cumplir un propósito ulterior. Por otro lado, para que el analista comprenda la verdadera función del malware, debe hacerse de todas las apps individuales como si fuesen piezas de un rompecabezas.
Aunque no se trata de una estrategia comúnmente utilizada, ya se han visto muestras que exhiben este tipo de comportamiento, como lo demostró recientemente una presentación en Virus Bulletin.
Covert channels y nuevos mecanismos de comunicación
Para comunicarse con el C&C o con otras apps maliciosas, el malware necesita transferir información. Esto puede hacerse mediante canales abiertos tradicionales o canales encubiertos (protocolos de comunicación personalizados, intensidad de brillo, wake locks, utilización de la CPU, espacio libre en memoria, niveles de sonido o vibración, acelerómetros, entre otros).
Además, en los últimos meses hemos visto cómo los ciberdelincuentes utilizan redes sociales para transferir mensajes de C&C, como es el caso de Twitoor, la botnet que utiliza cuentas de Twitter para enviar comandos.
Otras formas de antianálisis
La utilización de empaquetado, antiemulación, antidepuración, cifrado y ofuscación, entre otras técnicas de evasión, es muy común en malware para Android. Para saltar este tipo de protecciones podemos utilizar hooking de funciones, quizás mediante aplicaciones como Frida.
También podemos usar entornos de análisis que por defecto intenten esquivar estos controles, como MobSF –que incluye algunas técnicas anti-antiemulación–, AppMon o Inspeckage –donde, por ejemplo, pueden verse las cadenas de texto plano antes y después de ser cifradas, junto a las claves utilizadas–.
Para prevenir infecciones, no olvides chequear estos comportamientos potencialmente maliciosos y entérate cómo saber si tu teléfono ha sido comprometido.