16 abril 2013

Análisis dinámico de malware para Android con REMnux y MobiSec

Esta semana Lenny Zelster ha liberado la versión 4 de REMnux, una distribución pensada para el análisis de malware.

REMnux incorpora una batería de herramientas que facilita y acelera el proceso de análisis y aunque inicialmente no está pensada para analizar malware para Android sí que puede aprovecharse algunas de sus funcionalidades.

Por otro lado los chicos de Secure Ideas han desarrollado una distribución llamada MobiSec diseñada para evaluar y analizar la seguridad de dispositivos móviles y las aplicaciones para estos. Tiene también multitud de herramientas, emuladores, etc.

La idea de este post es daros a conocer ambas distribuciones y combinar sus funcionalidades con un pequeño ejemplo para Android. El objetivo no es realizar un análisis exhaustivo de malware sino explicar como con estas herramientas se podría realizar parte del análisis del comportamiento durante análisis de malware.

REMnux se puede descargar en formato OVF/OVA lo que permite importarla en VMWare or VirtualBox. Por el contrario MobiSec requiere descargar la ISO e instalarla en VMWare or VirtualBox de manera manual. Una vez instaladas ambas máquinas, y como se trata de analizar malware, es importante configurar la red de manera aislada y sin acceso a Internet, es decir, en modo 'Host only'. Además, con el fin de facilitar el análisis, configuraremos el DNS y gateway de MobiSec para que sean la IP de REMnux.

MobiSec, entre otras herramientas,  incorpora distintas versiones de emuladores para Android lo que facilita mucho el trabajo cuando se quiere ejecutar algo sobre Android de manera rápida, ya que no hay que configurar nada. En este caso usaremos la versión más reciente instalada, 4.0.3.



El siguiente paso es subir el malware al emulador de Android dentro de MobiSec. En el caso de este ejemplo el malware lo descargaremos desde http://contagiominidump.blogspot.com.es a la máquina física para luego subirlo a MobiSec por SCP. El malware elegido es el Android.Exprespam.  El único paso restante es instalar el malware en el emulador con los comandos de 'adb' (adb install).


Mientras, y antes de ejecutar el malware en el emulador, vamos a preparar REMnux. REMnux permite ejecutar servicios de tal manera que el malware se conecta a estos servicios simulados (como si se tratara de un honeypot) lo que es de gran utilidad para ver qué hace el malware de manera dinámica, por ejemplo resolver una determinada dirección IP, conectarse a un servidor de IRC, enviar SPAM or comunicarse vía HTTP. 

El primer paso es ejecutar 'fakedns' para resolver todos los nombres de dominio a la IP de REMnux y a su vez lanzar Wireshark para tener visibilidad de lo qué ocurre.
En este caso podemos ver que el malware  pregunta por el dominio ftukguhilcom.globat.com y que REMnux le responde con la IP de si misma.


A continuación se puede ver en Wireshark que el malware intenta realizar una conexión HTTPS, que es reseteada por REMnux al no existir tal servicio.


El siguiente paso es emular un servidor HTTPS, con el fin de ver que tipo de información se intercambia. REMnux incluye una servidor HTTP y stunnel, lo que permite crear de manera sencilla un servidor HTTPS. Para ello lanzamos el servidor HTTP con el comando 'httpd start' y configuramos stunnel con un certificado autofirmado.



Si miramos en los logs del servidor HTTP no vemos ninguna petición web. El problema es que al tratarse de un certificado autofirmado es necesario aceptarlo cuando se accede por HTTPS. Puede ser que el malware compruebe la validez del certificado, como un control adicional, o bien que el malware use el navegador de Android que tampoco tiene importado este certificado.


Si fuera el segundo caso se podría importar el certificado en el repositorio de Android y evitar este problema. Pero como el propósito de este post no es realizar un completo análisis sino mostrar las herramientas que ofrece REMnux y MobiSec, vamos a continuar el análisis con otro malware que usa HTTP. En este segundo caso usaremos el malware Chuli.A

Los pasos son análogos: instalaremos el malware en el emulador y lo ejecutaremos.


En este caso el malware accede directamente a una dirección IP, en lugar de resolver un dominio. Afortunadamente REMnux es capaz de responder a esas peticiones de manera automática por lo que mirando Wireshark podemos ver que el recurso pedido es 'android.php' pero este recurso no existe en nuestro servidor HTTP.


Paralelamente podemos ver en los logs del servidor HTTP las peticiones web al recurso android.php. Como el fichero no existe en el servidor, vamos a crearlo con el fin de interactuar con el malware y ver como reacciona al encontrar el fichero.



Ahora, al existir el recurso, se puede ver en los logs del servidor la respuesta con código 200 .


Probablemente durante este mensaje POST el malware informe al C&C de que el dispositivo ha sido comprometido y le mande información del mismo como por ejemplo el IMEI. Seguramente  el string 'phone1365842571243' envíado en el POST sea un identificador único para este dispositivo que permita indentificarlo.

Como la respuesta recibida ha sido 200 ahora el malware realiza otras peticiones que se pueden ver ver en los logs del servidor HTTP. Para ser precisos, el recurso solicitado es 'POST /data/phone1365842571243/process.php'. Igualmente que antes, y con el fin de interactuar con el malware, vamos a crear ese recurso y a ver que pasa.


Parece que funciona pues se realizan varias peticiones POST  que podremos analizar con Wireshark. Estas peticiones contienen diferente información.


Por ejemplo, en una de ellas se envía lo que parece ser la localización del dispositivo (probablemente coordenadas GPS codificadas de alguna manera)


En otra parece que se envía los contactos, que en este caso no son datos validos porque la lista esta vacía:



Podríamos seguir analizando las distintas peticiones y ver que tipo de información se envía mediante las diferentes peticiones POST pero no es el objetivo de este artículo.

Lo imporante es quedarse con la idea de que con MobiSec y REMnux es posible interactuar con el malware de manera dinámica creando respuestas DNS, servicios HTTP/s, recursos web, etc, según vayamos avanzando en el análisis. Además MobiSec incorpora herramientas que permitirían hacer ingeniería inversa del malware, pero eso lo dejamos para otro post.

Artículo cortesía de Angel Alonso-Parrizas