La mayoría de los grupos organizados de ciberdelincuentes tienen motivaciones económicas. El paso de la banca por Internet a la banca móvil convierte a las aplicaciones bancarias móviles en los principales objetivos de los ciberdelincuentes. Cuantas más personas utilicen aplicaciones móviles para realizar transacciones bancarias, más atención atraerán los adversarios y más ciberataques se llevarán a cabo. 

En cuanto a los métodos utilizados contra las aplicaciones bancarias móviles, los datos de inteligencia de amenazas de Verimatrix muestran que infectar a los usuarios móviles con malware supera a cualquier otra amenaza en el ecosistema Android, y el malware es sin duda el principal vector de ataque utilizado in the wild. 

Los troyanos bancarios para Android (ABT) son malware especialmente diseñado para atacar aplicaciones bancarias. Su objetivo es robar la máxima cantidad de dinero de las cuentas bancarias de las víctimas. Para lograr su objetivo tras acceder a los dispositivos de las víctimas, la primera medida de seguridad para detener a los troyanos bancarios son las credenciales de inicio de sesión bancaria. 

Los ataques por superposición son tradicionalmente la técnica más común para superar este obstáculo. Se basan únicamente en el abuso del servicio de accesibilidad. Este post se centra en la base técnica de los ataques de superposición. Otras técnicas de robo de credenciales utilizadas por los troyanos bancarios se analizarán en un próximo post.

Accesibilidad Servicio Abuso

La API de servicios de accesibilidad de Android está diseñada para ayudar a las personas con discapacidad a utilizar dispositivos y aplicaciones Android. Ofrece formas de consultar el contenido de la ventana activa en la pantalla e interactuar con él mediante programación. A lo largo de los años, también se ha utilizado para el control manos libres de las apps, por ejemplo, mientras se conduce o se cocina, o para pruebas automatizadas de interfaces de usuario (UI) distintas de su propósito original. 

Los ciberdelincuentes tampoco tardaron en descubrir y abusar de la API del servicio de accesibilidad. Aunque la primera aparición data de 2013 según los expertos en inteligencia de amenazas, hoy en día es una característica estándar de los troyanos bancarios.

Cuando se inicia la aplicación maliciosa, el primer objetivo del troyano es obtener el permiso del servicio de accesibilidad. Para convencer a la víctima, abre una ventana de aspecto legítimo en la pantalla, como se muestra en las figuras 1 y 2.

Vista de ejemplo de Hook ABT como aplicación móvil superpuesta.

Figura 1: Vista de una muestra de Hook ABT

Vista de muestra de Xenomorph ABT como superposición de aplicación móvil.

Figura 2: Vista de una muestra ABT Xenomorph

Al hacer clic en estas ventanas, la víctima accede a la configuración del sistema, donde concede a la aplicación maliciosa el permiso de accesibilidad necesario. A partir de ahí, la aplicación se concederá a sí misma todos los permisos restantes de forma automática mediante la explotación de la API de servicios de accesibilidad.

Ataque de superposición

Un ataque de superposición presenta una ventana de phishing sobre una aplicación bancaria y espera que la víctima no la reconozca. La ventana de phishing suele ser idéntica a la página de inicio de sesión de la aplicación bancaria, y se activa rápidamente cuando el usuario inicia la aplicación bancaria, lo que engaña a la víctima para que escriba las credenciales bancarias y/o la información de la tarjeta de crédito en la ventana superpuesta. A continuación, un troyano bancario transfiere inmediatamente los datos capturados al servidor de mando y control (C2). 

Las aplicaciones bancarias móviles son el objetivo principal de los ataques de superposición, pero en los últimos años se han añadido rápidamente a la lista de objetivos muchas aplicaciones de monederos digitales y de comercio de criptomonedas debido a su creciente popularidad. Otras aplicaciones habituales son las de correo electrónico, mensajería, redes sociales, compras, entretenimiento, transporte, viajes y restaurantes. Curiosamente, las marcas locales más populares también resultan ser objetivos en regiones donde la actividad del malware móvil es elevada.

El siguiente vídeo muestra el aspecto real de un ataque por superposición.

Un vídeo que muestra cómo es un ataque por superposición en la vida real.

Aplicación

Explicaremos la implementación del ataque por superposición con el ejemplo de un troyano bancario de última generación: Hook. La implementación es prácticamente la misma en diferentes troyanos bancarios. Los fragmentos de código que aparecen a continuación se han reducido intencionadamente para que sean más visibles.

El siguiente código es responsable de detectar el cambio en la ventana en primer plano. Esta es la parte en la que se hace un mal uso del servicio de accesibilidad para el ataque por superposición. El sistema Android interrumpe el troyano bancario a través de la función de devolución de llamada anulada onAccessibilityEvent(*), que se llama cuando se produce un evento en la pantalla. TYPE_WINDOW_STATE_CHANGED indica un cambio en la sección visualmente distinta de la pantalla; por ejemplo, el usuario lanzó una aplicación bancaria y ésta se apoderó de la pantalla.

Parte 1 de una explicación de los expertos de Verimatrix sobre cómo puede establecerse un ataque de superposición en el código de una aplicación.

El siguiente código es responsable de comprobar si una aplicación objetivo se inicia en primer plano y desencadenar el ataque de superposición si es cierto:

Segunda parte de una explicación de los expertos de Verimatrix sobre cómo puede establecerse un ataque de superposición en el código de una aplicación.

