Laboratorio de Hacking (I): Wifi GL-AR150 Pineapple Nano 2.0.2 “Enhanced”

Con este artículo me gustaría abrir una serie de entradas para que la gente que esté interesada en el sector de la seguridad informática y se esté iniciando en él, tenga un punto de partida e ideas para hacer sus propias herramientas o mejorar las actuales. La intención principal es que al final de la serie se hayan podido explicar varias herramientas relacionadas con la seguridad informática, tanto de ataque como defensa, de forma que cada cual pueda conseguir un laboratorio propio donde practicar sus habilidades.

Wifi GL-AR150 Pineapple Nano 2.0.2 “Enhanced”

El primer gadget de nuestro nuevo laboratorio será una Wifi Pineapple Nano hecha con un router GL.Inet GL-AR150 y una tarjeta de Wifi USB TP-Link TL-WN722N v1. Usaremos una máquina con Linux de 64 bits para este propósito.

¿Por qué un GL-AR150 y una TL-WN722N v1? Por sus características:

  • GL-AR150:
    – Memoria RAM: 64MB
    – Memoria Almacenamiento: 16MB Flash + MicroSD
    – SoC: Atheros AR9331
    – Conectividad: 2×10/100 Mbit Puertos Ethernet, 802.11 b/g/n Wi-Fi hasta 150Mbps
    – Debug: Consola Serie via UART (GND,Tx,Rx)
    – Puertos expansión: 6 GPIO, MicroSD ,5V, 3.3V y GND
    – Miscelánea: Reset, Leds estado
    – Alimentación: Micro USB 5V
  • TL-WN722N v1:
    – Chipset: Atheros AR9271 802.11 b/g/n

 

 

Frente a:

  • Wifi Pineapple Nano Original:
    – CPU: 400 MHz MIPS Atheros AR9331 SoC
    – Memoria RAM: 64 MB DDR2 RAM
    – Memoria Almacenamiento: 16 MB ROM + Micro SD (no incluida)
    – Conexiones Wireless: Atheros AR9331 + Atheros AR9271, ambas IEEE 802.11 b/g/n
    – Puertos: (2) RP-SMA Antenas, Ethernet over USB (ASIX AX88772A), USB 2.0 Host, Micro SD
    – Miscelánea: Indicador LED y Botón Reset configurables
    – Alimentación: USB 5V 1.5A

No hace falta decir que las similitudes entre las dos configuraciones son evidentes, así que no es muy descabellado pensar que podrían comportarse de forma similar.

