Saludos gente, ya sé que os tengo abandonados pero es que últimamente estoy a mil cosas a la vez, pero eso no significa que saque un poco de tiempo para trastear jeje
Precisamente intentando hacer unas pruebas (nada malo señor agente) para probar la seguridad de mi wifi me encontré con la sorpresa de que mi Pi Zero no soportaba modo monitor… RTFM como suelo decir, a veces me tengo que aplicar el cuento.
Efectivamente el chipset wireless Broadcom bcm43430a1 que traen tanto la pi 3 como la zero no soporta modo monitor con el módulo nativo … pues genial … ¿y ahora que hacemos? Unas cuantas consultas a San Google después me encontré con nexmon que, según su descripción, viene a ser un framework hecho en C para parchear el firmware de chipsets broadcom y cypress para habilitar el modo monitor y la inyección.
Pues seguís los pasos y ya está, nos vemos otro día, como siempre grac…. ¿Como? ¿Que no compila? Pues claro, ya tardaba la ley de Murphy, o lo que hace realmente divertida la informática. Resulta que por alguna razón mi recién flasheado raspbian no quería que le metiera la mano debajo del capó y se negó en rotundo a que los pasos de la gente de nexusmon en github, para mi modelo, para Debian, para la versión stretch, pues que no debía funcionar y punto. Me jodió bastante porque ha sido de las pocas veces que me he encontrado una buena documentación paso a paso y por algún motivo que no llegué a comprender (vale si, no me maté demasiado en el troubleshooting) al final no nos sirven de nada.
Pero tras unas cuantas consultas más a San Google ¡incluso llegar a la página dos de resultados! me encontré con que le kernel Re4son ya traía dicho módulo de nexmon precompilado, ¡bien!
Aquí tengo que reconocer que me acojoné bastante porque no paraban de hablar de firmware, ese software, tan tocahuevos a veces, que hace que nuestros cacharretes funcionen y que toqueteando más de la cuenta a veces nos deja con un bonito pisapapeles, pero… ¿como que firmware? ¿si el problema es un módulo del kernel que pinta el firmware? Pues nada, me asusté por no darme cuenta de que hay gente que no diferencia un kernel de un firmware y simplemente utilizaban el termino inadecuado.
Aún así no las tenía todas conmigo, el kernel de Re4son está basado en la versión 4.9.41 y yo tenía la 4.9.50, no debería haber problema, pero ¿os acordais del tal Murphy? Por esta misma razón decidí hacer un backup de la tarjeta por si acaso se llevaba el sistema por delante y, que demonios, nunca está demás backear por si las moscas.
La verdad es que las instrucciones de la web están muy bien aunque algunos pasos parecen desactualizados, por si os interesa están en inglés aquí.
Después de tanto rollo e historieta vamos a ensuciarnos las manos, comentaros que todo esto lo he realizado en una instalación limpia de Debian Stretch para la Pi Zero, debería de funcionar para otros OS pero por si las moscas avisados quedáis.
Todo esto lo haremos como root y si no sabéis como usar sudo o su os recomiendo que paréis aquí y lo busquéis primero, os estaréis metiendo en camisas de once varas si los conocimientos necesarios.
Primero montamos la partición boot, cambiad el dispositivo dev por el correspondiente en caso de que no sea el mismo:
mount /dev/mmcblk0p1 /boot
Nos vamos al directorio /usr/local/src:
cd /usr/local/src
Y nos bajamos la última versión del instalador y la descomprimimos:
wget -O re4son-kernel_current.tar.xz https://whitedome.com.au/re4son/downloads/11299/ tar -xJf re4son-kernel_current.tar.xz
O si queremos la antiguo estable basada en el kernel 4.4:
wget -O re4son-kernel_old.tar.xz https://whitedome.com.au/re4son/downloads/12009/ tar -xJf re4son-kernel_old.tar.xz
Entramos en la carpeta y ejecutamos el instalador:
cd re4son-kernel_4* ./install.sh
El instalador nos hará algunas preguntas sobre si queremos instalar los módulos tanto de bluetooth como de wireless, lógicamente le damos que sí ya que para eso estamos haciendo todo esto ¿no?
Al finalizar la instalación … ¿ya? Pues sí, la verdad es que no tuve ningún problema durante el proceso de instalación, un buen script de bash que se ocupó de instalar, desinstalar y actualizar todo lo necesario. Así que sí, al finalizar la instalación reiniciamos y ya tendremos nuestra pi con el nuevo kernel.
Ahora vienen unos cuantos detalles que en la documentación están explicados mal o desactualizados y que os conviene saber.
Primero algo que sí está explicado es el tema del bluetooth y los sources del kernel. Re4son instala una versión modificada de bluez lo cual puede hacer que aparezcan errores al intentar actualizar el sistema ya que habrá problemas de dependencias, para solucionar esto simplemente nos vamos al instalador otra vez y desinstalamos el bluetooth:
cd /usr/local/src/re4son-kernel_4* ./install.sh -r
Y después de actualizar lo instalamos de nuevo:
./install.sh -b
Fácil, sencillo y para toda la familia. Para instalar los sources del kernel proceso es similar, llamamos al instalador pero de la siguiente manera:
cd /usr/local/src/re4son-kernel_4* ./install.sh -e
Con esto ya tendríamos todo listo para poder seguir operando con nuestra pi, compilando módulos, usando bluetooth, etc, etc pero todo esto ha comenzado por la wifi, vamos a probar el modo monitor.
Al utilizar los drivers de nexmon ya no es necesario utilizar airmon-ng, simplemente ejecutamos el siguiente comando para cambiar la interfaz a modo monitor:
nexutil -m2
Y para devolverla a modo managed:
nexutil -m0
Ahora ya podremos esnifar paquetes y utilizar el modo monitor de forma pasiva, y si, he dicho pasiva, porque después de volverme loco intentado saber porque demonios la inyección no funcionaba cuando se suponía que el módulo nuevo lo soportaba es porque realmente no estamos utilizando el módulo que debemos, por defecto se carga un módulo el cual soporta modo monitor pero no inyección (modulo original no soporta nada, modulo de nexmon soporta ambos, y este solo soporta monitor, parece que se quedo entre medias) después de hacer un locate descubrí que el módulo que quería se encontraba en la carpeta de instalación de Re4son, así que vamos a hacer el cambio y ver que pasa.
Vamos a movernos a la carpeta donde esta el nuevo módulo, si utilizasteis la misma carpeta el comando sería:
cd /usr/local/src/re4son-kernel_4.9.41-20170829/nexmon/armel
Quitamos el módulo antiguo:
rmmod brcmfmac
He insertamos el nuevo:
insmod brcmfmac.ko
Realizamos una prueba simple con aireplay-ng (podéis instalarlo de los repos de Debian):
Como veis primero hemos cambiado la interfaz a modo monitor utilizando nexutil, ha continuación confirmo que efectivamente esta en dicho modo y finalmente aireplay nos da la buena noticia de que la inyección finalmente está funcionando.
Y eso es todo por hoy, quizás me haya explayado mucho o quizás os esperabais algo más relacionado con la seguridad, pero ¿que mejor para seguridad que un cacharrete que puedes llevar en la cartera (no lo recomiendo, muy frágil jeje) y que ya no solo puede hacer de rubber ducky, realizar ataques poison tap, etc sino que ahora también permite realizar todo tipo de ataques wireless? ¡Si es que el cacharro este lo tiene todo! jajajaja
Bromas aparte, muchas gracias por vuestra visita y espero os haya gustado, saludos!