domingo, 4 de enero de 2015

Liberar la fonera 2100 con dd-wrt y ampliar sus posibilidades de uso.

Estos son los pasos que he seguido para "desbloquear" la Fonera, modelo 2100, e instalar el último firmware de dd-wrt (versión v24 PreSP2 [BETA] 21061),específico para FON "LaFonera 2100A/B/C", que lo podéis bajar gratis en dd-wrt.com

El firmware proporcionado por dd-wrt cuenta con las funcionalidades más avanzadas que sacará el provecho todo el potencial de la fonera, desperdiciado por el firmware estándar y capado por FON. Los pasos descritos son los mismos que he seguido para instalar en mi fonera (solo modelo 2100) y funcionó, pero de todas maneras declino cualquier tipo de responsabilidad que pudiera ocurrir con vuestras foneras, ya que entiendo que los que siguen estas instrucciones lo hace por su voluntad y riesgo propios. Si no quieres correr ningún riesgo, aconsejo dos posibilidades: Dejar la fonera como está, o dejarlo a cargo de un profesional informático que tenga conocimientos y experiencia técnica en flasheos de routers.


PREÁMBULO: Antes que nada, hay que comprobar la versión del fimware de la fonera. Si es 0.7.2 r1, pues enhorabuena y saltaremos directamente al PASO 1. Si la versión es distinta a la señalada, lo primero que tendremos que hacer es localizar en la red y bajar el firmware original de FON de la versión que mencioné antes. El firmware original está protegido por derechos de FON, y por tanto no cologaré nada aquí. Lo encontrarás googleando, descargarlo y subirlo desde el pc a la web de la fonera, pero acordaros de realizar con la fonera sin conexión directa a internet, para que no pueda actualizarse por otro superior automáticamente). La razón de peso para usar una versión concreta es que tiene una vulnerabilidad de seguridad y se aprovecha esa vulnerabilidad de seguridad para "liberar" la fonera, que está bloqueada de tal manera que solo sirva para uso exclusivo de FON. Para cambiar la versión de firmware se debe ir al panel de control (web) de la fonera, seleccionar opción Advanced > Firmware upgrade.



PASO 1: Resetear la fonera a los valores de fábrica, pulsando reset durante más de 30 segundos y sin conexión a Internet. Comprobar la versión que tenga instalada sea 0.7.2 r1 desde el panel de control de la fonera. Conectar la fonera con un puerto ethernet libre ordenador que no tenga acceso a internet y el S.O. sea windows. Se recomienda hacerlo con el cable que viene con la fonera de serie.

Nota: para acceder al panel de control, se debe tener la fonera conectada al pc y con esos siguientes datos:

IP fija del PC configurando el adaptador de red --> 169.254.255.2
Máscara: 255.255.255.0
Sin puerta de enlace ni DNS

Para abrir la web de la fonera, enchufamos la fonera al pc y abrimos el navegador. Tecleamos 169.254.255.1 

Usuario y contraseña, ambas "admin", tal cual sin las comillas y en minusculas.

PASO 2: Conectar a Internet (Sin router FON conectado), descargar y reunir las siguientes aplicaciones:

1.- TFTP: Lo bajamos en http://tftpd32.jounin.net/ o en http://tftpd64.jounin.net según los bits que trabaje el sistema operativo windows (32 bits o 64 bits). Puede que necesite algún complemento adicional para el correcto funcionamiento del programa. Lo indicará en tu windows al arrancar el programa.


Tftpd screenshot

2.- Firmware dd-wrt: Lo bajamos en http://www.dd-wrt.com/site/support/router-database, situando en el campo del buscador "Fonera" y seleccionar la versión 2100. Seleccionamos la versión, descargamos el fichero y descomprimiremos sacando "linux.bin". Este fichero debe ir dentro de la carpeta del programa TFTP.





3.- Putty:Lo podeis bajar en http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


4.- descargar los dos ficheros Redboot
  1. openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma --> Se baja en http://www.alluc.com/l/openwrt-ar531x-2-4-vmlinux-CAMICIA-lzma/94tosdd
  2. out.hex  --> lo podeis bajar en https://app.box.com/shared/aj1yb53p12

PASO 3: Explotar la vulnerabilidad y habilitar la conexión SSH

