Detectar de manera proactiva la existencia de códigos maliciosos que busquen atacar a dispositivos corriendo sobre el sistema operativo Android resulta un proceso complicado gracias a una combinación de diferentes factores.

En particular, los componentes y permisos definidos en las interfaces del sistema pueden ser igualitariamente utilizados con fines legítimos o maliciosos. Es decir, nos es imposible tomar una larga lista de permisos a aceptar como referente inexorable de comportamiento malintencionado.

A través de algo tan sencillo como la superposición de componentes de desarrollo y algún que otro permiso, los cibercriminales pueden robar datos privados o ganar el control remoto del sistema. Aún más, existe una variante de tipo de ataques que permite al cibercriminal esconder sus actividades para así descargar otras amenazas o cambiar la configuración del sistema, lo que conocemos como tapjacking.

Secuestrando los toques del usuario

El tapjacking 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 éstos están siendo verdaderamente desviados a la actividad subyacente, que permanece oculta a su vista.

Las consecuencias de estos ataques pueden generar verdaderos estragos. A través de este mecanismo, un atacante puede distribuir oficialmente una aplicación popular que peticione pocos permisos, como puede ser un juego de moda, y forzar por detrás la instalación de otras aplicaciones que de otra manera terminarían despertando la desconfianza del usuario debido a la larga lista de permisos requeridos. Todo esto, bajo el desconocimiento de quien está utilizando el terminal.

Este comportamiento es posible con la utilización de un tipo de actividad de alerta (TYPE_SYSTEM_ALERT) disponible en la API del sistema. Para poder desplegar estas actividades, la aplicación deberá peticionar permisos especiales en su manifiesto (SYSTEM_ALERT_WINDOW), los cuales deberán ser aceptados oportunamente por los usuarios.

El atacante puede configurar además otro tipo de parámetros para determinar los eventos que serán o no capturados por la actividad. En particular, el parámetro FLAG_NOT_TOUCH_MODAL determinará que todos los eventos sean transmitidos a la actividad subyacente.

image_3

Este tipo de debilidades en la interacción entre aplicaciones puede terminar con la realización de cambios en la configuración del sistema, de acciones en nombre del usuario en aplicaciones previamente instaladas, o con la descarga e instalación de otras amenazas informáticas desde diversas fuentes, ya sea desde internet o desde la misma Play Store.

En la siguiente imagen podemos observar una demostración, en la cual un hipotético juego distribuido a través del mercado oficial para aplicaciones en Android inicia imperceptiblemente la instalación de Twitter y acepta los permisos necesarios. En las figuras de la izquierda vemos lo que se presentaría al usuario por pantalla, mientras a la derecha observamos con un fondo transparente qué acciones van teniendo lugar de manera camuflada.

image_4

Incluso, este tipo de actividades de alerta del sistema que se mantienen siempre sobre otras puede terminar siendo utilizadas para la producción de ransomware.

Diálogos para el robo de información confidencial

La superposición de actividades ha sido y es una de las técnicas más utilizadas por los ciberdelincuentes para el robo de credenciales en Android. En este esquema, el malware monitorea constantemente el nombre del paquete de la actividad que actualmente está siendo desplegada al usuario, hasta que éste coincida con el nombre del paquete de la aplicación objetivo. Entonces, despliega un diálogo propio con la estética de la aplicación legítima, peticionando las credenciales al usuario.

Al desencadenar el comportamiento malicioso sólo cuando el usuario ha voluntariamente iniciado la app genuina, el atacante logra reducir las sospechas, consiguiendo que el usuario brinde voluntariamente sus credenciales crediticias.

Una muestra que ejemplifica esta conducta es Android/Jagonca.A. Este malware busca robar números de tarjetas de crédito simulando ser la Google Play Store, como así también credenciales de autenticación para dos entidades bancarias en particular.

La imagen siguiente nos permite observar el fragmento de código que continuamente evalúa la actividad que está siendo mostrada en pantalla.

image_1

Como consecuencia, despliega las actividades fraudulentas correspondientes a los diálogos pertinentes según la aplicación que haya iniciado el usuario.

image_2

Cabe destacar que, en el caso anteriormente ejemplificado, el usuario interactúa directamente con el cuadro de diálogo mostrado, pudiendo percatarse de la estafa.

¿Cómo podemos protegernos?

Hemos visto como aplicaciones aparentemente inocentes pueden ser utilizadas para descargar en nuestros equipos móviles otros ejecutables con comportamientos perjudiciales. Ahora, sabemos que debemos tener cuidado cuando aceptemos permisos que permitan la utilización de ventanas de alerta del sistema, evaluando si realmente confiamos en el desarrollador del aplicativo.

También debemos actualizar nuestras plataformas móviles siempre que podamos, con el objeto de incorporar las últimas barreras de protección que nuevas interfaces brindan a los usuarios finales. Para más información, accedan a nuestra Guía de Seguridad en Android.