El siguiente código es responsable de iniciar una nueva tarea en primer plano:

Tercera parte de una explicación de los expertos de Verimatrix sobre cómo puede establecerse un ataque de superposición en el código de una aplicación.

El siguiente código se encarga de cargar la web inject/overlay (archivo HTML) correspondiente a la aplicación de destino en una vista web, actualizar la configuración de idioma predeterminada de la superposición en función de la configuración de idioma del usuario y añadir una interfaz javascript para recibir datos de la superposición.

Cuarta parte de una explicación de los expertos de Verimatrix sobre cómo puede establecerse un ataque de superposición en el código de una aplicación.

La función returnResult(*) o send_Log_injects(*) se llama dentro del archivo HTML en la WebView para pasar datos al troyano bancario.

Quinta parte de una explicación de los expertos de Verimatrix sobre cómo puede establecerse un ataque de superposición en el código de una aplicación.

El siguiente código inicia la transferencia de datos a un servidor remoto de mando y control (C2).

Sexta parte de una explicación de los expertos de Verimatrix sobre cómo puede establecerse un ataque de superposición en el código de una aplicación.

La implementación de los ataques de superposición depende únicamente del permiso BIND_ACCESSIBILITY_SERVICE. Los permisos REQUEST_IGNORE_BATTERY_OPTIMIZATIONS y RECEIVE_BOOT_COMPLETED también son útiles para el funcionamiento fiable de troyanos bancarios, que se utilizan indirectamente en los ataques por superposición.

Contramedidas Android

Por lo que sabemos, el sistema operativo Android aún no dispone de una solución para detener por completo los ataques de superposición.

En Android 12, se introduce el atributo AccessibilityTool. Este atributo muestra una advertencia para avisar a los usuarios de que una aplicación, no declarada como herramienta de accesibilidad, dispone de permisos de accesibilidad potentes 24 horas después de haberlos concedido. Tanto si los usuarios se toman en serio esta advertencia y revocan los permisos como si no, sigue existiendo una ventana de 24 horas que puede ser aprovechada. 

En Android 13, se impide que las aplicaciones cargadas lateralmente obtengan permisos de accesibilidad. Realiza un seguimiento de los métodos de instalación de aplicaciones y bloquea las aplicaciones instaladas no basadas en sesión para que no obtengan permisos de accesibilidad. Por ejemplo, al hacer clic en el archivo APK (Android Package Kit) descargado de la web, normalmente se activa la instalación no basada en sesión, mientras que las tiendas de aplicaciones suelen admitir la instalación basada en sesión. Esta contramedida no detiene el malware instalado desde las tiendas de aplicaciones, así como el malware desplegado por una aplicación intermedia, también conocida como aplicación dropper. La aplicación dropper implementa una instalación basada en sesión para cargar la aplicación maliciosa y eludir las restricciones. Los usuarios también pueden ser engañados para permitir la configuración restringida en el menú de información de la aplicación que explícitamente exime a la aplicación de esta contramedida.

En Android 14, el atributo accessibilityDataSensitive en Vista se introduce. La clase View es el bloque de construcción básico para los componentes de la interfaz de usuario (UI). El nuevo atributo permite a los desarrolladores dejar que solo las herramientas de accesibilidad interactúen con las partes críticas de la interfaz de usuario. Sin embargo, los ataques de superposición no interactúan con la interfaz de usuario de la aplicación atacada. Detecta que el usuario inicia una aplicación y extrae únicamente el nombre del paquete de esa aplicación a partir de un evento de accesibilidad. Por tanto, esta contramedida no afecta a los ataques de superposición. Sin embargo, sí afecta a otras funciones básicas de los troyanos bancarios avanzados, como el registro de pulsaciones de teclas y los sistemas de transferencia automática (ATS).

Conclusión

Está muy extendido que los ABT realicen ataques por superposición debido a su sencillez, eficacia y escalabilidad. A continuación se ofrece una breve lista de ABT infames y su capacidad de ataque por superposición. Todas ellas admiten el ataque por superposición que permite el abuso de servicios de accesibilidad. Se trata de un elemento central de cualquier caja de herramientas de un adversario.

Troyano bancario Android (ABT) Accesibilidad Servicio Abuso Ataque de superposición
Alien
Anatsa (Teabot)
Cerberus
ERMAC
Gustuff
Gancho
Hydra
Octo (ExobotCompact, Coper)
Xenomorfo

Otro buen indicador de la omnipresencia de los ataques de superposición es la actividad del mercado de la web oscura InTheBox. Se trata de la mayor tienda especializada en overlays (archivos HTML) para diversos ABT. Trabaja por encargo para crear nuevas superposiciones, y esos pedidos cumplidos se ofrecen finalmente a todo el mundo con un precio de 30 dólares. En un año, se pusieron a la venta 225 nuevos objetivos para Alien/ Octo/ ERMAC/ Metadroid/ Hook y 52 nuevos objetivos para Hydra. 

Gráfico lineal que muestra el número de superposiciones encontradas en el mercado InTheBox a partir de noviembre de 2022.

Verimatrix XTD detecta con gran precisión los ataques superpuestos y el abuso de los servicios de accesibilidad. Hoy en día, la función antimalware es una necesidad para que las aplicaciones de banca móvil se defiendan de los sofisticados grupos de ciberdelincuentes, y XTD aporta las funciones antimalware necesarias a cualquier aplicación móvil.