Un Análisis de Xavier: Una Librería de Anuncios para Android que extrae Información

Recientemente descubrimos un Troyano para Android -una librería de anuncios (ad library) denominada Xavier (que Trend Micro detectó como ANDROIDOS_XAVIER.AXM)-, el cual roba y filtra información de los usuarios. El impacto de Xavier ha sido amplio. De acuerdo con datos del Servicio de Reputación de Aplicaciones Móviles de Trend Micro, se han detectado más de 800 aplicaciones que contienen el SDK de la librería de anuncios y que se han descargado millones de veces desde Google Play. Estas aplicaciones van desde utilerías y editores fotográficos hasta fondos de pantalla y tonos.

El mayor número de intentos de descarga se registró en países del sureste asiático como Vietnam, Filipinas e Indonesia; mientras que en Estados Unidos y Europa se reportó el menor número.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/Xavier-Figure-1-01.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”1011″ height=”558″]Si bien hemos cubierto con anterioridad las librerías de anuncios maliciosas – como la MDash SDK— ésta incluye características importantes que la diferencian de la librería anterior. Primero, tiene un comportamiento malicioso que descarga códigos desde un servidor remoto, los instala y ejecuta. Segundo, hace todo lo posible por protegerse de ser detectada mediante el uso de métodos como la encripción de secuencias, datos de Internet y detección de emuladores.

Las capacidades de robo y filtración de Xavier son difíciles de detectar debido a un mecanismo de autoprotección que le permite eludir el análisis estático y dinámico. Además, Xavier también tiene la capacidad de descargar y ejecutar otros códigos maliciosos, los cuales podrían ser incluso uno de sus aspectos aún más peligrosos. El comportamiento de Xavier depende del código descargado y de su URL, los cuales son configurados por el servidor remoto.

Antes de entrar de lleno al análisis de Xavier, vamos a explicar cómo ha evolucionado esta librería de anuncios en el tiempo.

La Evolución de Xavier

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier2.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”877″ height=”834″]

Xavier pertenece a la familia AdDown, la cual ha estado presente por más de dos años. La primera versión, llamada joymobile, apareció a principios de 2015. Esta variante ya era capaz de ejecutar código de forma remota.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier3.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”324″ height=”688″]

Además de recolectar y filtrar información de los usuarios, esta librería era capaz de instalar otros APKs y hacerlo silenciosamente si el dispositivo es ruteado silenciosamente.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier4.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”727″ height=”295″]

Establecía comunicación con el servidor de Comando y Control (C&C) sin encripción. Sin embargo, todas las secuencias constantes se encriptaban en el código.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier5.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”579″ height=”66″]

La segunda variante que se derivó de la familia AdDown se llamó nativemob. Al hacer una comparación de nativemob con joymobile, podemos observar que en la primera la estructura del código se ha reorganizado. También agregó algunas funcionalidades nuevas, principalmente comportamientos y utilerías publicitarias. Aunque lo hacía con la instalación de aplicaciones de forma silenciosa, la instalación de aplicaciones que involucran la confirmación del usuario aún existía.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier6.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”273″ height=”685″]

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier7.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”426″ height=”85″]

También reunía más información de los usuarios que joymobile y la decodificaba en base64 antes de enviarla al servidor C&C.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier8.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”829″ height=”306″]

La siguiente variación apareció en enero de 2016. Recortaba su algoritmo de encripción de secuencias, encriptaba los códigos descargados del servidor remoto y añadía algunas reflection calls (llamadas de reflexión).

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier9.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”754″ height=”94″]

Al mes siguiente, actualizaba los aspectos de la configuración del módulo de publicidad y eliminaba la encripción de los datos por alguna razón:

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier10.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”558″ height=”131″]

En los meses siguientes se realizaron más actualizaciones. Sin embargo, ninguna de ellas hizo cambios importantes a la librería de anuncios.

Análisis Técnico de Xavier

La variante conocida como Xavier surgió en septiembre de 2016 con un código más simplificado. La primera versión de Xavier eliminó la instalación de APK y la comprobación del archivo raíz, pero añadió la encripción de datos con el algoritmo TEA.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier11.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”783″ height=”126″]

Poco después, añadió un mecanismo para evadir la detección dinámica como ya se mencionó anteriormente.

Xavier tiene la siguiente estructura:

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier11.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”783″ height=”126″]

Una vez cargado, Xavier obtendrá su configuración inicial del servidor C&C hxxps://api-restlet[.]com/services/v5/, que se encripta dentro de Xavier.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier13.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”682″ height=”99″]

El servidor también encripta los datos de respuesta:

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier14.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”794″ height=”227″]

Después de la encripción, podemos ver que es realmente un archivo Json:

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier15.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”430″ height=”609″]

  • V indica la versión del SDK;
  • L indica el URL del SDK;
  • G indica el Sid del SDK
  • S indica las configuraciones del SDK.
  • Au se refiere a la configuración de la publicidad.

