Blog Blog

¡Pico Ducky: Construye tu Propio USB Rubber Ducky por Menos de $8!

August 29, 2025
Tutorial
¡Pico Ducky: Construye tu Propio USB Rubber Ducky por Menos de $8!

El Pico Ducky es una implementación del famoso USB Rubber Ducky utilizando el microcontrolador Raspberry Pi Pico. Este proyecto open source fue desarrollado por @dbisu y está disponible en GitHub, permitiendo que cualquier Raspberry Pi Pico se convierta en un dispositivo de inyección de teclas.

Enlaces del proyecto Pico Ducky:

Este dispositivo se presenta ante el sistema operativo como un teclado USB convencional, pero ejecuta scripts predefinidos que pueden automatizar tareas, realizar ataques de ingeniería social o facilitar la recopilación de información durante auditorías de seguridad autorizadas.


⚠️ Disclaimer Ético:
Este tutorial tiene fines educativos y de investigación en ciberseguridad. Solo debe utilizarse en sistemas propios o con autorización explícita. El uso no autorizado constituye un delito, por lo cual, ni el autor o la comunidad de Xsec se hace responsable del mal uso de la información brindada.


¿Qué es un Rubber Ducky y por qué usar Raspberry Pi Pico? ❓🤖

Rubber Ducky Original

El USB Rubber Ducky es un dispositivo comercial creado por Hak5 (fundada por Darren Kitchen) que simula ser un teclado USB para ejecutar payloads automáticamente. Fue desarrollado como herramienta de pentesting y se ha convertido en un estándar de la industria.

rubberducky

Enlaces oficiales del USB Rubber Ducky:


Raspberry Pi Pico

El Raspberry Pi Pico es un microcontrolador desarrollado por la Raspberry Pi Foundation, lanzado en 2021. Utiliza el chip RP2040 diseñado internamente por Raspberry Pi.

Enlaces oficiales del Raspberry Pi Pico:

pico


¿Dónde comprar Raspberry Pi Pico? 🛒📦

Distribuidores oficiales internacionales:

En España y Latinoamérica:

  • Amazon España/México/Brasil: Buscar "Raspberry Pi Pico"
  • MercadoLibre: Disponible en todos los países de Latinoamérica
  • Tiendas de electrónicos locales: Consulta distribuidores en tu ciudad
  • AliExpress: Opción económica con envío internacional

Ventajas del Pico Ducky vs Rubber Ducky Original

  • Costo: ~$4 USD (Pico) vs $100.00 USD (Rubber Ducky)
  • Capacidad: 2MB flash vs 128KB-1MB según modelo
  • Flexibilidad: Personalización completa del firmware
  • Disponibilidad: Fácil de conseguir en distribuidores electrónicos globales
  • Código abierto: Proyecto completamente open source
  • Actualizaciones: Firmware actualizable por la comunidad


Materiales Necesarios 🧰🔧

Hardware Requerido

  • Raspberry Pi Pico (modelo básico suficiente)
    • Precio: ~$4 USD
    • Dónde comprar: Ver sección anterior con distribuidores oficiales
  • Cable USB-A a micro USB (para programación y uso)
    • Debe soportar transferencia de datos, no solo carga
    • Precio: ~$2-5 USD
  • Cable jumper macho-macho (para configuración)
    • Para conectar pines GP0 y GND en modo setup
    • También conocido como "dupont wire" o "breadboard wire"
    • Precio: ~$1-2 USD (pack de varios cables)
  • Computadora con puerto USB (Windows, Linux o macOS)

Modelos Raspberry Pi Pico Disponibles

Pico básico: $4 USD - Básico, perfecto para este proyecto Pico W: $6 USD - Con WiFi y Bluetooth
Pico 2: $5 USD - Procesador más potente (RP2350) Pico 2W: $7 USD - Pico 2 + WiFi/Bluetooth

Software Necesario (Gratis)

Costo Total Estimado

~$6-8 USD - Significativamente más económico que el USB Rubber Ducky original ($100.00 USD)


Instalación Rápida del Pico Ducky (Menos de 5 minutos) ⚡🕔

Paso 1: Descargar los Archivos del Proyecto ⬇️📥

Ve al repositorio oficial: https://github.com/dbisu/pico-ducky/releases

Descarga la versión correspondiente a tu región/idioma:

  • España/Latinoamérica: pico-ducky-v3.2-WIN_ES.zip
  • Estados Unidos: pico-ducky-v3.2-US.zip
  • Brasil: pico-ducky-v3.2-WIN_BR.zip
  • Francia: pico-ducky-v3.2-WIN_FR.zip
  • Alemania: pico-ducky-v3.2-WIN_DE.zip

Paso 2: Preparar el Raspberry Pi Pico ⚙️🔌