Descargar los siguientes scripts, pulsando sobre el enlace botón derecho del ratón "Guardar como...", para luego ser ejecutado en el momento adecuado y sin conexión a internet.


  • Paso1.html --> Página preparada con la direccion IP 192.168.0.1, predeterminada de la fonera , para inyectar el código que permitirá habilitar una regla en el firewall que permitirá el paso por el puerto 22.
  • Paso2.html --> Pagina preparada que arrancará el dropbear en la fonera, el demonio que estará pendiente de las peticiones SSH.

Conectamos la fonera (Sin internet), encendemos y esperamos un poco a que esté disponible por wifi el SSID "MyPlace". La conecto con el usuario admin y la contraseña el código imprimido en la etiqueta del producto pegada en el fondo de la fonera. 

Una vez conectado con la fonera por wifi, abrimos el navegador el fichero paso1.html y lo ejecutaremos. 

Después, abriremos el siguiente fichero Paso2.html en el navegador, y lo ejecutaremos. 

Si no hubo ningún aviso, es que va todo bien. A continuación ya podremos acceder por SSH con Putty, con el usuario y contraseña en mano. Una vez dentro del SSH (el nucleo de la fonera es un linux), hay que modificar un fichero para fijar el acceso permanente a la SSH de la fonera cada vez que se encienda la fonera.

mv /etc/init.d/dropbear /etc/init.d/S50dropbear

A continuación en el fichero /etc/firewall.user (se ejecuta tecleando vi /etc/firewall.user) hay que quitar la "almohadilla" para descomentar las siguientes líneas

# iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT

# iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT

para ello utilizo el editor vi que viene incorporado en el linux del router. Los siguientes comandos del editor :q!, para salir sin modificar, :wq para guardar cambios y salir del editor).

Por último, para evitar las actualizaciones seguiremos estos pasos para modificar el fichero

Fichero: /bin/thinclient (ejecutamos con vi /bin/thinclient)

localizamos la linea /tmp/.thinclient.sh (es la última del fichero) y lo comentamos poniendo la almohadilla

#/tmp/.thinclient.sh

y añadimos al final este código (Ojo, revisar que no haya errores de tipeo. Tal cual como se indica a continuación).
#.- Don't let FON 'automagically' update 'our' router
if [ -s /tmp/.thinclient.sh ]; 
then
for f in /tmp/thin* ; do
:
done
if [ -f "$f" ]; then
if [ $(md5sum /tmp/.thinclient.sh |
cut -d ' ' -f 1) != $(md5sum `ls $f` | cut -d ' ' -f 1) ] ; then
cp /tmp/.thinclient.sh
/tmp/thinclient-$(date '+%Y%m%d-%H%M')
fi
else
cp /tmp/.thinclient.sh
/tmp/thinclient-$(date '+%Y%m%d-%H%M')
fi
fi

Guardamos los cambios y salimos de la aplicación vi. Tecleamos "Reboot" y damos el intro. Esperamos a que aparezca nuevamente la wifi "MyPlace" y que podamos entrar por SSH (Por wifi desde MyPlace) con Putty.

PASO 4: Instalar y habilitar REDBOOT

A partir de aquí ya estamos en condiciones para flashear y sustituir el firmware original por la que hemos bajado de dd-wrt.com (LINUX.BIN). Pero antes que nada hay que preparar el acceso al Redboot.

Colocamos los dos ficheros en un servidor de internet. Podemos conectar la fonera al router con acceso a internet. 

Entramos por SSH con Putty via wifi (MYPLACE) tecleando la correspondiente IP de la fonera y puerto 22.

Una vez dentro de la fonera, teclear los siguientes pasos:

cd /tmp
wget http://(URLdelServidor donde tengas colocado el fichero)/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7



Reiniciaremos la fonera ejecutando "Reboot". Tras el reinicio conectamos por wifi al router via SSH y tecleamos lo siguiente:

cd /tmp
wget http://(URLdelServidor donde tengas colocado el fichero)/camicia/out.hex
mtd -e "RedBoot config" write out.hex "RedBoot config"

reboot

PASO 5: Preparar el PC para flashear directamente a la fonera.

Apagamos la fonera y desenchufamos el cable ethernet de la fonera que unía con el router de internet.

Configuramos el adaptador del pc, estableciendo como fijo los siguientes parámetros.

IP del PC: 192.168.1.200
Máscara: 255.255.255.0
Puerta de enlance: 192.168.1.1

