Seguridad Informática

Cerberus y Alien: La historia del Malware que pone en jaque a Android

El malware para Android más complejo de los últimos años liberó su código fuente y actores malintencionados ya tienen su propia versión, motivados fuertemente por la ganancia económica. ¿Es este el año del malware en smartphones?

El 2020 es el año de la rata, y no estamos hablando precisamente del horóscopo Chino. Según varios investigadores en ciberseguridad, este 2020 ha visto un aumento explosivo en RATs o “troyanos de acceso remoto” (por sus siglas en inglés). 

Esta amenaza no es menor: un RAT puede tomar control de tu equipo de la misma forma en que un administrador remoto lo haría normalmente, usando herramientas como TeamViewer o VNC. En este caso, se trata de un control malicioso: un RAT busca robar tus credenciales con el objetivo de realizar fraudes bancarios o de identidad.

Sin embargo, y con la migración de los usuarios de PCs al mundo móvil, los hackers hicieron lo suyo. Ahora existe toda una serie de malwares enfocados al robo de credenciales bancarias y de suplantación de identidad, especialmente diseñados para teléfonos con el sistema operativo Android. Estos RATs han alcanzado un alto nivel de sofisticación, y en su mayoría se ofrecen en la modalidad de “malware como servicio”, o MaaS.

Entre 2019 y 2020 estos ataques se han vuelto cada vez más comunes. Nombres como Anubis, Hydra, Ginp o Gustuff aparecen en todas las listas de malware móvil de manera recurrente. Sin embargo, el que ha dominado la palestra este año –por diferentes razones– es Cerberus: una rata capaz de dar pesadillas.

Cerberus, la “RAT-a de dos patas”

Y con justa razón: Cerberus es un malware de Android altamente sofisticado, en circulación desde el año 2019. Ha sido distribuído de manera activa en foros de la dark web, en un formato “malware-como-servicio”. Por una suma entre $4.000 y $12.000 dólares, los grupos cibercriminales capaces de pagarlo han tenido todas las herramientas del malware a su disposición. Y con herramientas, nos referimos a un sótano del infierno.

Cerberus fue concebido como un malware bancario común y corriente, y al ver el éxito de Anubis entre los cibercriminales, el equipo decidió integrar herramientas de RAT en su arsenal. Su víctima son las apps bancarias dentro de tu móvil, pero su funcionalidad es mucho más compleja. Como todo troyano de acceso remoto que se precie, Cerberus es capaz de realizar vigilancia dentro de tu equipo, interfiriendo en las comunicaciones encriptadas que el teléfono tiene con aplicaciones de diversa índole, y hacia el exterior.

Esto quiere decir que Cerberus puede interceptar y robar el patrón de desbloqueo o el PIN de tu teléfono, además de los números del Autenticador de Google, y cualquier SMS necesario para efectuar una verificación de dos pasos. Asimismo, el malware puede interponerse entre la app de tu banco y tú a través de un ‘overlay’, el método más común para realizar un ataque de phishing. En síntesis, Cerberus puede entrar a tu equipo, extraer todos los datos necesarios para realizar un fraude bancario, y esperar el mejor momento para llevarse el dinero de tu cuenta. Todo sin que tú hagas nada más que usar tu equipo de manera totalmente normal.

De pesadilla.

Cerberus y sus funcionalidades complejas

Respecto a lo que Cerberus puede hacer, es preciso señalar dos posibilidades complejas dentro de su funcionalidad. Ya mencionamos que Cerberus es un RAT, pero para lograr tal control del teléfono, es necesario tener una vulnerabilidad dominada. En este caso, se trata del Servicio de Accesibilidad de Android.

Dicho servicio, que en condiciones normales asiste a los usuarios con discapacidad en ciertas aplicaciones, es abusado por Cerberus para entregarse más permisos sin la interacción del usuario. Teniendo el control de los Servicios de Accesibilidad, el malware procede a asegurar su persistencia de distintas maneras, ya sea desactivando Play Protect o eliminándose de las aplicaciones en uso.

Por otro lado, Cerberus es capaz de generar una instancia de TeamViewer en el móvil, y por medio de los permisos de Accesibilidad ya mencionados, autorizar dicha sesión mientras el equipo está en uso, todo esto sin interacción por parte del usuario. 

Este es el código responsable de la inicialización de TeamViewer:

