Seguridad

Cerberus llega a España y Latinoamerica

Cerberus, el reciente malware bancario para Android, afecta ahora a entidades bancarias españolas y latinoamericanas.

Imagen: ThreatFabric

Introducción

El miércoles 18 de septiembre llegó al laboratorio de Hispasec una nueva muestra del troyano bancario para Android ‘Cerberus’. Desde su lanzamiento en Junio de 2019, este malware bancario ha ido creciendo en popularidad poco a poco.

Sus desarrolladores no distribuyen las muestras para infectar a las víctimas, sino que venden el troyano el un foro ‘underground’ para que sean sus clientes los que, a través de una herramienta automatizada, construyan el APK malicioso que distribuirán a sus víctimas.

Este troyano tiene su propia cuenta de Twitter (https://twitter.com/androidcerberus), en la que sus desarrolladores publican las novedades incluidas en las nuevas versiones e incluso bromean con los analistas de malware más conocidos de la comunidad.

El hecho de que su popularidad vaya en aumento ha hecho que en la muestra detectada este miércoles se encuentren entidades bancarias españolas y latinoamericanas afectadas por primera vez. En pasadas versiones se habían descubierto entidades francesas y una japonesa.

Propagación

Tal y como suele ser habitual con este tipo de malware, es probable que la distribución del APK malicioso se haya realizado a través de páginas web fraudulentas.

Teniendo en cuenta que la aplicación maliciosa utiliza el logo de ‘Flash Player’ como icono y su nombre, probablemente se haya distribuido a través de una falsa web de videos que incita al usuario a instalar la aplicación como una falsa actualización de su reproductor.

Infección

Una vez que el usuario instala la aplicación maliciosa y la inicia por primera vez, ésta solicita al usuario que le de permisos de accesibilidad. Estos permisos permiten al malware recibir eventos generados por otras aplicaciones que se encuentren ejecutando en primer plano.

Vista con la solicitud de permisos de accesibilidad

Los permisos de accesibilidad se utilizan habitualmente para que ciertas aplicaciones proporcionen una mejor experiencia de usuario en caso de que el usuario tenga, por ejemplo, problemas de visión. De esta forma, estas aplicaciones pueden proporcionar funcionalidades de lectura del texto de la pantalla.

El motivo por el cual la aplicación maliciosa necesita este permiso es que le permite recibir eventos generados por la aplicación que se encuentra ejecutándose en primer plano, incluyendo el nombre de paquete de dicha aplicación. Con esta información, el malware es capaz de detectar cuando una aplicación es iniciada por parte del usuario, y de esta forma mostrar una ventana falsa solicitando las credenciales de acceso a la entidad bancaria.

Adicionalmente, los permisos de accesibilidad también son utilizados por este malware para protegerse y no ser desinstalado por el usuario. Los servicios de accesibilidad pueden simular eventos (toques en la pantalla, pulsación de botones, etc.), por lo que el malware detecta si el usuario está navegando por los ajustes del sistema e intentando desinstalar el troyano. En caso de que esto ocurra, la aplicación maliciosa envía eventos para salir de los ajustes y evitar su desinstalación.

Tras obtener los permisos de accesibilidad, este malware comienza la actividad maliciosa. La aplicación instalada realmente actúa a modo de ‘dropper’, ya que la funcionalidad de robo  y envío de datos se realiza a través de un módulo descargado del servidor de control. Podemos distinguir dos etapas:

  1. La aplicación ‘dropper’ desempaqueta un fichero .DEX que implementa una primera etapa encargada de comprobar el estado del dispositivo infectado, registrarlo en el servidor de control y descargar el módulo malicioso.
  2. Descarga del módulo malicioso (a través de la URL: http://[DOMINIO]/gate.php?action=getModule&data=[DATOS_DISPOSITIVO_CIFRADOS]. El módulo malicioso se trata de un fichero APK, aunque no se instala la aplicación en el dispositivo. En su lugar, el ‘dropper’ cargará dinámicamente las clases necesarias del APK. Este módulo incluye la funcionalidad necesaria para descargar y mostrar las inyecciones para cada entidad. Además incluye el resto de funciones de robo de datos que se explicarán a lo largo de este documento.

Funcionalidades para el robo de datos

Para el robo de credenciales bancarios, este troyano bancario sigue el mismo esquema de funcionamiento que el resto de troyanos bancarios, inyecciones basadas en ‘overlays’. El uso de ‘overlays’ es probablemente la técnica más efectiva, y quizá por ello la preferida por los atacantes, para el robo de credenciales bancarias en Android.

Una vez que la aplicación maliciosa contacta con el servidor para registrar el dispositivo, ésta envía la lista completa de aplicaciones instaladas. Como respuesta, el servidor de control responde con la lista de aplicaciones afectadas de entre todas las aplicaciones instaladas.

Petición al servidor de control para registrar el nuevo dispositivo
Petición al servidor de control para enviar la lista de aplicaciones instaladas

Como respuesta, la aplicación recibe una lista de aplicaciones afectadas de entre las instaladas. Una vez que la aplicación recibe esta lista de entidades afectadas, ésta se encarga de descargar una a una las inyecciones de cada aplicación afectada. Una vez descargada la inyección, se guarda para mostrarla posteriormente.

Código encargado de descargar las inyecciones

Como suele ser habitual en el malware bancario para Android, las inyecciones de Cerberus también están realizadas utilizando HTML y JavaScript. De esta forma, lo que descarga el malware no es más que un fichero HTML que mostrará posteriormente utilizando una ‘WebView’.

Para mostrar la ‘WebView‘ con la falsa web solicitando los datos de usuario, esta aplicación se instala solicitando al usuario que le dé permisos de accesibilidad. Estos permisos le permiten recibir eventos en un servicio ejecutando en segundo plano cada vez que el usuario abre un aplicación o realiza alguna acción en la aplicación.

Al recibir estos eventos, la aplicación maliciosa recibe información sobre la aplicación que se está ejecutando en primer plano. Esta funcionalidad es utilizada para determinar si la aplicación en ejecución es alguna de las afectadas. En caso de ser así, el troyano abrirá una nueva actividad con la ‘WebView’ y la web de phishing.

Inyección para la entidad afectada

Como se puede observar en la imágenes, todas las peticiones se realizan a una URL con la estructura “http://[DOMINIO]/gate.php?action=[COMANDO]&data=[DATOS CIFRADOS]”. El valor del parámetro ‘action’ para el envío de las credenciales robadas es ‘sendInjectLogs’, y en el parámetro ‘data’ se envía cifrado el identificador del paquete correspondiente a la entidad afectada y las credenciales de acceso.

Además del robo de datos bancarios, la aplicación maliciosa también incluye funcionalidad para enviar los SMS recibidos y la agenda de contactos. Para ello, guarda la lista de SMS y contactos en las preferencias compartidas de la aplicación y los envía posteriormente al servidor de control.

Código encargado de guardar los SMS para su posterior envío

Cifrado de peticiones

Como se ha comentado anteriormente, este malware implementa un algoritmo de cifrado que evita inspeccionar los datos enviados al servidor directamente. El algoritmo de cifrado utilizado se trata de RC4. La clave de cifrado es diferente para cada muestra y se almacena en las preferencias compartidas de la aplicación utilizando la clave “key”.

Resulta especialmente curioso el uso del algoritmo RC4 para el cifrado de los datos, ya que es el mismo algoritmo de cifrado utilizado por otro troyano bancario popular, ‘Anubis Bankbot’. Aunque sus desarrolladores afirman que Cerberus se ha desarrollado de cero, el uso de RC4 como algoritmo de cifrado, además del uso de PHP como lenguaje de programación en la parte del servidor y la similitud en las respuestas de algunas de las peticiones, hacen pensar que en mayor o menor medida este nuevo troyano podría estar basado en el código de Anubis Bankbot.

Entidades afectadas

Entre las entidades afectadas se encuentran las españolas Santander, BBVA, Bankia, Cajamar, Banco Sabadell, Ibercaja y Univia. Mientras que en latinoamerica afecta a entidades como Santander (Chile y Perú) y BBVA (Perú).

Conclusiones

Como hemos visto, Cerberus es uno de los troyanos bancarios para Android más recientes. Aún así, está ganando popularidad rápidamente, lo que supone que sus desarrolladores trabajen para incluir nuevas funcionalidades en su creación.

Esta nueva muestra no incluye novedades con respecto a sus funcionalidades, sin embargo, incluye un importante añadido: soporte para el robo de datos bancarios de entidades españolas. Es la primera muestra de Cerberus que se ha descubierto con inyecciones para entidades bancarias españolas.

Teniendo en cuenta la popularidad que ha ganado esta familia de malware, era un secreto a voces que pronto acabaría incorporando entidades españolas y latinoamericanas entre las afectadas. Debemos seguir alerta, ya que se espera que se incluyan nuevas entidades de todo el mundo con el paso del tiempo, además de nuevas funcionalidades.

Indicadores de compromiso

Si desea más información sobre los identificadores de compromiso y los hashes de la muestra, póngase en contacto con nuestro departamento de malware: malwaredept@hispasec.com

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.