News

El troyano para Android más complejo

Román Unúchek, Antón Kívva

Hace poco nos llegó una aplicación de Android para analizarla. A primera vista nos dimos cuenta de que era especial. Todas las cadenas de caracteres del archivo DEX estaban codificadas, y el código estaba ofuscado.

Resulta que el archivo era un troyano multifuncional que podía hacer lo siguiente: enviar SMS a números Premium; descargar otros programas maliciosos, instalarlos en el equipo infectado o reenviarlos mediante Bluetooth; y ejecutar órdenes de forma remota en la consola. Los productos Kaspersky Lab detectan este programa malicioso como Backdoor.AndroidOS.Obad.a.

Los escritores de virus tratan de que los códigos de sus creaciones sean lo más complicados posibles para dificultar el trabajo de los expertos anti-malware. Aun así, es raro ver métodos de encubrimiento tan avanzados como los del malware para móviles de Odad.a. Es más, esta ofuscación completa del código no era lo único raro del nuevo troyano.

Las peculiaridades del troyano

Los creadores de Backdoor.AndroidOS.Obad.a encontraron un error en el popular programa DEX2JAR: los analistas suelen utilizar este programa para convertir archivos APK en un formato Java Archive (JAR) más conveniente. Esta vulnerabilidad detectada por los cibercriminales perjudica la conversión del bytecode de Dalvik en uno de Java, lo que eventualmente complica el análisis estadístico del troyano.

Los cibercriminales también encontraron un error en el sistema operativo Android relacionado con el proceso del archivo AndroidManifest.xml. Este archivo existe en cada aplicación de Android y se utiliza para describir la estructura de la aplicación, definir sus parámetros de lanzamiento, etc. El malware modifica AndroidManifest.xml de tal modo que no cumple con los estándares de Google, pero la explotación de esta vulnerabilidad permite que se siga procesando sin problemas en un smartphone. Todo esto hace que sea muy difícil ejecutar un análisis dinámico en el troyano.

Los creadores de Backdoor.AndroidOS.Obad.a también usaron otro error desconocido en el sistema operativo Android. Al explotar esta vulnerabilidad, las aplicaciones maliciosas consiguen privilegios extendidos de Administrador del Dispositivo sin aparecer en la lista de aplicaciones con estos privilegios. Por lo tanto, es imposible eliminar el programa malicioso del smartphone después de que consigue estos privilegios.

Por último, Backdoor.AndroidOS.Obad.a no tiene una interfaz y funciona en segundo plano.

Análisis del código

En esta aplicación maliciosa, todos los métodos externos se solicitan mediante reflexión. Todas las cadenas de códigos están codificadas, incluyendo los nombres de las clases y métodos.

Cada clase tiene un método descriptor local que consigue la cadena necesaria para la codificación de la selección de bytes actualizada localmente. Todas las cadenas se “esconden” en esta selección.

Las cadenas más importantes que contienen las direcciones de C&C pasan por una etapa de decodificación adicional. Para ello, el troyano primero revisa si hay acceso a Internet y después descarga la página facebook.com. Extrae algún elemento de esa página y lo utiliza como llave de decodificación. Por lo tanto, Backdoor.AndroidOS.Obad.a sólo puede decodificar las direcciones de C&C cuando tiene acceso a Internet. Esta característica complica todavía más el análisis de este malware.

Algunas cadenas tienen otro nivel de codificación. El decodificador local recibe una cadena de códigos en Base64 y la decodifica. La cadena se decodifica primero con una operación XOR con el MD5 de la llave, después se vuelve a decodificar con el MD5 de la cadena “UnsupportedEncodingException”. Para conseguir el MD5 de la llave, el mismo decodificador local decodifica una cadena más, que después se utiliza como argumento para MD5. De este modo, se protegen las cadenas llave, como el nombre de la función SendTextMessage.

Comenzamos nuestro análisis y pudimos descifrar todas las cadenas:

Con los resultados de la decodificación a mano, pudimos reproducir el algoritmo funcional de la aplicación.

Obtención de privilegios

Inmediatamente después de que se inicia, la aplicación trata de conseguir privilegios de Administrador del Dispositivo.

Como mencionamos arriba, una característica de este troyano es que la aplicación maliciosa no se puede eliminar cuando ya ha conseguido privilegios de administrador: al explotar una vulnerabilidad de Android que se desconocía, la aplicación maliciosa disfruta de privilegios extendidos, pero no figura como una aplicación con privilegios de Administrador del Dispositivo.

Ya hemos informado a Google sobre la vulnerabilidad de Administrador del Dispositivo en Android.

Cuando tiene Privilegios de Administrador del Dispositivo, el troyano puede bloquear la pantalla del sistema por hasta 10 segundos. Esto suele suceder después de que el dispositivo se conecta a una red inalámbrica gratuita o cuando se activa Bluetooth; con una conexión establecida, el troyano puede copiarse a sí mismo y a otras aplicaciones maliciosas en todos los dispositivos cercanos. Es posible que esta sea la forma en la que Backdoor.AndroidOS.Obad.a trata de evitar que el usuario descubra sus actividades maliciosas.

Además, el troyano trata de conseguir privilegios de raíz con el comando “su id”.

android_trojan_08

Comunicación con los dueños

Se envía al servidor de C&C información que indica si se han conseguido los privilegios de superusuario. Los privilegios de raíz pueden poner a los cibercriminales en ventaja cuando ejecutan comandos a distancia en la consola.

Después del primer lanzamiento, la aplicación maliciosa recolecta la siguiente información y la envía al servidor de C&C de androfox.com:

  • Dirección MAC del dispositivo Bluetooth
  • Nombre del operador
    Número de teléfono
  • IMEI
  • Balance de la cuenta telefónica del usuario
  • Si se consiguieron los privilegios de Administrador del Dispositivo o no
  • Hora local
  • La información recolectada se envía al servidor en forma de un objeto JSON codificado.

 android_trojan_09

Esta información se manda al servidor de C&C cada vez que se establece una conexión. Además, el programa malicioso informa a su dueño sobre su estado actual: envía la siguiente tabla de números Premium y prefijos a los que envía mensajes de texto (el parámetro “aos”), el listado de tareas (“task”) y el listado de servidores de C&C. Durante la primera sesión de comunicación con el C&C, envía una tabla en blanco y una lista de direcciones C&C que se decodificaron como describimos arriba. Durante la sesión de comunicación, el troyano puede recibir una tabla actualizada de números Premium y una nueva lista de direcciones de C&C.

Como respuesta, el servidor de C&C envía otro objeto JSON que se puede ver así después de decodificado:

{"nextTime":1,"conf":{"key_con":"oKzDAglGINy","key_url":"3ylOp9UQwk","key_die":"ar8aW9YTX45TBeY","key_cip":"lRo6JfLq9CRNd6F7IsZTyDKKg8UGE5EICh4xjzk"}}

NextTime es la siguiente conexión con un servidor de C&C.
conf son cadenas de configuración.

Las cadenas de configuración pueden tener instrucciones para conectarse a nuevos servidores de C&C, tablas de números con prefijos y llaves con destinos para mensajes de textos y nuevas tareas con parámetros. Además, las llaves para la codificación del tráfico (key_cip) pueden enviarse a conf.

Los cibercriminales también pueden controlar el troyano mediante mensajes de texto. Las cadenas de configuración también pueden contener cadenas de llaves (key_con, key_url, key_die) que el troyano buscará en los mensajes de texto entrantes, y actuará de acuerdo a lo que reciba.

Se busca cualquiera de estas llaves en cada mensaje de texto entrante. Si se la encuentra, se realiza la acción debida.