String runningPackage = this.lowerPkgName;
if(getNodeFromEvent.contains("com.teamviewer.host.market")) {
    AccessibilityNodeInfo username = AcccesibilityUtils.getNodeFromEvent(event, "com.teamviewer.host.market:id/host_assign_device_username");
    AccessibilityNodeInfo password = AcccesibilityUtils.getNodeFromEvent(event, "com.teamviewer.host.market:id/host_assign_device_password");
    AccessibilityNodeInfo submit = AcccesibilityUtils.getNodeFromEvent(event, "com.teamviewer.host.market:id/host_assign_device_submit_button");
    if(username != null) {
        this.teamviewerUsername = this.utils.readShPrStr(this, this.strings.connect_teamviewer);
        if(!this.teamviewerUsername.isEmpty()) {
            this.teamviewerPassord = this.utils.readShPrStr(this, this.strings.password);
            this.credsSubmitted = false;
            this.passwordFilled = false;
            this.userFilled = false;
            this.permissionStatus = 0;
            this.utils.writeShPrStr(this, this.strings.connect_teamviewer, "");
            this.utils.writeShPrStr(this, this.strings.password, "");
        }
    }

    if(this.permissionStatus == 0) {
        AccessibilityNodeInfo v7_7 = AcccesibilityUtils.getNodeFromEvent(event, "com.teamviewer.host.market:id/action_bar_root");
        if(v7_7 != null && AcccesibilityUtils.getNodeFromEvent(event, "com.teamviewer.host.market:id/buttonPanel") != null) {
            this.permissionStatus = 1;
            AccessibilityNodeInfo tmButton = AcccesibilityUtils.getNodeFromEvent(event, "android:id/button1");
            if(tmButton != null) {
                this.acc_utils.clickButton(tmButton);
            }

            AccessibilityNodeInfo klmCheckBox = AcccesibilityUtils.getNodeFromEvent(event, "com.samsung.klmsagent:id/checkBox1");
            AccessibilityNodeInfo klmConfirm = AcccesibilityUtils.getNodeFromEvent(event, "com.samsung.klmsagent:id/btn_confirm");
            if(klmCheckBox != null && this.permissionStatus == 1) {
                this.acc_utils.clickButton(klmCheckBox);
                this.acc_utils.clickButton(klmConfirm);
                this.permissionStatus = 2;
                Utils utils = this.utils;
                utils.launchPkg(this, "com.teamviewer.host.market");
            }
        }
    }

    if(!this.teamviewerUsername.isEmpty() && !this.teamviewerPassord.isEmpty()) {
        if(username != null && !this.userFilled) {
            this.acc_utils.setInput(username, this.teamviewerUsername);
            this.userFilled = true;
        }

        if(password != null && !this.passwordFilled) {
            this.acc_utils.setInput(password, this.teamviewerPassord);
            this.passwordFilled = true;
        }

        if((this.userFilled) && (this.passwordFilled) && !this.credsSubmitted) {
            this.permissionStatus = 0;
            this.acc_utils.clickButton(submit);
            this.credsSubmitted = true;
            String v0_9 = this.utils.readShPrStr(this, this.strings.hidden);
            if(v0_9.equals("true")) {
                this.goBack();
            }
        }
    }
} 

Desde ese punto, y en el momento en que el servidor C2 tenga los datos del equipo, el resto de funcionalidades queda a disposición de los atacantes de manera remota. Abusando tanto del Servicio de Accesibilidad como de la sesión de TeamViewer, Cerberus es capaz de mucho. Entre sus posibilidades, se cuentan:

  • Un keylogger
  • Listado, recuperación, envío y reenvío (forwarding) de SMS
  • Desvío o transferencia de llamadas
  • Instalación y borrado de apps
  • Bloqueo y desbloqueo de la pantalla (sin interacción del usuario)
  • Recolección de datos del dispositivo
  • Listado de las aplicaciones del dispositivo
  • Recolección y extracción de archivos del dispositivo
  • Ataques de phishing a través de ‘overlays’ precargados
  • Diversas reacciones de protección, como la detección de emulación

La accidentada historia de Cerberus

Como mencionamos, Cerberus lleva un buen tiempo en el mercado, para detrimento de usuarios y bancos por igual. Sin embargo, hay dos razones por las cuales es ahora una creciente preocupación: por un lado, la rápida evolución de sus funcionalidades y por otro, la liberación de su código fuente.

