Raspberry Pi Kali Rogue AP (falso AP) y error hostapd con USB Wifi Edimax (RT2501/2573)

Raspberry Pi como Punto de Acceso (AP) Ethernet conectado a internet y pincho USB wifi para AP

Existen muchos tutoriales de cómo usar la Raspbberry Pi como Punto de Acceso.

Un caso particular es usar un Punto de Acceso Falso (Rogue AP/ Fake AP) con fines de hacking o penetration testing. Para ello usamos la distribución de Kali preparada para la Raspberry Pi (disponible en la web de kali: www.offensive-security.com/kali-linux-vmware-arm-image-download/ )

Preparé todo el entorno e instalé todas las herramientas necesarias: (servidor dhcp y dns con dnsmasq,   punto de acceso con hostapd, configurar iptables para pasar todo el tráfico de la tarjeta Ethernet con internet a la wifi-usb que proporciona el AP, y configurar ipforwarding)

Al hacer la prueba, conectándome con el teléfono móvil, aparecen los problemas, no se conecta (esperando ip…). Los logs del hostapd muestran un problema de conexión, mostrando los errores “did not acknowledge authentication response” y  “did not acknowledge association response”.. Luego mostraba una des-asociación del cliente (el móvil)…Ni siquiera poniendo una ip fija en el móvil se solucionaba el error.

Bug de hostapd para USB Wifi Con Chipset Ralink RT2X00

Buscando en internet, encontré que el error es conocido y se repite en los pinchos USB Wifi con chipset Ralink rt2x00. Es un pequeño bug y se puede parchear recompilando la herramienta hostapd . Las indicaciones están en http://eznemegy.blog.hu/2008/12/14/using_rt2x00_wireless_driver_with_hostapd

Antes de nada comprobé mi hardware, un pincho usb-wifi Edimax EW-7318USg

lsusb (Ralink RT2501/RT2573 ):

lsusb
Con lsmod vemos el problema (bug RT2x00)

lsmod

 

 

 

Antes de seguir las instrucciones y recompilar, primero desinstalé hostapd (apt-get remove hostapd). El binario se eliminó, per me dejó, no obstante, los archivos de configuración de la herramienta, que luego sirven.

Para poder compilar, primero hay que instalar las herramientas adecuadas (la imagen de Kali para la Raspberry Pi no tiene todo lo que la distribución normal):

apt-get install libssl-dev libnl-dev   
apt-get install build-essential

Ahora hay que descargarse la última versión de hostapd desde su web:

http://w1.fi/releases/hostapd-2.3.tar.gz

Una vez descomprimida, nos movemos al directorio donde se encuentra el archivo a parchear  ieee802_11.c, que está en mi caso en  /root/hostapd-2.3/src/ap

Cambiamos el código como se indica en la web anterior que soluciona el bug , comentando el return (yo también modifiqué el mensaje para mostrar en el log, pero no salía, pues el error se solucionaba).

En la captura muestro las diferencias con el archivo original:

diff ieee802_11.c
Compilé todo desde el directorio /root/hostapd/ (antes de compilar hay que seguir el README y crear un archivo de configuración para el makefile, p. ej. copiando el existente de ejemplo: cp defconfig .config). Se compila de la manera habitual en Linux: make / make install. 
El ejecutable lo pone en :

hostapd path

 

 

PERO SEGUÍA SIN FUNCIONAR.

Solucionado

Mirando un poco los resultados de la compilación y el Makefile, comprobé que el archivo modificado (ieee802_11.c) no se había compilado, porque el Makefile lo había excluido por parámetros de configuración. Eliminando las líneas que buscaban esa configuración, y obligando por tanto a compilar el archivo parcheado volví a compilar todo (make / make install) y esta vez SÍ FUNCIONÓ!!!!

El Makefile original con lo que borré:

Makefile
Y las diferencias entre el modificado y el original:

diff makefile

Para ejecutar la herramienta se usa el comando:

hostapd -dd /etc/hostapd/hostapd.conf

Con esto hice de nuevo la prueba y el móvil se conectó de inmediato, obtuvo su ip por el dhcp del dnsmasq y navegaba por internet, pudiendo interceptar el tráfico con la Raspberry Pi (de la manera habitual, tcpdump, etc).

Como antes comenté, la instalación inicial de hostapd y su desinstalación, dejaron los archivos de configuración, por tanto, modificándolos con la ruta (path) del nuevo binario, se puede arrancar como servicio al inicio .

hostad init

Espero que a alguien le sirva

Leave a Reply

Tu dirección de correo electrónico no será publicada.