4 ene 2016

El malware para Android NotCompatible

Buenas a todos,  en el artículo sobre malware en Android de hoy me gustaría hablaros del malware de tipo Caballo de Troya, NotCompatible, del cual se siguen detectando algunas muestras en la actualidad (aunque cuando pegó más fuerte fue hace un par de años). Este malware fue distribuido de forma principal mediante la infección de páginas web, desde donde los usuarios indefensos lo descargaban sin darse cuenta. Para ello, ocultaban scripts en el código fuente de ciertas páginas, las cuales eran capaces de detectar el User-Agent del navegador web utilizado, y si se trataba de un navegador Android, realizar una petición a un dominio externo donde se encontraba alojado una copia del malware en un archivo “apk” que descargaban.


El apk descargado es un archivo comprimido en formato zip, que contiene los siguientes archivos:

  • AndroidManifest.xml: permisos de la aplicación, así como con el nombre del paquete, componentes, etc.
  • classes.dex: contiene las clases de Java compiladas en formato DEX
  • resources.arsc: recursos pre-compilados.
  • res: carpeta con iconos, gráficos, interfaces, etc.
  • META-INF: carpeta con metadatos y certificados.
  • Lib: librerías

Mediante la herramienta Acube3 se procedió a decodificar el archivo AndroidManifest.xml donde se pudieron comprobar los siguientes datos del malware:

  • Nombre del paquete: com.Security.Update
  • Permisos: Internet, Access_Network_State y Receive_Boot_Completed.
  • Actividades: no declaradas, por lo que el malware no contaba con interfaz gráfica.
A continuación fue infectado un Smartphone Android 4.3 con el fin de verificar de forma dinámica su funcionamiento. Se pudo comprobar como los datos de conexión se encuentran en data.bin dentro del directorio “/data/data/com.Security.Update/files/“, y su contenido se encuentra cifrado.


A continuación de decompiló el APK con Acube3 y tras acceder a su código se consultó la clase “config” donde el malware incluía su configuración de seguridad. En esta clase el desarrollador programó un sistema de cifrado basado en AES-ECB con una clave prefijada en la variable passkey “ZTY4MGE5YQo”. Con esta clave se descifraba el archivo de configuración antes referenciado.



El caballo de Troya contaba en las muestras más habituales con 2 servidores (notcompatibleeapp.eu y 3na3budet9.ru) a los que intenta conectarse para recibir comandos y descargar otras amenazas. Primero se llama a las rutinas de configuración para luego iniciar las conexiones a los servidores remotos. Una de las secciones de código más importantes de esta amenaza es la sección de cifrado de la información. Tras comenzar la carga de la información se ejecutan las rutinas para descifrar el contenido del archivo data.bin. En este caso en particular la clave para cifrar la información es “ZTY4MGE5YQo“, pero para poder obtener los datos del archivo primero se pasa el contenido de la cadena de texto a un conjunto de bytes, y se calcula la función Hash SHA-256. Más adelante se utiliza un cifrado con AES que se realiza al llamar al método Load() perteneciente a la clase Config() en donde se obtiene la clave (a través del método Decrypt()). Una vez que ya se tiene la clave, se lee el archivo y se obtienen los datos de conexión. Ahora el módulo de conexión se encarga de obtener la información desde una dirección URL remota y no solo descargar otras amenazas (camufladas como actualizaciones de seguridad) sino que además es capaz de entender otros comandos de gestión.

Tenéis un completo whitepaper sobre NotCompatible en el siguiente enlace y en el que me he apoyado para escribir esta entrada:


Por otro lado, podréis descargar una muestra del malware en el siguiente enlace (vía contagiomobile) para que podáis también practicar con él:

DESCARGAR MUESTRA NOTCOMPATIBLE (email para recibir pass)

Y finalmente os dejamos con un volcado de un análisis realizado en Virus Total y al cual podréis acceder desde AQUÍ:

IDENTIFICACIÓN
  • MD5 feace958b47c2249c6ab8ddf804cdcb6
  • SHA1 e32b74baf9d82ad4b7d7b65e7feccf033be42fb3
  • SHA256 c3e39aa0accae116946ead64339eac1753faf3e39d6df1d8185aae21f6135f37
  • ssdeep 1536:HsbgLKxe7wuyt6XYyLaFtTAxi+id2ijzotv3:lKxpMXYyL8+Z6zo
PERMISOS
  • android.permission.RECEIVE_BOOT_COMPLETED (automatically start at boot)
  • android.permission.INTERNET (full Internet access)
  • android.permission.ACCESS_NETWORK_STATE (view network status)
FICHEROS
Saludos!

2 comentarios:

  1. Hola, nos podrías compartir la clave para descomprimir la muestra, gracias!

    ResponderEliminar
  2. Hola @unknown. La muestra es de contagiomobile y la contraseña sigue su esquema habitual de contraseñas. Sino has trabajado con las muestras de contagiomobile aún envíanos un email a info@flu-project.com y te la enviamos. Su autor prefiere que la contraseña no figure en Internet para evitar infecciones no controladas.

    Gracias

    Saludos

    ResponderEliminar