En esta entrada utilizaremos Flipper Zero para extraer claves de Wifi en equipos Windows, aprovechando la característica de Bad USB.
Antes de empezar, ya deberías comprender los conceptos básicos de Flipper Zero, y también tener instalada la aplicación qFlipper.
Ahora sí, comencemos:
Uso de Bad USB en Flipper Zero
Una de las capacidades de Flipper Zero, además de todas las bondades que ofrece, es la de actuar como un dispositivo BadUSB, es decir, que es reconocido por un equipo como un dispositivo de interfaz humana (HID). Un dispositivo de interfaz humana, es un periférico diseñado para que una persona interactúe con un equipo, permitiendo a los usuarios ingresar datos o controlar funciones del equipo. Algunos ejemplos de HID son: teclados, mouse, controladores de juego, pantallas táctiles, etc.
Con la función de BadUSB en Flipper Zero, podemos modificar la configuración del sistema, instalar backdoors, iniciar reverse shells, extraer data, etc. Otros dispositivos que tienen la misma capacidad son: Rubber Ducky, Bash Bunny, Malduino, Rasberry Pi Pico

Es importante resaltar, que en el caso de Flipper Zero, también se puede utilizar la funcionalidad de BadUSB vía Bluetooth, solo hay que tener en cuenta que el dispositivo desde estar emparejado con el equipo víctima, por lo que quizá la mejor alternativa sea usarlo mediante conexión USB.
Para poder utilizar esta funcionalidad, necesitamos escribir un payload, el cual se ejecutará en el equipo de acuerdo a las instrucciones que se hayan agregado. Dichas instrucciones necesitan ser escritas en lenguaje de scripting Flipper Zero. Aunque el dispositivo también es compatible con el lenguaje de scripting de Rubber Ducky, hay sutiles diferencias que se pueden aprovechar.
Lenguaje de Scripting Flipper Zero
Aunque este artículo no pretende ser una guía para aprender a escribir scripts para Flipper Zero, vamos a ver los comandos más importantes. Si quieres ver toda la documentación, puedes consultar el siguiente enlace: https://developer.flipper.net/flipperzero/doxygen/badusb_file_format.html
Comando | Tipo de parámetro | Descripción |
REM | String | Comentario de texto |
DELAY | Valor en ms | Tiempo simple de espera |
ENTER | Key | Pulsa tecla enter |
STRING | String | Escribe un texto/comando |
GUI/WINDOWS | Key | Pulsa tecla Windows |
ALTCHAR | Character code | Imprime un caracter, similar a la pulsación de ALT + Num |
SYSRQ | Single Character | Realiza funciones con la tecla SysRQ |
Construyendo un script de prueba
Para probar que todo esté funcionando bien, lo primero que haremos es crear un script de prueba. Lo guardaremos con extensión .txt, y luego lo pasaremos al Flipper Zero. En este caso hemos usado un Flipper Zero que tiene el firmware Momentum.
REM Bienvenidos a la Bitácora del Hacker
DELAY 1000
GUI r
STRING_DELAY 10
STRING notepad.exe
DELAY 100
ENTER
DELAY 1500
STRING Bienvenidos a la Bitácora del Hacker
ENTER

Ahora, abriremos qFlipper y conectaremos nuestro Flipper Zero:


Ahora nos dirigiremos a la ruta: SD Card/badusb y colocaremos nuestro archivo ahí, arrastrándolo:

Para probarlo, solo tienes que dirigirte desde tu dispositivo físico, a la opción BadKB del menú principal:

Luego seleccionarás el archivo. En nuestro caso es «primer_script.txt», y aparecerá la siguiente pantalla:

Conectamos el dispositivo a la PC y ejecutamos run. Lo siguiente que veremos es la ejecución automática de Notepad, y luego la frase escrita «Bienvenidos a la bitácora»

Manos a la obra: Extraer credenciales de un equipo con Windows
Ahora que ya sabemos como ejecutar un script con la función BadUSB de Flipper Zero, vamos a construir un script que pueda extraer las credenciales Wifi de un equipo con SO Windows en español. Además, el script enviará las credenciales a un servidor HTTP en control del atacante:
Advertencia: La información y las técnicas compartidas en este post son sólo con fines educativos o para realizar pruebas debidamente autorizadas. Atacar equipos sin consentimiento, puede ser considerado ilegal. Utilice este conocimiento bajo su propio riesgo.
- Lo primero que debemos hacer es escribir el script:

- Si quieres descargarlo, puedes hacerlo desde este repo: https://github.com/lex672/Scripts/blob/main/FlipperZero/obtener_claves_wifi.txt
- Explicaremos brevemente el script:
- GUI r: Permite simular el ingreso de tecla WIN+R
- STRNG cmd: Permite abrir una línea de comandos
- CTRL-SHIFT enter: Esta línea, permite abrir el UAC, para poder ejecutar cmd como Administrador
- LEFTARROW, permite seleccionar «Sí», en la ventana de control de cuentas de usuario (UAC)
- STRING cmd /c start powershell -nop -win -hid -c «[COMANDO]»: esta línea es el corazón del script. Utiliza powershell en la línea de comandos, ocultando la terminal de PS. El comando, obtiene las credenciales Wifi, utilizando netsh, la cual es una utilidad de línea de comandos de Microsoft que permite visualizar y modificar la configuración de red de un equipo. El comando tiene un bucle que permite recorrer todas las redes wireless almacenadas en el equipo, y va recogiendo las credenciales en texto plano, para luego enviarlas mediante HTTP vía POST al servidor 192.168.142.207:8080
- Ahora tenemos que repetir el procedimiento, arrastraremos el script al Flipper Zero:

- Antes de ejecutarlo, debemos asegurarnos que nuestro servidor HTTP se encuentre levantado. Puedes utilizar cualquiera de tu preferencia, siempre asegurándote que muestre los logs GET y POST:

- Teniendo todo listo, vamos a conectar acceder a la opción de Bad KB y elegir el script que hemos creado:

- El script permitirá que se inicie la línea de comandos y ejecutar el script en Powershell:

- En nuestro servidor HTTP, se reflejarán las claves Wifi del equipo:

Si estás ejecutando pruebas de Red Team, recuerda que este script va a funcionar siempre que se cumplan algunas condiciones:
- Que el equipo tenga los puertos USB desbloqueados para admitir dispositivos HID. Esto generalmente está admitido, ya que las organizaciones suelen bloquear el acceso a dispositivos USB de almacenamiento externo.
- El Sistema Operativo debe estar en español. Hay diferencias cuando se genera un script para SO en ingles.
- El usuario afectado, debe poder elevar privilegios a administrador. Aquí podemos orientar el ataque a usuarios que sabemos que pueden tener este privilegio, como usuarios de desarrollo o administradores de TI.
Eso es todo por este post, esperamos que te sea de utilidad