Etiquetas

Este último verano (el del 2011) me fui con mi familia y con la familia de un colega siete días a un hotel de Huelva, de esos donde (casi) todo está incluido. El colega es de esos sujetos que en sus ratos libres se junta, cibernéticamente hablando, con unos amigos y se dedica a crackear routers y redes wireless. Hay varias operadoras de telefonía que lo que sienten por ellos no es precisamente amor.

No llevábamos ni 24 horas en el hotel y ya me tenía la cabeza loca con las batallas de todos los hackeos y de más perrerías que le hacían a la redes wifis así que decidí jugar a la contra:

– Campeón dime una operadora o router que no hayáis podido con él – le dije yo
– El de Vodafone – Me contestó muy seguro el andoba

Yo que debía andar de buen humor le dije ni corto ni perezoso que en lo que duraba nuestra estancia en el hotel iba a intentar “romperlo”.

En este punto es bueno aclarar que tenía muy claro que no iba a llegar a nada, ni soy un máquina ni me lo creo, pero por lo menos me iba a pasar una semana sin oír batallitas de abuelo cebolleta. El reto era ser capaz de descubrir la forma de generación de las claves por defecto de los routers inalámbricos Vodafone, para poder construirlas a partir de la información que emiten y ser capaz de conectarte por la patilla.

A parte de que sólo serían 7 días tenía algunos handicaps añadidos; en el hotel sólo había wifi en el hall, al tercer día conseguimos hacernos con la clave wifi de un vecino así que mejoró mucho nuestra conectividad, además estábamos de vacaciones con las familias así que había que ir a la playa, a la piscina, al bar… y otro pequeño detalle es que no tenía ningún router Vodafone, pero esto para un hacker son excusas baratas.

Antes de continuar decir que lo que cuento aquí no es novedoso y por aquel entonces tampoco lo era pero yo ni lo sabía.

Lo primero que hice fue irme a la web de Vodafone a bajarme el firmware del router por aquel entonces la versión disponible era la siguiente:

   https://broadband.vodafone.ie/download/files/HG556a_B026.zip

Descomprimí el zip

   unzip HG556a_B026.zip

Y a partir de ahí lo interrogué con binwalk, strings, hexdump -C pero poca cosa

Gracias a un tipo llamado kisumu que tenía una herramienta que permitía separar el binario en un fichero de filesystem, otro del kernel y otro de headers pude avanzar un poquito más.

   ./hg556-extract HG556aV100R001C08B026.bin2

Con el del filesystems y la utilidad de unsquashfs se podía montar el sistema, tiene que ser con la versión 3 con otras sólo monta parte del filesystem y se deja las partes más interesantes.

unsquashfs HG556-ROOTFS

Nos crea el filesystem en el directorio squashfs-root un linux la mar de bonito.

Lo primero a lo práctico a buscar palabrotas por todo el filesystem

   grep -rl admin *
   grep -rl root *
   grep -rl password *

De ahí salían unos cuantos ficheros interesantes/sospechosos
   ./lib/libpsixml.so
   ./lib/libpsi.so
   ./bin/cfm (Este además se ejecuta el inicio) etc/profile
   ./bin/netctl
   etc/default.cfg

El primero a mirar el es etc/default.cfg que encima es de texto. Y al abrirlo se ve que es el fichero de configuración de todos los servicios del router con los usuarios, las claves, los puertos… Hay cosas como estas:

username=”vodafone” password=”vodafone”
<sysPassword value=”VFIE-hg556″/>
<admPassword value=”advanced”/>
<sptPassword value=”support”/>
<usrPassword value=”vodafone”/>

Nos está diciendo por ejemplo que si accedemos vía terminal con el usuario de sistema la clave va a ser VFIE-hg556 la verdad es que no se han preocupado mucho de esconderla???

El reto en el fondo no era sacar la clave de sistema sino el algoritmo de generación de la clave wifi.

Lo siguiente es mirar las cadenas de texto de los ficheros binarios con la herramienta strings

   strings ./lib/libpsixml.so
   strings ./lib/libpsi.so
   strings ./bin/cfm 
   strings ./bin/netctl

Mucha función interesante y en el fichero cfm aparecen los binarios básicos de linux, da la impresión que en el arranque del router machaca los binarios de sistema con los que tiene en el fichero cfm, debe ser una medida para impedir realizar modificaciones sobre los binarios.

A parte el sistema tiene una busybox y más cositas interesantes pero no queremos hacer una entrada gigantesca

Después de unas cuantas vueltas no vi mucho color así que me decidí a intentar arrancar el sistema, como no tengo el router opté por intentar emularlo con un qemu.

El sistema se ejecuta sobre una arquitectura MIPS, así que me instale un qemu

   aptitude install qemu
   aptitude install qemu-kvm
   aptitude install qemu-kvm-extras

Monté un nat en el host que hospeda para que tenga acceso a Internet la máquina virtualizada

   echo 1 > /proc/sys/net/ipv4/ip_forward 
   iptables -A INPUT -p TCP -m state –state RELATED -j ACCEPT
   iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -d 0.0.0.0/0 -j MASQUERADE
   iptables -A INPUT -i eth0 -p TCP –dport 80 -m state –state NEW -j ACCEPT

Me busque una imagen de debian sobre mips

   sudo /usr/bin/qemu-system-mips -kernel ‘debian_mips/vmlinux-2.6.32-5-4kc-malta’ -append ‘root=/dev/sda1 console=ttyS0’ -boot c -m 256 -hda ‘debian_mips/debian_squeeze_mips_standard.qcow2’ -net nic,vlan=0 -net user,vlan=0 -localtime -nographic

root/root

Y monté los directorios necesarios en la máquina virtualizada

   mount -o bind /dev /root/squashfs-root/dev/
   mount -o bind /tmp /root/squashfs-root/tmp
   mount -o bind /proc /root/squashfs-root/proc

Y realice un chroot

  chroot /root/squashfs-root /bin/sh

Copie el file system a través de ssh al nuevo sistema virtualizado
scp simon@10.0.2.2:/extract/squashfs-root.tar .

Y probé a ejecutar el etc/profile (cfm) pero daba problemas por temas de librerías con versiones distintas

   ldd cfm

También probe a intentar compilar un kernel para MIPS con la misma versión que el de Vodafone pero daba muchos problemas por lo que dejamos esta vía de lado sólo tenemos 7 días.

Opte por instalarme un desensamblador IDA para examinar las librerías y los binarios, una pena que no me funcionase el qemu porque no pudé debugearlo en remoto. Después de pendulear de un lado para otro por el IDA y por lo métodos desemsamblados la impresión que me quedó (no me jugaría la nómina a ello) es que no hay una generación de la clave wifi por defecto a partir de los valores de la red sino que se carga leyendo datos hardcodeados de la memoria, es decir que no parece que sea posible sacar la clave únicamente a partir de firmware sino que necesitaríamos tener un router y un JTag (y mucha paciencia) para ver cuando lee y de donde la clave wifi por defecto.

Resumiendo que después de 7 días de dar vueltas me quedé muy lejos del objetivo, de hecho a día de hoy no he leído que haya caído  la generación de las claves por defecto de los routers de Vodafone (que no significa que no haya pasado).

Anuncios