Para ello lo que tenemos que hacer es:

  • Hacernos con el “firmware-mod-kit” de https://code.google.com/archive/p/firmware-mod-kit/wikis/Documentation.wiki siguiendo su how-to paso a paso
  • Extraer el firmware de la Wifi Pineapple original de su página oficial (https://www.wifipineapple.com/nano) con el “firmware-mod-kit” —> ./extract-firmware.sh upgrade-2.0.2.bin
  • Hacer un clone de la versión de OpenWRT del Github del equipo que desarrolla este firmware para el GL-AR150 —> clone https://github.com/domino-team/openwrt-cc/tree/73d51063bca71574206f2ce162f6bc6046f8e3ab/include
  • Copiaremos todo el contenido de los datos extraídos del firmware en la carpeta del firmware OpenWRT que estamos compilando —> cp -r firmware-mod-kit/fmk/rootfs/* openwrt-cc/files/
  • Borraremos los módulos de OpenWRT ya que estos no los necesitaremos —> rm -rf openwrt-cc/files/lib/modules/3.18.23/
  • Borraremos también los módulos en versión de prueba —> rm -rf openwrt-cc/files/sbin/modprobe
  • Finalmente podremos compilar nuestro firmware —> make menuconfig (y por último) make

Por si no tenéis claro los pasos a seguir podéis guiaros de esta lista de comandos:

#/bin/bash
apt-get update
# descargar firmware
wget https://www.wifipineapple.com/downloads/nano/2.0.2 -O upgrade-2.0.2.bin
#descargar e instalar Firmware Mod Kit
apt-get install git build-essential zlib1g-dev liblzma-dev python-magic
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/firmware-mod-kit/fmk_099.tar.gz
tar -zxvf fmk_099.tar.gz
cd fmk
# Instalar Binwalk localmente y extraer el firmware
echo "BINWALK=binwalk" >> shared-ng.inc
./extract-firmware.sh ../upgrade-2.0.2.bin
cd ..
#descargar e instalar OpenWRT Chaos Calmer
apt-get install subversion build-essential git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip git
git clone https://github.com/domino-team/openwrt-cc.git
cp -r fmk/fmk/rootfs/* openwrt-cc/files/
rm -rf openwrt-cc/files/lib/modules/3.18.23/
rm -rf openwrt-cc/files/sbin/modprobe
cd openwrt-cc
git checkout 73d51063bca71574206f2ce162f6bc6046f8e3ab
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
make

Si tenéis problemas con el “make menuconfig” y os da el error de sync, para haceros la vida más fácil podéis usar mi archivo .config (incluido en el paquete .tar)

Tenemos que usar una máquina Linux de 64 bits para que la crosscompilación no falle a mitad de proceso en el target/Linux. Se puede fallar bastante en este paso si no utilizáis un Linux de 64 bits.

Si todo ha salido bien (después de unas horas crosscompilando) tendremos nuestro firmware en el directorio /bin dentro de la carpeta donde estemos trabajando. Habrá muchos ficheros pero los .bin que nos interesan son los que elegimos como target en el menuconfig, en nuestro caso GL.Inet-factory.bin y GL.Inet-squashfs.bin de los cuales solo usaremos el factory.

Ahora que estamos compilando el firmware de nuestra piña en la versión 2.0.2 (la más actualizada hasta la fecha) llega el momento de mejorarla. En la compilación de openwrt (make menuconfig) saldrán mensajes para instalar varios drivers de chipsets de tarjetas Wifi y tendrás que instalar el driver correspondiente a la tarjeta que quieras usar. De esta forma podrás hacer nuestra piña nano modificada compatible con más modelos y ser más versátiles. El motivo de usar la tarjeta de red TP-Link TL-WN722N v1 es que esta tarjeta posee el chipset AR9271 el cuál es nativo en la Wifi Pineapple original, pero añadiendo más drivers ampliaremos nuestras posibilidades (cuidado con el espacio que es limitado).

Para instalar el firmware que acabamos de compilar en nuestro GL-AR150 hay que seguir los pasos de este enlace: http://www.gl-inet.com/uboot-flashing/

Para familiarizarse con nuestro nuevo dispositivo, recomiendo echar un vistazo a este enlace: https://forums.hak5.org/topic/37196-wifi-pineapple-primer/

Si tenemos una versión anterior de la wifi pineapple instalada o por cualquier motivo el firmware actual no deja instalar el nuevo, habrá que flashear por bootloader, para ello:

  • En el router:
    • Con el router sin encender, conecta un cable RJ-45 al puerto LAN o WAN del router directamente al PC
    • Presiona el botón de reset mientras conectas el router a la corriente
    • Deja que la luz roja parpadee 5 veces
    • Deja de pulsar el botón de reset cuando la luz roja parpadee la 6ª vez (La luz verde central se encenderá en el sexto parpadeo)
    • Después de soltar el botón, la luz roja parpadeará muy rápido por aproximadamente 1 segundo
    • Si solo un led verde de uno de los laterales está encendido, el router estará en modo seguro bootloader
    • Si los dos leds verdes están encendidos significa que te has pasado mucho tiempo presionando el botón reset y hay que empezar el proceso de nuevo.
  • En el PC:
    • Configura tu tarjeta de red Ethernet para que use la IP 192.168.1.2 y máscara de red 255.255.255.0
    • Abre un navegador y accede a 192.168.1.1
    • Haz clic en “upload your firmware” y elige el archivo .bin que quieras flashear
    • Haz clic en “apply”

Hecho esto, se “flasheará” el firmware nuevo en el router, y cuando termine el proceso podrás disfrutar de sus nuevas funciones.

Para acabar, después de haber leído todo el artículos, y a modo de resumen, os digo que todo el proceso anterior se puede hacer de una forma más fácil, GL.Inet pone a disposición de sus usuarios una versión limpia de OpenWRT aparte de sus versiones modificadas para diferentes propósitos. El proceso anterior nos sirve en el caso de que la Wifi Pineapple original se actualice, ya que no podemos usar el método original de actualización, si no que para instalar las actualizaciones nosotros tendremos que compilar un firmware con la nueva actualización y flashearlo por “uboot secure mode” (bootloader).

Es preferible usar el firmware que nos proporciona GL.Inet, ya que sabemos con certeza que funciona sin problemas, y a partir de él (ya instalado) podemos hacer modificaciones, como instalar los drivers que nos faltan y los archivos necesarios para hacer funcionar nuestra Wifi Pineapple. Recuerda que si instalas el firmware limpio, tienes que conectar el router a internet y descargar los módulos correspondientes a los drivers que quieras instalar ya que después de instalar la modificación de la Wifi Pineapple Nano no podrás modificar nada a no ser que instales de nuevo el firmware base.

En el siguiente paquete .tar tenéis a vuestra disposición el Firmware Limpio y el Binario Archivos Wifi Pineapple Nano 2.0.2.

Cuando terminemos de instalar los archivos de la Wifi Pineapple, tendremos que conectarnos a su wifi “WifiPineapple” abierta y conectarnos con un navegador a la IP http://172.16.42.1:1471/ para configurar por primera vez nuestro nuevo juguete.

Para empezar a usar los módulos en nuestra Wifi Pineapple Low Cost podemos guiarnos por la lista que hay en su página oficial, y pasarnos por el foro de Hak5 y su GitHub.

[Actualización 22/03/2018] Añado los consejos de @Note puestos en los comentarios para una mejor configuración del GL-AR150:

  1. Usa el commit c5bd07ed463b86eb9ec2874ed435f700db876a01 que es el siguiente al que pone en el post. En ese ya aparece el target profile del GL-AR150.
  2. No uses una distro demasiado moderna para la construcción de esta versión del firmware. Pueden aparecer incompatibilidades al compilar el toolchain que trae.

Comments

  1. es dificil conseguir el GL-AR150 en mexico, que otro modem podria sustituirlo?

  2. Good job!

  3. Hola,

    Excelente artículo, estoy en ello pero por más que busco no encuentro la version 1 del TL-WN722N. Todo lo que encuentro es la version 2 con realtek y por lo que he buscado no es compatible (con linux). ¿Que hago?

    Gracias.

  4. @Talogeta: Thank you! :)

    @belafon: Hola, he puesto la TL-WN722N v1 por que está mas o menos extendida, pero te debería servir cualquier tarjeta USB con chipset Atheros AR9271

    Espero que te haya solucionado la duda

  5. Hola,

    En el fichero .config que has dejado colgado (AR150Mio.config), creo que has dejado por defecto seleccionado como target GL.iNet 6416 en lugar de GL-AR150.

    Un saludo.

  6. @Obakemono: Cierto, se me fue la mano. Lo corregiré lo antes posible. ¡Muchas gracias por el aviso!

  7. Arreglado el enlace del .config

  8. Un par de humildes consejos por si son útiles a alguien:

    1) Usa el commit c5bd07ed463b86eb9ec2874ed435f700db876a01 que es el siguiente al que pone en el post. En ese ya aparece el target profile del GL-AR150.

    2) No uses una distro demasiado moderna para la construcción de esta versión del firmware. Pueden aparecer incompatibilidades al compilar el toolchain que trae.

  9. @Note: Muchas gracias por los consejos, cuando pueda actualizare el artículo con ellos, así se verán mejor :D