Xavier descargará entonces el mencionado SDK de hxxp://cloud[.]api-restlet[.]com/modules/lib[.]zip, que se lee desde la configuración. Sin embargo, lib.zip no es un archivo zip completo.

Después de obtener lib.zip, Xavier agrega 0x50 0x4B antes de lib.zip y lo nombra como xavier.zip. Este es un archivo zip válido.

Antes:

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier16.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”725″ height=”51″]

Después:

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier17.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”725″ height=”52″]

Xavier.zip contiene un archivo classes.dex que Xavier descarga e invoca.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier18.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”471″ height=”145″]

Este archivo dex reunirá la siguiente información del dispositivo del usuario, que encriptará y transmitirá al servidor remoto: hxxps://api-restlet[.]com/services/v5/rD.

  • manufacturer
  • source
  • simcard country
  • product
  • publisher_id
  • simcard operator
  • service id
  • language
  • resolution
  • model
  • os version
  • Device name
  • Device id
  • Installed apps
  • Android id
  • Email Address

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier19.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”626″ height=”351″]

Asimismo, Xavier oculta su comportamiento publicitario agresivo detectando si el sistema está corriendo en un emulador a fin de evadir la detección dinámica.

Comprobará si el Nombre de Producto del dispositivo, el fabricante, la marca del dispositivo, el nombre del dispositivo, el módulo del dispositivo, el nombre del hardware o la huella contiene la siguiente secuencia:

  • vbox86p
  • Genymotion
  • generic/google_sdk/generic
  • generic_x86/sdk_x86/generic_x86
  • com.google.market
  • Droid4X
  • generic_x86
  • ttVM_Hdragon
  • generic/sdk/generic
  • google_sdk
  • generic
  • vbox86
  • ttVM_x86
  • MIT
  • Andy
  • window
  • unknown
  • goldfish
  • sdk_x86
  • generic_x86_64
  • phone
  • TTVM
  • sdk_google
  • Android SDK built for x86
  • sdk
  • Android SDK built for x86_64
  • direct
  • com.google
  • XavierMobile
  • TiantianVM
  • android_id
  • generic/vbox86p/vbox86p
  • com.google.vending
  • nox

Xavier también oculta su comportamiento al escanear la dirección de correo del usuario para comprobar si contiene las siguientes secuencias:

  • pltest
  • @facebook.com
  • tester
  • @google.com
  • review
  • playlead
  • agotschin
  • gptest
  • rxwave 15
  • rxplay
  • admob
  • gplay
  • adsense
  • gtwave
  • rxtest
  • wear.review
  • qaplay
  • test
  • rxtester
  • playtestwave

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier20.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”426″ height=”626″]

Xavier tiene los siguientes comportamientos para evitar la detección:

1) Encripta todas las secuencias constantes, dificultando aún más la detección estática y el análisis manual.

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier21.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”651″ height=”486″]

2) Realiza la transmisión a través de HTTPS para evitar que el tráfico sea interceptado. También los datos son encriptados:

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier22.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”470″ height=”243″]

3) Utiliza una amplia serie de métodos para invocar la reflexión, con el nombre de la clase y el nombre de método que se van a encriptar

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier23.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”763″ height=”130″]

4) Ocultará su comportamiento de acuerdo con el entorno en que se ejecuta.

Este es un ejemplo de una aplicación de Google Play que contiene una librería de anuncios de Xavier:

[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/06/xavier25.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”829″ height=”546″]

Recomendaciones y mejores prácticas

La manera más sencilla de evitar un malware ingenioso como Xavier es no descargar ni instalar aplicaciones desde una fuente desconocida, incluso si son de tiendas de aplicaciones legítimas como Google Play. Además, puede ayudar a leer los análisis de otros usuarios que hayan descargado la aplicación. Otros usuarios pueden ser una excelente fuente de información, especialmente si pueden señalar si una aplicación específica muestra un comportamiento sospechoso. Actualizar y parchar los dispositivos móviles también ayudará a evitar el malware que busca aprovecharse de las vulnerabilidades.

Además, los usuarios finales y las empresas pueden considerar soluciones de seguridad móvil como Trend MicroMobile Security for Android™, que también están disponibles en Google Play. Trend MicroMobile Security for Enterprise y que brindan gestión de dispositivos y aplicaciones, protección de datos y configuración, además de proteger a los dispositivos contra ataques que se aprovechan de las vulnerabilidades, evitando el acceso no autorizado a las aplicaciones, así como detectar y bloquear el malware y los sitios fraudulentos.

Puede consultar en el Apéndice una lista completa de los hashes y aplicaciones que Google ha eliminado a la fecha de esta publicación.

 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.