miércoles, 4 de junio de 2014

Análisis de un repositorio ruso de aplicaciones Android

Dentro de nuestra participación en el proyecto europeo NEMESYS, hemos desarrollado un "honeyclient" que nos permite de recopilar repositorios de Android, descargar las aplicaciones, y analizarlas. Hemos analizado el repositorio ruso de Android "androidar.ru", para averiguar la confianza que podemos tener en los repositorios alternativos al oficial de Google. Vamos a mostrar algunos de nuestros descubrimientos.

Un "honeyclient" es un sistema diseñado para imitar, ya sea de forma manual o automáticamente, la serie de pasos que realizaría un usuario normal al visitar diferentes sitios web. Nuestro proyecto está destinado al análisis de repositorios Android alternativos, determinar su fiabilidad y comprobar que no se debe descargar aplicaciones de estos sitios.

Para evaluar el repositorio, hemos descargado 2.300 aplicaciones. Para cada aplicación, hemos realizado un análisis estático con Androguard y dinámico con Droidbox adaptado para la versión de Android 4.1.1. De esta forma queremos conocer el comportamiento de las aplicaciones: es decir los SMS enviados, datos privados robados, etc. Invitamos a leer nuestro informe sobre el análisis de aplicaciones Android.


Hemos notado que 622 aplicaciones Android (un 27%) mandaban SMS premium y los identificadores IMEI e IMSI del móvil por Internet a la dirección 188.42.243.203 (un servidor en Luxemburgo). Con el análisis estático, hemos averiguado que todas las aplicaciones pedían los 26 permisos siguientes y que tenían la capacidad de enviar SMS, leer SMS, leer los contactos, sacar fotos, etc.:

   android.permission.ACCESS_NETWORK_STATE
   android.permission.MOUNT_FORMAT_FILESYSTEMS
   android.permission.WRITE_SECURE_SETTINGS
   android.permission.BIND_DEVICE_ADMIN
   android.permission.ACCESS_NETWORK_STATE
   android.permission.SEND_SMS
   android.permission.BIND_REMOTEVIEWS
   android.permission.INTERNET
   android.permission.WRITE_SETTINGS
   android.permission.SET_PROCESS_LIMIT
   android.permission.SET_WALLPAPER_HINTS
   android.permission.BRICK
   android.permission.DEVICE_POWER
   android.permission.READ_CONTACTS
   android.permission.RECEIVE_SMS
   android.permission.INSTALL_PACKAGES
   android.permission.READ_PHONE_STATE
   android.permission.WRITE_SYNC_SETTINGS
   android.permission.ACCESS_FINE_LOCATION
   android.permission.SET_ANIMATION_SCALE
   android.permission.CAMERA
   android.permission.CHANGE_NETWORK_STATE
   android.permission.WRITE_EXTERNAL_STORAGE
   android.permission.ACCESS_CHECKIN_PROPERTIES
   com.android.launcher.permission.INSTALL_SHORTCUT"
   android.permission.SYSTEM_ALERT_WINDOW

Abajo mostramos un ejemplo de una aplicación del repositorio que envía tres SMS premium. El primer SMS se envía a partir de dos minutos, el segundo después de 10 segundos, y el tercero después de 15 segundos. Los tres SMS se envían a números premium diferentes, pero con el mismo mensaje "43978546971 361453287722". Pensamos que el primer SMS se envía con retraso para evitar su detección por las "sandbox" de Google o de casas antivirus. En efecto, con la gran cantidad de aplicaciones Android, imaginamos que analizar cada muestra más de un minuto pide muchos recursos, por lo que en la mayoría de los casos no se puede hacer.



Mirando el certificado de la aplicación, vemos también que el desarrollador de la aplicación no quería poner su nombre.

  
Además, el desarrollador ha usado técnicas de ofuscación del nombre de las clases lo que hace más difícil un análisis por ingeniería inversa. Por ejemplo, el nombre de la clase principal que se llama "imauyfxuhxd.qhlsrdb.rqdpwernbqj".











También, nos hemos dado la cuenta de que descargando varias veces la misma aplicación desde la misma URL: 
"http://androidarar.ru/api.php?n=beyondpod-key&f=beyondpod-key&a=36145&icurl=&imurl=&s=2&ss=13&mt=4&d=2&u=http%3a%2f%2fandroidar.ru%2fengine%2fdownload.php%3fid%3d1062&autoic=1" muchas veces nos devolvía aplicaciones con hash diferentes. Sin embargo, extrayendo el código binario de cada aplicación, hemos comprobado que todas las aplicaciones tienen el mismo código compilado. En otras palabras, el atacante cambia los iconos y las parámetros de configuraciones de la aplicación sin modificar el código compilado, de manera que se genera un hash diferente para la aplicación. Pensamos que el atacante lo hace intencionalmente para engañar los antivirus que usan los hash para identificar los malware Android. Un generador de firma sobre el código compilado como el generador de formas para YARA (que describimos en el blog del Laboratorio de Hispasec) seria más adecuado para identificar el malware.

Aconsejamos a todos los usuarios descargar las aplicaciones de Android desde el repositorio oficial de Google (https://play.google.com/store) y comprobar los permisos que la aplicación pide durante su instalación. Por ejemplo, un juego que pida permiso para enviar SMS premium debería hacernos sospechar.

Más información:

The NEMESY Project

Androguard

Droidbox

Hispasec publica un parche para dar soporte a la rama 4 de Android en DroidBox

L. Delosieres and D. Garcia, "Infrastructure for detecting Android malware", in Proc. 28th Int. Symp. on Computer and Information Sciences (ISCIS’13), volume 264 of Lecture Notes in Electrical Engineering, pages 389-398. Springer, Oct. 2013.

Aplicación analizada
(SHA-256 – 496affe5bf465d9dce11a5bea3c1d7e8ceb2587968e9d6eb55d9d28e3ac332f5) descargada a

Generador de firmas para YARA

una-al-dia (18/12/2013) El proyecto NEMESYS

una-al-dia (01/01/2014) Contribuciones de Hispasec en el proyecto NEMESYS



Laurent Delosières



5 comentarios:

  1. Excellent, as usual...

    ResponderEliminar
  2. Hola,

    Hace años que os sigo. No se si es que me hago viejo pero cada vez los artículos me parecen de mas baja calidad... Estaría bien que volvierais un poco a lo orígenes...

    Sobre la noticia, en el repositorio de Google también hay de todo. Cada vez son mas bajos los estándares... En mi opinión.

    Igualmente sigo disfrutando de Android como el primer dia , aunque no hago ascos a la competencia.

    Saludos,

    ResponderEliminar
  3. Hola,

    Justo lo que pensaba es lo contrario que Anónimo. Que el artículo era bastante bueno, con un análisis muy básico, pero efectivo para divulgar adecuadamente los problemas de seguridad que representa utilizar repositorios peligrosos. Ciertamente, descargar algo del repositorio de Google tampoco es garantía, pero es menos probable que se cuelen aplicaciones abiertamente maliciosas.

    Saludos y felicidades por el artículo

    ResponderEliminar
  4. ¿Baja calidad en el artículo?
    Hay que pensar que para escribir lo que hay aquí escrito se ha hecho un estudio de las aplicaciones Android del repositorio mencionado... ninguna web de tecnología le llega a este estudio a la suela de los zapatos y en ellas se pueden leer cosas como "según una fuente...", "muchos usuarios afirman que...", "los expertos creen...".
    El trabajo de Hispasec es muy bueno.

    ResponderEliminar