Desconecta el Pico si está conectado

Mantén presionado el botón BOOTSEL en el Pico

Conecta el cable USB mientras mantienes presionado BOOTSEL

Suelta el botón - aparecerá como unidad RPI-RP2

Paso 3: Instalar el Firmware CircuitPython 🧩🔧

Extrae el ZIP descargado y según tu modelo de Pico:

1Para Raspberry Pi Pico (modelo básico):
2
3Copia: adafruit-circuitpython-raspberry_pi_pico-en_US-9.2.1.uf2
4Destino: RPI-RP2 (raíz del dispositivo)
5
6
7Para Raspberry Pi Pico W (con WiFi):
8
9Copia: adafruit-circuitpython-raspberry_pi_pico_w-en_US-9.2.1.uf2
10Destino: RPI-RP2 (raíz del dispositivo)
11
12
13Para Raspberry Pi Pico 2:
14
15Copia: adafruit-circuitpython-raspberry_pi_pico2-en_US-9.2.1.uf2
16Destino: RPI-RP2 (raíz del dispositivo)
17
18
19Para Raspberry Pi Pico 2W:
20
21Copia: adafruit-circuitpython-raspberry_pi_pico2_w-en_US-9.2.1.uf2
22Destino: RPI-RP2 (raíz del dispositivo)
23

Paso 4: Instalar los Archivos del Proyecto 📂📤

Una vez que el Pico se reinicie como CIRCUITPY:

Copia la carpeta lib completa a la raíz de CIRCUITPY

Copia todos los archivos *.py a la raíz de CIRCUITPY

Paso 5: Configurar el Modo Setup🔧🛠️

Para configurar tu Pico Ducky por primera vez, necesitas entrar al modo setup:

¿Qué es el modo setup?

El modo setup te permite:

  • Cargar y editar payloads de forma segura
  • Configurar el layout del teclado (idioma/región)
  • Cambiar configuraciones básicas
  • Evitar que se ejecuten payloads en tu propia computadora mientras editas

Cómo entrar al modo setup:

Usando cable jumper (método oficial):

  • Desconecta el Pico del USB
  • Conecta un cable jumper entre los pines:
    • Pin 1 (GP0)Pin 3 (GND)
    • Estos pines están numerados en el Pico
setupmode
  • Conecta el Pico al USB con el jumper puesto
  • El Pico entrará en modo setup (no ejecutará payloads)
  • Edita/carga tu payload como payload.dd
  • Desconecta, quita el jumper y reconecta para usar


Modo Stealth (USB Mass Storage Deshabilitado)🕵️‍♂️🚫

Si necesitas que el Pico Ducky NO aparezca como unidad USB para mayor sigilo:

  • Entra en modo setup (jumper GP0 ↔ GND)
  • Carga tu payload al dispositivo
  • Desconecta el Pico de tu computadora
  • Conecta un jumper entre:
    • Pin 18 (GND)Pin 20 (GPIO15)
usb-boot-mode
  • Conecta al sistema objetivo - no aparecerá como unidad USB
  • Para reprogramar: quita el jumper y reconecta a tu PC

Nota importante:

  • Pico básico: Por defecto muestra unidad USB
  • Pico W: Por defecto NO muestra unidad USB (modo stealth)


Configurar tu payload:

1REM Mi primer Pico Ducky - Payload de prueba
2DELAY 3000
3GUI r
4DELAY 500
5STRING notepad
6ENTER
7DELAY 1000
8STRING Hola! Soy tu Pico Ducky funcionando
9ENTER
10STRING Payload cargado correctamente
Para más información detallada: Consulta el README oficial en https://github.com/dbisu/pico-ducky/blob/main/README.md

Estructura de Archivos Final

Una vez completada la instalación, tu Pico tendrá esta estructura:

1CIRCUITPY/
2├── code.py # Script principal (ya incluido)
3├── payload.dd # Tu payload personalizado
4├── lib/ # Librerías necesarias (ya incluidas)
5└── boot.py # Configuración de arranque
Nota: No necesitas programar nada desde cero. Todos los archivos Python necesarios ya vienen incluidos en el ZIP descargado.


Sintaxis DuckyScript Básica

Comandos Fundamentales

1REM Esto es un comentario
2DELAY 1000 # Esperar 1 segundo
3STRING Hola Mundo # Escribir texto
4ENTER # Presionar Enter
5GUI r # Windows + R
6CTRL c # Ctrl + C
7ALT F4 # Alt + F4
8TAB # Presionar Tab
9ESC # Presionar Escape

Ejemplo de Payload Básico

1REM Payload básico - Abrir Notepad y escribir mensaje
2DELAY 2000
3GUI r
4DELAY 500
5STRING notepad
6ENTER
7DELAY 1000
8STRING Este es un mensaje del Pico Ducky!
9ENTER
10STRING Dispositivo creado para fines educativos.


