Rubber Ducky es un dispositivo físico, un pendrive con ciertas peculiaridades y que puede ser un problema para nuestra seguridad. USB Rubber Ducky (o USB Patito de Goma), es un hardware creado por Hak5, el cual, simula ser un pendrive normal, pero en realidad es una herramienta que inyecta pulsaciones de teclas (es un teclado camuflado).
Rubber Ducky
USB Rubber Ducky es un dispositivo HID (Human Interface Device) o dispositivo de interfaz humana, es decir dispositivos de entrada y salida que permite la interacción con un ordenador, y en concreto, USB Rubber Ducky es detectado como un teclado en cualquier sistema operativo donde lo conectemos (Windows, Linux, OSX y Android).
Un Rubber Ducky podemos decir que es un pendrive modificado. Cuando ponemos una memoria USB en el ordenador, podemos copiar y pegar archivos fácilmente. Actúa como una memoria donde podemos alojar fotos, documentos o cualquier carpeta siempre que no supere el espacio de almacenamiento disponible.
En un pendrive incluso podemos programar scripts para que copie archivos desde un ordenador, o viceversa. Sin embargo para que ese script se ejecute vamos a tener que abrir la memoria USB y hacer doble clic encima del archivo correspondiente. No es algo que se realice de forma automática, sin interacción.
Sin embargo un Rubber Ducky sí va a poder ejecutar esos scripts de forma automática. Simplemente va a necesitar que le llegue corriente al estar conectado al ordenador. Automáticamente va a comenzar a copiar archivos o llevar a cabo alguna acción preestablecida.
Es precisamente esto último que mencionamos lo que hace que sea un peligro para la seguridad. Puede ser utilizado para el robo de datos o infectar nuestro equipo. Para ello bastaría con que lo conectemos al ordenador y reciba corriente.
Las especificaciones técnicas del Rubber Ducky son:
- Ranura para micro SD
- Botón que permite re-ejecutar el código
- LED que indica el estado del dispositivo
- Conector USB tipo A
- Procesador de 60 MHz de 32 bits
Además, incorpora lo siguiente:
- Lector USB de memorias micro SD
- Case USB
- Adaptador a micro USB
Imagen que muestra las especificaciones del hardware:
Al momento de conectar este USB, es reconocido con un driver Atmel, haciéndose pasar por un teclado normal (para no levantar sospechas y evitar que sea bloqueado por antivirus o firewall) y ejecuta las teclas indicadas en su código.
Imagen que muestra los componentes que vienen con el Rubber:
Ahora que sabemos qué tipo de hardware posee y los componentes que incorpora el Rubber Ducky cuando lo compramos, es necesario saber cómo funciona.
USB Rubber Ducky utiliza un código de programación sencillo y mediante un editor de texto se pueden crear los payloads. A modo de ejemplo, tenemos las siguientes instrucciones:
- WINDOWS r: Abrir la ventana de Ejecutar de Windows
- STRING cadena de texto: mediante la instrucción STRING se da la orden de lo que se quiere escribir, en este caso escribiría “cadena de texto” (sin comillas).
- ENTER: emula la tecla Intro.
El Rubber Ducky trabaja con un lenguaje de programación llamado Ducky Script, en el cual, cada comando es una instrucción de teclas a presionar.
La sintaxis de este lenguaje es el siguiente:
| Sintaxis | Descripción |
|---|---|
| REM | Comentarios, código que no será procesado |
| DEFAULT_DELAY / DEFAULTDELAY | Se debe definir un valor entre 0 y 10000 (milisegundos), el cual establecerá un delay a todas las secuencias de comandos |
| DELAY | Define un valor entre 0 y 10000 (milisegundos), el cual establecerá un delay entre secuencias de comandos |
| STRING | Permite inyectar cadenas de caracteres: a-z A-Z 0-9 !-) `~+=_-"';:<,>.?[{]}/|!@#$%^&*() |
| WINDOWS / GUI | Equivale a la tecla windows o la tecla cmd en macos |
| APP / MENU | Equivale a la combinación de teclas SHIFT F10 de windows (clic derecho) |
| SHIFT | Simula la tecla SHIFT, y esta se puede combinar con: DELETE, HOME, INSERT, PAGEUP, PAGEDOWN, WINDOWS, GUI, UPARROW, DOWNARROW, LEFTARROW, RIGHTARROW, TAB |
| ALT | Simula la tecla ALT, y esta se puede combinar con: END, ESC, ESCAPE, F1-F12, caracteres simples (ejemplo: f, s), SPACE, TAB |
| CONTROL / CTRL | Simula la tecla CTRL, y esta se puede combinar con: BREAK, PAUSE, F1-F12, ESCAPE, ESC, caracteres simples |
| DOWNARROW / DOWN | Simulan las teclas de dirección |
| LEFTARROW / LEFT | Simulan las teclas de dirección |
| RIGHTARROW / RIGHT | Simulan las teclas de dirección |
| UPARROW / UP | Simulan las teclas de dirección |
| BREAK / PAUSE | Equivale a la combinación CTRL BREAK |
| CAPSLOCK | Es la tecla que permite escribir en mayúsculas o minúsculas |
| DELETE | Simula la tecla suprimir |
| END | Tecla que permite ir al final de algo (página web, documento, etc.) |
| ESC / ESCAPE | Tecla de escape |
| HOME | En español equivale a la tecla inicio |
| INSERT | Simula la tecla insertar |
| NUMLOCK | Tecla para bloquear o desbloquear los numerales en los teclados |
| PAGEUP | Simula la tecla Page Up |
| PAGEDOWN | Simula la tecla Page Down |
| PRINTSCREEN | Tecla para tomar screenshots |
| SCROLLLOCK | Simula la tecla Scroll Lock |
| SPACE | Tecla espacio |
| TAB | Tecla de tabulación |
| REPEAT | Repite la cantidad de veces que le indiquemos lo ya ejecutado |
Como Rubber Ducky es un teclado, es necesario saber el sistema operativo de la víctima, lenguaje configurado en el teclado de dicho PC/Móvil, y las teclas que posee, porque puede que tengamos problemas si lo queremos conectar en un PC con un teclado que no posea una las teclas que queremos usar, o si queremos buscar algo haciendo una combinación de teclas y luego usar un string, y lo buscamos en inglés, pero el sistema operativo esta en español, por lo tanto, es necesario saber esos detalles si queremos jugar con el Ducky en alguna computadora.
Sabiendo como es el lenguaje, y lo que necesitamos tener en cuenta al momento de crear un script (payload), es necesario saber cómo complicar el código, para que se pueda ejecutar.
Para compilar el código, existe un encoder llamado Duckencoder, al momento de compilar, se debe especificar el nombre del archivo como inject.bin.
Para usar el compilador, se usa el siguiente comando:
java -jar duckencoder.jar -i <archivo_origen> -o /<ruta>/inject.bin
Resultado:
W0lf-F4ng:Rubber Ducky W0lf_F4ng$ java -jar duckencoder.jar -i payload.txt -o /Volumes/WF-RBDUCKY/inject.bin
Hak5 Duck Encoder 2.6.3
Loading File ..... [ OK ]
Loading Keyboard File ..... [ OK ]
Loading Language File ..... [ OK ]
Loading DuckyScript ..... [ OK ]
DuckyScript Complete..... [ OK ]
W0lf-F4ng:Rubber Ducky W0lf_F4ng$ ls /Volumes/WF-RBDUCKY/
System Volume Information inject.bin
A continuación, un ejemplo de un payload, el cual abrirá un editor de texto, y escribirá hola mundo:
REM en este payload se abrira sublime y se escribirá Hola Mundo!!!
DELAY 1000
GUI SPACE
DELAY 50
STRING sublime
ENTER
DELAY 300
STRING Hola Mundo!!!
Por lo tanto, podemos decir que USB Rubber Ducky es una herramienta muy útil para jugar y hacer maldades, no es complicado de hacer un payload, debido que el lenguaje de programación es muy sencillo.
Para finalizar, les dejo el flujo a seguir al momento de querer utilizar el Rubber:
- Escribir el payload
- Compilar el payload en la memoria micro SD
- Conectar la micro SD en el USB Rubber Ducky
- Conectar el Ducky en la máquina objetivo
Contenido Relacionado (vídeo, otras opciones con Arduino)
- https://www.youtube.com/watch?v=W6uGHYBAhHQ
- https://github.com/krakrukra/PocketAdmin
- https://medium.com/hackernoon/low-cost-usb-rubber-ducky-pen-test-tool-for-3-using-digispark-and-duck2spark-5d59afc1910
Fuentes:
https://www.redeszone.net/tutoriales/seguridad/rubber-ducky-ataque-dispositivo/
https://www.w0lff4ng.org/usb-rubber-ducky-101/
https://www.securityartwork.es/2015/12/23/me-parecio-ver-un-lindo-patito-usb-rubber-ducky/
Saludos, sabes ¿dónde puedo conseguir una Rubber ducky?
ResponderEliminarEn la página oficial de HAK5
ResponderEliminar