Necesitamos preparar los ficheros del Servidor, colocando el escritorio los archivos del programa la carpeta con el nombre "TFTP" (o la que querais), y dentro de ella el fichero copiamos el fichero del nuevo firmware a flashear "linux.bin", para que esté accesible desde el servidor. Arrancamos el servidor TFTP y dejamos como está por defecto, no hay que tocar nada. (SE RECOMIENDA EJECUTAR EN UN PC QUE USE WINDOWS como sistema operativo. Yo lo hice con windows 7. En un PC con linux se corre riesgo de que el flasheo fracase y la fonera se convierta en un pisapapeles. No me preguntes el por qué).

PASO 6: Flasheando con el nuevo firmware dd-wrt

Con el servidor TFTP arrancado, y el fichero "linux.bin" dentro de la carpeta del programa TFTP, iniciamos el programa PUTTY y prepararemos con los siguientes parámetros, pero de momento no pulsaremos el botón "OPEN". Solo dejarlo preparado para conectar.

IP de la fonera: 192.168.1.254
Puerto: 9000
Tipo de conexión: Seleccionar "Telnet". 
Guardar la configuración "Save".




Enchufamos la fonera por cable ethernet entre el PC y fonera (OJO sin conexión a INTERNET. Antivirus y cortafuegos desactivado, por si acaso). La encendemos la fonera y, dentro de los 10 primeros segundos de inicio pulsamos al botón "OPEN" del putty. Cuando se abra la pantalla pulsamos la tecla intro hasta que me salga prompt "RedBoot>" (Pulsar Control + C para abortar y permanecer en redboot. Si no aparece, repetimos la operación. Recuerda, que solo son 10 segundos que dispone la fonera para entrar al RedBoot.

A partir de este momento tenemos que reproducir la siguiente secuencia, tal como se indica a continuación:


  • En cuanto aparezca "== Executing boot script in 9.090 seconds - enter ^C to abort" , pulsar Ctrl+C rápidamente para detener el script de inicio del RedBoot, nos debe aparecer el prompt "RedBoot>"
  • Teclear lo indicado en rojo:
    RedBoot> ip_address -h 192.168.1.166
    RedBoot> fis init
    RedBoot> load -r -b 0x80041000 linux.bin
    RedBoot> fis create linux (tardará unos 20 minutos en reaccionar, esperar)
    RedBoot> fconfig
    RedBoot> 
    RedBoot> Run script at boot: trueBoot script:
    RedBoot> Enter script, terminate with empty line
    RedBoot> >> fis load -l linux
    RedBoot> >> exec
    RedBoot> >>
    RedBoot> Boot script timeout (1000ms resolution): 10
    RedBoot> Use BOOTP for network configuration: false
    RedBoot> Gateway IP address:
    RedBoot> Local IP address: 192.168.1.254
    RedBoot> Local IP address mask: 255.255.255.0
    RedBoot> Default server IP address: 192.168.1.166
    RedBoot> Console baud rate: 9600
    RedBoot> GDB connection port: 9000
    RedBoot> Force console for special debug messages: false
    RedBoot> Network debug at boot time: false
    RedBoot> Update RedBoot non-volatile configuration - continue (y/n)? y
    RedBoot> ... Erase from 0xa87e0000-0xa87f0000: .
    RedBoot> ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    RedBoot> reset
La imagen que pongo a continuación, a título de ejemplo, es una captura de los pasos que hice para liberar la fonera, desde el inicio de redboot al encender la fonera hasta el final del flasheo con éxito.



Una vez finalizado el flasheo, el router se reinicia solo al pulsar reset y ya solo queda entrar en la página de administración del router http://192.168.1.1 con usuario root y clave admin para configurarlo como deseemos. Con la misma firmware dd-wrt también servirá para configurar para usar como fonera de FON si es que deseemos seguir con FON, pero es un tema aparte que lo haré más adelante.

Si lo hacéis esto no olvidéis de comentar vuestras experiencias o cualquier otro aporte para mejorar este artículo, el cual se agradece de antemano.

P.D.: Para que no haya lugar a dudas, se insiste que el autor de este artículo declina cualquier tipo de responsabilidad que pueda suceder con vuestras foneras, pues se entiende que lo hacéis por vuestra cuenta y voluntad, sin ningún tipo de obligación. El que no quiera correr riesgos, recomendamos no hacer nada a la fonera y la deje como estaba con su firmware original. Este artículo ha sido tomado con fines educativos y no se permite bajo ningún concepto sacar beneficio económico por terceros de este trabajo.


1 comentario:

  1. Buenas!

    Este proceso serviria, entonces, para usar la Fonera como Router? O solo para punto de acceso?

    Tengo una en casa y queria sacarle algún provecho.

    Gracias!

    ResponderEliminar