Payloads: DuckyScript Compatible📂✅

El Pico Ducky utiliza DuckyScript, el mismo lenguaje de scripting del USB Rubber Ducky original, por lo que es 100% compatible con payloads existentes.

Formato de Payloads

Los payloads deben guardarse como:

  • Nombre del archivo: payload.dd
  • Ubicación: Raíz de la unidad CIRCUITPY
  • Formato: Texto plano (UTF-8)
  • Extensión: .dd (DuckyScript)

Cómo subir un payload:

  • Entra en modo setup (jumper GP0 ↔ GND)
  • Crea/edita el archivo payload.dd en CIRCUITPY
  • Escribe tu script DuckyScript y guarda
  • Desconecta, quita jumper y reconecta - ¡Se ejecuta automáticamente!


Ejemplos de Payloads 💡📌

Ejemplo 1: Hola Mundo Básico

1REM Payload básico - Hola Mundo
2DELAY 2000
3GUI r
4DELAY 500
5STRING notepad
6ENTER
7DELAY 1000
8STRING Hola Mundo desde mi Pico Ducky!
9ENTER
10STRING Este dispositivo funciona correctamente

Ejemplo 2: Rickroll Clásico

1REM El clásico rickroll - broma inofensiva
2DELAY 2000
3GUI r
4DELAY 500
5STRING https://www.youtube.com/watch?v=dQw4w9WgXcQ
6ENTER

Compatibilidad: Todos los payloads de Hak5 Payloads funcionan directamente.


Casos de Uso Legítimos ✅🔐

En Auditorías de Seguridad

  • Pruebas de concienciación: Demostrar vulnerabilidades de ingeniería social
  • Red Team Exercises: Simulación de ataques internos
  • Pentesting físico: Evaluación de seguridad en instalaciones

En Administración de Sistemas

  • Automatización de tareas: Configuraciones repetitivas
  • Despliegue de software: Instalaciones automatizadas
  • Troubleshooting: Scripts de diagnóstico rápido


Mejores Prácticas y Consideraciones

Seguridad y Ética🛡️⚖️

✅ HACER:

  • Obtener autorización escrita antes de usar
  • Documentar todos los payloads utilizados
  • Usar solo en sistemas propios o autorizados
  • Informar hallazgos de manera responsable

❌ NO HACER:

  • Usar en sistemas sin autorización
  • Crear payloads destructivos
  • Distribuir malware o herramientas maliciosas
  • Ignorar las leyes locales de ciberseguridad

Técnicas de Mitigación para Defensores 🛑🛡️

  • Políticas USB: Restringir dispositivos HID desconocidos
  • Monitoreo: Alertas por ejecución de comandos inusuales
  • Endpoint Protection: Soluciones que detecten inyección de teclas
  • Concienciación: Entrenar usuarios sobre dispositivos sospechosos

Limitaciones del Pico Ducky 🚧⚠️

  • Detección: Antivirus modernos pueden detectar patrones
  • Dependencia del layout: Problemas con teclados no-US
  • Velocidad: Limitada por la velocidad de tipeo simulada
  • Compatibilidad: Algunos sistemas pueden bloquear dispositivos HID


Troubleshooting Común 🛠️❓


Problemas de Conexión

Síntomas: El Pico no es reconocido

Soluciones:

  • Verificar cable USB (debe soportar datos)
  • Reinstalar CircuitPython
  • Probar diferentes puertos USB
  • Verificar drivers en Windows

Errores en Payloads

Error común: KeyError en process_ducky_command

Solución: Validar comandos antes de ejecutar

1def process_ducky_command(command):
2 # Agregar validación
3 if not command or len(command.strip()) == 0:
4 return
5 # Resto del código...

Problemas de Layout

Para teclados españoles:

  • Ajustar caracteres especiales
  • Ñ puede requerir combinaciones específicas
  • Acentos pueden no funcionar correctamente


Recursos Adicionales 📚🔍


Documentación Oficial

Herramientas Complementarias

  • DuckToolkit: Generador de payloads online
  • Digispark Scripts: Colección de scripts compatibles
  • Payload Studio: IDE especializado para DuckyScript

Comunidades y Recursos

  • r/raspberry_pi: Subreddit con proyectos y soporte
  • Hak5 Forums: Comunidad original de Rubber Ducky
  • GitHub: Repositorios con payloads y mejoras
Fabian Peña (stuxboynet)

Fabian Peña (stuxboynet)

Consultor de Ciberseguridad

eCPPTv3| eWPTxv3 | eWPT | CEH Master v12 | CPTE | eJPTv2 | eJPTv1 | LINUX ESSENTIALS | LCSPC