Coleccion de payloads BadUSB para Flipper Zero con reverse shells y persistencia en Windows, Linux y macOS.
Todos los scripts usan WAIT_FOR_BUTTON_PRESS en lugar de DELAY para adaptarse a cualquier velocidad de PC. Tu controlas cuando avanza cada paso pulsando un boton del Flipper.
BadUSB/
├── Windows/
│ ├── reverse_shell.txt # Shell con privilegios de admin (UAC)
│ └── persistent_shell.txt # Shell persistente + tarea programada
├── Linux/
│ ├── reverse_shell.txt # Shell con usuario loggeado
│ └── persistent_shell.txt # Shell persistente + systemd service
└── macOS/
├── reverse_shell.txt # Shell con usuario loggeado
└── persistent_shell.txt # Shell persistente + LaunchAgent
- Flipper Zero con firmware compatible (v0.54+)
- Listener en tu maquina atacante (
nc,rlwrap nc, o similar) - Acceso fisico al equipo victima (el Flipper se conecta por USB)
Cada script tiene una seccion >>> CONFIGURACION <<< donde defines IP y puerto en una sola linea. Solo necesitas cambiar esos valores antes de copiar el script al Flipper.
Windows (variable PowerShell en el paso 8):
STRING $ip='192.168.1.100'; $p=4444
Linux / macOS (variable bash en el paso 4 o 6):
STRING IP='192.168.1.100'; PORT=4444
En tu maquina atacante:
rlwrap nc -lvnp 4444Copia el script .txt que necesites a la carpeta /badusb/ de la SD del Flipper Zero.
Conecta el Flipper al equipo victima, abre la app BadUSB, selecciona el script y pulsa ejecutar. Sigue las instrucciones de cada WAIT_FOR_BUTTON_PRESS pulsando el boton del Flipper cuando corresponda.
Connection received on 192.168.x.x 4444
whoami
usuario
| Script | Privilegios | Persistencia | Descripcion |
|---|---|---|---|
reverse_shell.txt |
Admin (UAC) | No | Abre Run, lanza PowerShell como admin aceptando UAC con LEFT+ENTER, ejecuta reverse shell oculta |
persistent_shell.txt |
Admin (UAC) | Tarea programada | Igual que la anterior + crea payload en %ProgramData%\Microsoft\WindowsUpdate\ + registra WindowsUpdateAssistant con triggers AtStartup y AtLogOn |
Elevacion UAC: Los scripts de Windows usan CTRL+SHIFT+ENTER desde el dialogo Ejecutar para solicitar permisos de admin, y luego LEFT+ENTER para aceptar el dialogo UAC (funciona en cualquier idioma).
Persistencia Windows:
- Tarea programada
WindowsUpdateAssistantconRunLevel Highest - Triggers: arranque del sistema + inicio de sesion
- Payload oculto en
%ProgramData%\Microsoft\WindowsUpdate\UpdateService.ps1 - Directorio y archivo con atributos Hidden
| Script | Privilegios | Persistencia | Descripcion |
|---|---|---|---|
reverse_shell.txt |
Usuario | No | Abre terminal con CTRL+ALT+T, lanza reverse shell con nohup + disown |
persistent_shell.txt |
Usuario | systemd user service | Igual + crea servicio dbus-desktop-support.service con reconexion y linger |
Persistencia Linux:
- Servicio systemd de usuario
dbus-desktop-support.service(nombre que se mimetiza con servicios del escritorio) Restart=always+RestartSec=10— systemd reinicia el proceso si muereloginctl enable-linger— el servicio sigue corriendo aunque el usuario cierre sesion- Payload oculto en
~/.config/.update-service/.updater.sh
| Script | Privilegios | Persistencia | Descripcion |
|---|---|---|---|
reverse_shell.txt |
Usuario | No | Abre Terminal via Spotlight (CMD+Space), lanza reverse shell con bash |
persistent_shell.txt |
Usuario | LaunchAgent | Igual + crea plist com.apple.desktopsupport con KeepAlive y RunAtLoad |
Notas macOS:
- macOS usa zsh por defecto, pero los scripts usan
bash -cexplicitamente ya que/dev/tcpes una funcionalidad de bash - Terminal se abre via Spotlight (
CMD+Space→Terminal→ENTER)
Persistencia macOS:
- LaunchAgent
com.apple.desktopsupport.plisten~/Library/LaunchAgents/ RunAtLoad: true— se ejecuta en cada inicio de sesionKeepAlive: true— launchd reinicia el proceso automaticamente si muere- Se carga con
launchctl load - Payload oculto en
~/.config/.update-service/.updater.sh
| Windows | Linux | macOS | |
|---|---|---|---|
| Abrir terminal | GUI r (Ejecutar) |
CTRL+ALT+T |
CMD+Space (Spotlight) |
| Privilegios | Admin via UAC | Usuario | Usuario |
| Metodo de persistencia | Scheduled Task | systemd user service | LaunchAgent |
| Nombre del servicio | WindowsUpdateAssistant | dbus-desktop-support | com.apple.desktopsupport |
| Reconexion | Bucle en payload (30s) | Bucle + systemd Restart | Bucle + KeepAlive |
| Ubicacion del payload | %ProgramData%\Microsoft\WindowsUpdate\ | ~/.config/.update-service/ | ~/.config/.update-service/ |
En lugar de usar DELAY con tiempos fijos (que pueden fallar en PCs lentos o desperdiciar tiempo en PCs rapidos), todos los scripts usan WAIT_FOR_BUTTON_PRESS. El script se pausa y espera a que pulses un boton fisico del Flipper antes de continuar.
Ejemplo tipico:
WAIT_FOR_BUTTON_PRESS ← PC listo
GUI r ← Abrir Run
WAIT_FOR_BUTTON_PRESS ← Run visible
STRING powershell
CTRL-SHIFT ENTER ← Pedir admin
WAIT_FOR_BUTTON_PRESS ← UAC visible
LEFT
ENTER ← Aceptar UAC
WAIT_FOR_BUTTON_PRESS ← PowerShell admin abierto
STRING $ip='...'; $p=...
ENTER
WAIT_FOR_BUTTON_PRESS ← Variables definidas
STRING [payload...]
ENTER ← Ejecutar y cerrar
Este proyecto es unicamente para fines educativos y de pentesting autorizado. No debes usar estos payloads contra sistemas en los que no tengas permiso expreso para realizar pruebas de seguridad.
El autor no se hace responsable del uso indebido que se realice de este material. Asegurate siempre de actuar de acuerdo con las leyes y regulaciones locales.
Este proyecto se distribuye bajo la licencia MIT. Puedes modificarlo y redistribuirlo, siempre manteniendo este aviso y la atribucion al autor original.
By amis13