key_con: establecer una conexión C&C de inmediato;
key_die: eliminar tareas de la base de datos;
key_url: conectarse con un nuevo servidor de C&C. Esta instrucción debe estar seguida de la nueva dirección de C&C. De este modo, el cibercriminal puede crear un nuevo servidor de C&C y enviar su dirección a los equipos infectados en mensajes de texto que contienen la llave. Esto hace que todos los dispositivos infectados se reconecten al nuevo servidor.

Si se encuentra una instrucción “send text message” en conf, el troyano envía un mensaje a los números provistos por la C&C. Por lo tanto, los dispositivos infectados ni siquiera necesitan una conexión a Internet para recibir instrucciones y enviar los mensajes de texto que se cobran al usuario.

android_trojan_10

Instrucciones del C&C

El troyano recibe instrucciones del C&C y las registra en la base de datos. Cada instrucción que se guarda en esta base de datos contiene el número de secuencia de la instrucción; el tiempo en el que debe ejecutarse, según las órdenes del C&C; y parámetros.

Lista de comandos:

  • Enviar mensaje de texto. Parámetros que contienen el número y texto. Se eliminan las respuestas.
    PING.
  • Recibir el balance de la cuenta mediante USSD.
  • Actuar como proxy (enviar los datos especificados a las direcciones especificadas y comunicar la respuesta).
  • Conectarse con las direcciones especificadas (clicker).
  • Descargar un archivo del servidor e instalarlo.
  • Enviar la lista de aplicaciones instaladas en el Smartphone al servidor.
  • Enviar información sobre una aplicación instalada especificada por el servidor de C&C.
  • Enviar los datos de contacto del usuario al servidor.
  • Shell remoto. Ejecuta en la consola los comandos que indique el cibercriminal.
  • Envía un archivo a todos los dispositivos Bluetooth detectados.

Esta lista de comandos de Obad.a hace que el programa malicioso propague archivos mediante Bluetooth. El servidor de C&C envía al troyano la dirección local del archivo que debe descargar en los dispositivos infectados. En un comando de C&C, el programa malicioso busca dispositivos cercanos con una conexión Bluetooth activada e intenta enviarles el archivo descargado.

A pesar de estas sorprendentes aptitudes, Backdoor.AndroidOS.Obad.a no está muy difundido. Después de un periodo de observación de 3 días usando datos de la Kaspersky Security Network, los intentos de instalación de Obad.a no superaron más del 0,15% de todos los intentos de infectar dispositivos móviles con diferentes programas maliciosos.

Para concluir con este informe, queremos agregar que Backdoor.AndroidOS.Obad.a se parece más a un malware de Windows que a otros troyanos de Android en cuestiones de complejidad y cantidad de vulnerabilidades no publicadas que explota. Esto significa que tanto la cantidad como la complejidad de los programas maliciosos de Android están creciendo con velocidad.

El troyano para Android más complejo

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

  1. Aru

    Como lo saco de mi cel?

Informes

MosaicRegressor: acechando en las sombras de UEFI

Encontramos una imagen de firmware de la UEFI infectada con un implante malicioso, es el objeto de esta investigación. Hasta donde sabemos, este es el segundo caso conocido en que se ha detectado un firmware malicioso de la UEFI usado por un actor de amenazas.

Dark Tequila Añejo

Dark Tequila es una compleja campaña maliciosa que tiene por objetivo a los usuarios ubicados en México, con el propósito principal de robar información financiera, así como credenciales de acceso a sitios populares que van desde versionado de código fuente a cuentas de almacenamiento de archivos en línea y de registro de dominios web.

De Shamoon a StoneDrill

A partir de noviembre de 2016, Kaspersky Lab observó una nueva ola de ataques de wipers dirigidos a múltiples objetivos en el Medio Oriente. El programa malicioso utilizado en los nuevos ataques era una variante del conocido Shamoon, un gusano que tenía como objetivo a Saudi Aramco y Rasgas en 2012.

Suscríbete a nuestros correos electrónicos semanales

Las investigaciones más recientes en tu bandeja de entrada