Cerberus nació el año 2019 como una suite mayormente de espionaje. Si bien su diseño la hacía capaz de realizar fraudes bancarios, en ese entonces el malware no tenía el nivel de sofisticación necesario para robar datos de autenticación de dos pasos (2FA) como los de Google Authenticator. Sin embargo, un reporte de ThreatFabric analizó la segunda versión del malware a principios del 2020. Cerberus v2 estaba todavía en desarrollo por el mismo equipo euroasiático que lo trajo a la vida, con funcionalidades cada vez más poderosas.

Meses más tarde, un equipo de Avast realizó un hallazgo inquietante. Una aplicación para el mercado español, llamada “Calculadora de Moneda”, contenía código malicioso relativo a Cerberus en su APK. Lo peor: dicha aplicación estaba alojada en la Play Store de Google, la que supuestamente contiene aplicaciones de fuentes legítimas y seguras.

Sin embargo, y luego de semanas en hibernación, una conexión de Calculadora de Moneda a los servidores C2 de los atacantes activó dicho código en los equipos que la descargaron. La aplicación luego descargó otro APK que contenía Cerberus, y los smartphones quedaron infectados con el malware.

El equipo de Cerberus se fue fragmentando con el pasar de los días. En julio, los desarrolladores decidieron dejar el proyecto en manos de quién pudiera pagarlo. Los operadores decidieron subastar todo: los servidores, el código fuente de la APK maliciosa, y los códigos del panel de administrador además de los módulos. Con una ganancia de $10.000 dólares por cliente, los creadores de Cerberus prometían a sus potenciales compradores recuperar la ganancia en poco tiempo.

Sin embargo, la falta de interés –o de compradores dispuestos a pagar esa suma– puso en riesgo la venta. Lo peor ocurrió un par de semanas después. Dmitry Galov, investigador en ciberseguridad, reveló que la subasta había fallado y que los operadores de Cerberus tomaron la decisión de liberar el código fuente del malware. Esto abría la puerta al peor escenario posible: que otros desarrolladores tomaran Cerberus y lo transformaran en algo peor.

Alien entra, Cerberus se va

Pasaron menos de dos semanas para que otro MaaS se llevara la corona. Alien, considerado por los expertos como un ‘fork’ a toda regla de Cerberus, entró agresivamente al mercado tras la caída de su antecesor.

Un reporte de ThreatFabric asegura que si bien Alien proviene de una versión diferente a la liberada, conserva muchas de las funciones que hacen peligroso a este tipo de malware. En primer lugar, es un RAT muy depurado y con muchísimas funciones. También es capaz de ejecutar su propia instancia de TeamViewer, y de mostrar logins falsos para más de 226 aplicaciones. Entre ellas no sólo hay aplicaciones de banca, sino redes sociales, correo electrónico e incluso populares billeteras de criptomonedas.

Alien se distribuye de la misma manera que Cerberus en sus inicios, a través de foros de malware en la dark web. Su precio aún no se han publicado, pero se cree que sería similar a Cerberus dada la similitud en funcionalidad.

Conclusiones

El panorama del malware en smartphones se está volviendo más complejo a medida que avanza el 2020. Actores maliciosos se aprovechan de vulnerabilidades autorizadas por el usuario para entrar a nuestros móviles, y luego explotar todas las avenidas para lograr ganancia económica. Esta práctica ha generado un mercado muy rentable, uno del que todos los usuarios de Android pueden ser víctimas.

Las recomendaciones ante una amenaza así de organizada son sencillas. Primero y principal, revisar toda aplicación instalada en nuestros equipos con Android, en especial los permisos solicitados. Asimismo, e incluso si es usado por muchas aplicaciones de manera totalmente legítima, es necesario poner atención especial si una aplicación sospechosa necesita acceso a los Servicios de Accesibilidad de Google.

En esa misma línea, surge la necesidad de educar a los usuarios sobre los riesgos de este tipo de malware, ya sean personales o laborales. No hay que olvidar que aunque existan fuertes motivaciones económicas, malware como Cerberus sigue siendo una poderosa herramienta de espionaje. La convivencia de datos privados en nuestros móviles bien puede ser un vector de ataque para nuestras organizaciones.

riesgo movil
Sobre el autor

Norman Gutiérrez

Norman Gutiérrez is our Security Researcher at Prey, one of the leading companies in the security and mobility industry, with more than 8 million users worldwide. In addition to this, Norm is Prey's Content and Communication Specialist, and our Infosec ambassador. Norm has worked for several tech media outlets such as FayerWayer and Publimetro, among others. In his free time, Norman enjoys videogames, cool gadgets, music, and fun board games.