Comprometiendo sistemas Android (2ª parte)

La semana pasada leímos la siguiente noticia y "leo" textualmente:

Hispasec: "Hace unos días, Metasploit añadió un módulo para aprovechar una vulnerabilidad en el sistema operativo para móviles Android. El exploit, desarrollado por los investigadores Joe Vennix (@joevennix) y Josh Drake
(@jduck), permite obtener el
control del sistema con tan solo visitar una página web manipulada especialmente.
La vulnerabilidad afectaría en principio a las versiones anteriores a la 4.2 (Jelly Bean), publicada a finales de octubre de 2012. No obstante, para observar el comportamiento de la vulnerabilidad sobre la miríada de versiones parcheadas por los fabricantes dejaron colgada una prueba de concepto abierta a todo aquel que quisiera (y se fiara) comprobar si su sistema era o no vulnerable."

Como es normal llamó mi atención y me puse manos a la obra ya que me viene al pelo para seguir con esta serie de posts...

Después de unas horas "cuzarreando" pude comprobar que la noticia es realmente inquietante... ver como hay una vulnerabilidad crítica que lleva tres meses sin que los fabricantes le hayan puesto remedio me pone los pelos de punta, olisqueando por la red vimos que tan solo unas pocas versiones tienen solucionado el bug.

Veamos!!....

WebView es un componente esencial en Android y iOS. Permite a las aplicaciones mostrar el contenido de los recursos online, simplifica la tarea de realizar una solicitud de red, parsea los datos y los muestra. Para la prueba vamos a tomar un dispositivo Android 4.1 y nos vamos a dirigir a una URL donde podemos probar si nuestro dispositivo es vulnerable:

http://www.droidsec.org/tests/addjsif/
Al parecer nuestro sistema es vulnerable...
Y sigo leyendo:

"La vulnerabilidad fue anunciada en Diciembre del 2013  por un grupo chino en wooyun.org (en inglés http://en.wooyun.org/ ) y afecta a WebView, un componente del API de programación de Android que permite incrustar una vista web en cualquier aplicación. Dicho componente expone un método que permite hacer un puente entre código Javascript (ejecutado desde la página web) hacia Java. En principio no todas las aplicaciones exponen dicho método, pero es común y son numerosas las que si lo hacen. El resultado es que se pueden exponer objetos Java para usarlos desde Javascript y a través de ellos ejecutar código arbitrario en el sistema. Existe un detallado análisis técnico disponible."

Antes de echarle un ojo al análisis técnico vamos a probar el módulo de Metasploit:
 
En algunos sistemas tendremos algún problema con el PATH, pero nada que no podamos solucionar:
 

El módulo de Metasploit, como era de esperar, funciona a la perfección: ahora tenemos abierta una shell en el dispositivo.. ¿Y si por un casual el dispositivo estuviese rooteado?

Dejando esa pregunta en el aire pasamos a ver un poco más de cerca de qué va la vulnerabilidad...


Bueno después de leer el análisis técnico creo que me han quedado un par de cosas claras:

Android a través de WebView.addJavascriptInterface dispone de un método java para registrar un objeto de llamada y mejorar la función de javascript. Pero el sistema no limita la llamada al método. Un atacante puede utilizar una llamada Java como mecanismo reflejo no registrado, lo que resulta en un aumento de la capacidad javascript a capacidad infinita. Un atacante que aprovechara esta vulnerabilidad podría hacer lo que quisiera sobre el cliente.

Para dejar más claro cómo funciona vamos a hacer una aplicación vulnerable siguiendo los caminos facilitados por los chicos de labs.mwrinfosecurity.com (no nos sería necesario puesto en Google Play hay muchísimas, pero así espero no herir sensibilidades ....y que no nos manden mensajes con amenazas de demanda......XD ).

Para ello utilizaremos Eclipse...

Crearemos una nuevo proyecto llamado POC...


AndroidManifest.xml

pastebin code

MainActivity.java

pastebin code

Con esto y la información proporcionada en labs.mwrinfosecurity.com ya tenemos lista nuestra aplicación vulnerable para proseguir con nuestras pruebas.


Ahora pasamos a la segunda parte de nuestra prueba de concepto, hemos visto que es posible atacar esta vulnerabilidad desde una pagina publicada en Internet, vamos pues a abusar....

Creamos el html poc.html:


Ya tan sólo nos queda visitar la pagina lo cual nos creará un archivo de texto en nuestro directorio /mnt/sdcard/:

Podríamos ser mas dañinos, podríamos borrar archivos, abrir una conexión con nc (que a ver qué hace nc en android), y un largo etc.... y todo eso de forma transparente para el cliente.....

Hemos podido ver que realmente el agujero existe y para las versiones inferiores a 4.2 hay que tenerlo muy en cuenta...

un saludo,

   Manuel 

sed buenos :P

pd. Me querría despedir con una reflexión personal que nada tiene que ver con el tema ni con el blog: Srs. Políticos..... NO LES DA VERGÜENZA?? que vamos a tener que hacer, el mapa más de España más grande.......?

mapa casos de corrupción 2014

4 comentarios :

  1. Y que puede suceder con los dispositivos Blackberry (OS > 10.2) que te permiten ejecutar aplicaciones Android??

    By(t)es!
    Floyd

    ResponderEliminar
  2. Hola, sabes de alguna forma de parchar tu android para esta vulnerabilidad? tengo un neo v, y es vulnerable, con la ultima version :/

    ResponderEliminar
  3. me autorespondo, deshabilitando el javascript del navegador

    ResponderEliminar