Cerberus, el reciente malware bancario
para Android, afecta ahora a entidades bancarias españolas y latinoamericanas.
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.
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.
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.
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.
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.
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
Fuente: Hispasec