Existen muchos métodos por los cuales pueden atacar nuestro ordenador. Por ejemplo a través de un enlace que descarga un virus, un troyano que nos llega como archivo adjunto por correo electrónico, algún programa que hemos instalado y en realidad es malicioso… Pero también a través de un dispositivo físico. En este artículo hablamos de Rubber Ducky, que es un pendrive con ciertas peculiaridades y que puede ser un problema para nuestra seguridad.
¿Qué es USB 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?
- Lo primero que debemos hacer es insertar la tarjeta microSD en el adaptador/lector de tarjetas, que es donde cargaremos el payload.
- Escribiremos el payload en un fichero de texto.
- 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, 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.
- Una vez se ha generado correctamente el binario, colocaremos la microSD en el USB Rubber Ducky.
- 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.
¿Qué ataques se pueden realizar?
Al final, cuando un usuario pincha un USB Rubber Ducky en su sesión de usuario es como si le hubiera dejado el teclado al atacante para que este ejecutase lo que quisiera. Es decir, este ataque se aprovecha de la confianza del usuario, que al final siempre es “el eslabón mas débil” o de la seguridad física de muchos equipos expuestos.
¿Cuántos de ustedes han llegado a alguna oficina gubernamental, banco y tienen a simple vista y acceso a los puertos USB de los equipos? ¿A cuántos de ustedes les han prestado algún equipo para revisar el correo, las redes sociales, etcétera? ¿Cuántos no tienen en la oficina un equipo de un compañero con cuentas de diferentes administradores o que tenga más permisos que el resto? ¿Cuántas veces no has visto un puerto USB en un Kiosco de Internet o un Punto de Información? Si ninguno de esos puertos bloquea el interfaz HID, puedes hacer el ataque. Al final quizás agregar, subirlas a un servidor FTP en cuestión de segundos.
Seguro que os ha tocado llegar a una oficina a resolver tramites y la persona que te atendió tuvo que salir un par de minutos, y esto es tiempo suficiente para un atacante enchufar el USB Rubber Ducky y lanzar el payload – en lugar de hacer un David Hasselhoff para robar las passwords -. Por mencionar algunos ataques brevemente:
* Recolección de información del sistema operativo.
* Robar información importante de los navegadores de Internet.
* Robar y usar las cookies de las sesiones abiertas.
* Hacer capturas de pantalla del escritorio y carpetas importantes del sistema.
* Robar y utilizar las contraseñas de las conexiones WiFi de la víctima.
* Subir la información a traves un servidor FTP.
Ataques dirigidos al sistema:
* Agregar usuarios con permisos administrativos al equipo de la víctima.
* Borrar usuarios del sistema.
* Hacer Pharming de DNS.
* Infección del sistema descargando y ejecutando un binario de Internet.
* Crackear passwords del administrador en el sistema.
* Crear un Backdoor WiFi.
* Bloquear programas en el sistema operativo de forma sigilosa.
¿Qué ataques se pueden realizar?
Desde que el grupo de hackers de Hack5 hizo pública la herramienta, algunos siguen pensando que desactivando el “autoplay” de los discos USB podrían detenerlo, pero esto no es posible hacerlo de esa manera ya que el ataque no sea hace vía un USB de almacenamiento sino como si alguien estuviera tecleando en un teclado USB.
Las formas que se puede utilizar para detectar que un USB es realmente un HID USB, se puede hacer un script en PowerShell que enumere la lista de dispositivos HID que alerte cuando uno nuevo se haya conectado y se bloquee. Aquí hay información sobre cómo acceder a la lista de los dispositivos desde PowerShell. A partir de ese punto, la forma en la que quieres estar protegido depende de ti.
En el trabajo de Adrian Crenshaw, titulado «Plug & Prey: Malicious USB devices» que fue presentado en la ShmooCON 2011 se explica en detalle la lista de posibles ataques que se pueden hacer por USB. Entre ellos, por supuesto, los teclados USB que abusan de la interfaz HID. Aquí tenéis el vídeo para ver la conferencia.
En el trabajo se presta especial atención a los PHUKD (Programmable HID USB Keyboard/Mouse Dongle) ya que no solo simulando un teclado malicioso es el problema, y la simulación de un ratón malicioso que hiciera clics en zonas concretas sería igual de peligroso. Para proteger los USB utilizando las políticas GPO de Windows hay que tener en cuenta que si el usuario que pincha el USB Rubber Ducky es una administrador, siempre podrá cambiar la política, pero lo dificultaría. Esto hace que fuera factible, dentro de una política de Maximizar la seguridad de un Windows, usar listas blancas de los dispositivos USB que se pueden conectar a un equipo.
De todas formas, como utilidad de monitorización, Adrian Crenshaw recomienda usar USBDeview, que muestra en tiempo real toda la información de todos los dispositivos USB que se conectan, detectando aquellos que son PHUKD en la lista.
Alex TorreCrack ha hecho una herramienta de protección ante estos ataques que liberará en breve llamada Shielducky que hace fácil controlar estos ataques monitorizando los dispositivos HID sin tener que desactivar los puertos USB desde la BIOS/UEFI, etcétera. La interfaz es bastante amigable y fácil de usar ya que basta como presionar un simple botón para detectar cualquier HID que se conecte y bloquearlo.
Así que te recomiendo tener cuidado porque en cualquier momento sin que te des cuenta te pueden intentar “enchufar” un USB Rubber Ducky en lugar de un pendrive cuando te descuides. Ten cuidado.
Escrito por:
Ing. Roberto Sarmiento Lavayen
29 de Nov. 2021