Publicado el código fuente de Cerberus


En las últimas semanas se ha hecho público el código del troyano bancario para Android Cerberus, sobre el que ya hemos hablado en varias ocasiones.

Introducción

Después de que su desarrollador principal hiciese público en un foro underground que no se seguiría manteniendo el proyecto, éste acabó compartiendo el código fuente con sus clientes y finalmente con todos los usuarios premium de dicho foro.

Gracias a esta decisión, ahora es posible ver por completo la funcionalidad que incluye este malware más allá de la conocida a través del análisis de las muestras detectadas.

cerberus-code-01

Mensaje del desarrollador principal

Más que el código de la propia aplicación maliciosa, es interesante el análisis del código que se ejecuta en el servidor de control. Al fin y al cabo, el análisis de las muestras ya ha proporcionado gran información sobre el funcionamiento del malware, sin embargo, esta es la primera vez que disponemos del código que ejecuta el servidor y es interesante conocer si más allá del registro de las credenciales robadas hay algún tipo de mecanismo automatizado para utilizarlas.

Código de la aplicación

 Como decimos, el análisis del código fuente de la aplicación maliciosa no es lo más interesante, aunque obviamente permite obtener una idea mucho más clara del funcionamiento de este malware, además de que podría servir para descubrir funcionalidades ocultas o, en función de la versión del código, funciones que no se habían introducido en las versiones finales y estaban en desarrollo. 

Una de las partes más interesantes de revisar en el código es el protocolo de comunicación con el servidor de control, ya que al tener acceso al código fuente es más sencillo desarrollar pequeños programas o scripts que simulen la aplicación y se comuniquen con el servidor de control para obtener información sobre la campaña actual. Incluso se puede reutilizar directamente parte del código para el desarrollo de herramientas útiles para el análisis de posibles nuevas versiones.

cerberus-code-02

Código fuente del envío de información recopilada en la inyección con phishing bancario

Se puede ver claramente en el código fuente los nombres de las funciones de cifrado, que aunque se sabía de antes que se trataba de cifrado RC4, ahora es mucho más sencillo y claro de ver.

cerberus-code-03

Funciones de cifrado y codificación hexadecimal

En el código de la app podemos obtener también la lista completa de URLs utilizadas por el troyano para contactar con el servidor de control y realizar el envío de información robada. En la siguiente imagen podemos ver como se definen las URLs como constantes que serán utilizadas después en el código que realiza la petición con el envío de datos.

Las siguientes URLs corresponden a la primera versión del troyano, tal y como se puede comprobar en nuestro primer informe sobre este.

cerberus-code-04

URLs definidas como constantes

Código del servidor

En el lado del servidor encontramos la funcionalidad separada en dos elementos principales:

cerberus-code-05

  • gate: código PHP que se encarga de procesar las peticiones realizadas por los dispositivos infectados. Es el código del servidor que se encarga de las peticiones a las URLs indicadas en la sección anterior.
  • restapi: código PHP que implementa una API Rest que realiza consultas a la base de datos del servidor para responder a las peticiones realizadas con los resultados correspondientes.

Si revisamos el script de instalación del servidor, podemos ver cómo se configuran dos sitios diferentes en NGINX, uno de ellos para gate en el puerto 80 y el otro para restapi en el puerto 8080.

Además, este último se configura para que sea accesible a través de la red TOR y no a través de la red habitual, de forma que solamente el atacante que conozca el dominio ONION debería ser el único capaz de hacer peticiones a la API.

El acceso al código fuente del servidor podría revelar, además de funcionalidad oculta, fallos de seguridad en el código que podrían utilizarse para tomar el control de la botnet por parte de otros atacantes o por parte de analistas y autoridades para desarticularla.

Una de las vulnerabilidades que podríamos encontrar son vulnerabilidades de inyección SQL en las consultas a la base de datos, sin embargo, parece que los desarrolladores han sido cuidadosos y utilizan los ‘prepared statements’ de la librería de PHP, lo que evita este tipo de vulnerabilidades, al menos, en la parte gate.

cerberus-code-06

Código encargado de añadir un nuevo dispositivo infectado a la base de datos

Además del código de la aplicación maliciosa y del backend, en el repositorio de código encontramos también el código del panel utilizado por los administradores de cada botnet Cerberus. Dicho panel se trata de una aplicación ReactJS que se conecta a la API Rest expuesta a través de la red TOR.

La aplicación ReactJS del panel parece que debe ser ejecutada en el ordenador del administrador de la botnet cuando desee administrarla, por lo que si se realiza un estudio del código podrían aparecer vulnerabilidades de seguridad que podrían permitir incluso la ejecución remota de código en el ordenador del administrador.

En varias zonas del código encontramos llamadas a la función try_eval, que permite ejecutar código JavaScript:

cerberus-code-07

Si dicha función se está utilizando con parámetros que proceden de la base de datos de dispositivos infectados y sin filtrar ciertos caracteres, estos podrían utilizarse para ejecutar código JavaScript en la aplicación ReactJS y en el sistema del atacante. Durante nuestro estudio no se ha detectado ninguna vulnerabilidad que permita explotar esta función.

Conclusiones

La publicación del código fuente de uno de los troyanos bancarios para Android más populares de este año es algo positivo y negativo al mismo tiempo. Por un lado el final del soporte de este banker hace que muera el proyecto original, lo que en principio supone un actor menos en el juego del malware bancario.

La lista de entidades afectadas se mantiene sin cambios, todo sigue tal y como lo describimos en nuestro análisis de Cerberus y en nuestra posterior actualización sobre la nueva versión de Marzo.

Además, permite intuir que quizás este tipo de negocio no sea tan rentable para sus desarrolladores, ya que no dejarían el proyecto si realmente fuese rentable e interesante para ellos.

Por otro lado tenemos la parte negativa, y es que la publicación del código fuente abre la puerta a nuevos desarrolladores para crear nuevos bankers basados en Cerberus, lo que significa que podrían aparecer en los próximos meses nuevas variantes o familias. Sin duda debemos estar atentos a nuevos bankers que puedan aparecer próximamente.

 

 


Comprueba como puede ayudarte nuestra solución a resolver los problemas de fraude online de tu empresa, solicita gratuitamente una DEMO ahora y te explicamos en detalle.

Solicita una DEMO

 

 

Publicado por David García

In his more than 9-year professional career, he has been involved in multiple projects, the most important being in the fields of managed security, anti-fraud and ethical hacking services, and malware analysis. He has contributed his know-how and security-related improvements to a wide variety of fraud and vulnerability analysis products. He currently oversees the smooth running of our different products and researches current fraud developments in order to showcase buguroo overseas as well as providing the development department with feedback on the latest malware and cybercriminal trends.


¿Te ha gustado? Comparte en tus comunidades sociales.

 
 

¿Necesitas reducir el fraude online de tu banco?

Descubre nuestra visión holística aplicada a la detección del fraude online

Solicita una demo