lunes, mayo 26, 2014

USB Rubber Ducky: Un teclado malicioso como un pendrive

En el mundo de la seguridad informática hay todavía empresas, administradores y usuarios comunes que no han tomado conciencia de la importancia que tiene la seguridad física, un punto clave a tener muy en cuenta. Siempre hay gente que quiere robarle la contraseña a su pareja, a su jefe, a su empleado, espiar tu historial de sitios que visitas en Internet, las cookies del Facebook, robarte los passwords de la red WiFi, o robar documentos como hizo Edward Snowden con los documentos de la NSA. Supongo que las listas de correos que recibo con esas peticiones os deberían servir de muestra más que suficiente de con quién os jugáis los cuartos.

Existen técnicas y maneras de conseguir acceso físico a un equipo y explotar las vulnerabilidades, y lo único que hay que hacer es forzar los condicionantes adecuados para poder llevarlo a cabo. Perder de vista el equipo o prestarlo a un amigo un momento para revisar las novedades de algún blog, o separarte de tu escritorio por unos momentos para ir al lavabo, es tiempo suficiente para que un atacante pueda llegar y enchufar un dispositivo como el “USB Rubber Ducky”.

Este dispositivo es un teclado programado con forma de USB que nada más conectarse comienza a escribir en el equipo de forma automatizada, para lanzar programas y herramientas que bien pueden estar en el equipo víctima o cargados en la memoria Micro SD que lleva incluida.

Figura 1: Estructura de USB Rubber Ducky

En cuestión de segundos tendría acceso a información que se podría subir automáticamente a un servidor FTP u otro sitio. Algo parecido a lo que se explicaba con USB Dumper, pero al revés, es decir, en lugar de ser el servidor el malicioso que roba los datos del USB, sería USB Rubber Ducky el que robaría los datos al equipo.

En este vídeo de ejemplo que hizo TorresCrack248  se puede ver como en cuatro segundos se puede robar la contraseña del administrador de la computadora, lanzando con USB Rubber Ducky un script basado en Mimikatz que acceda a los datos.


Figura 2: Vídeo demostrativo del uso de USB Rubber Ducky


¿Qué es USB Rubber Ducky?

Casi todos los sistemas operativos de computadoras portátiles, tablets o smartphones permiten la comunicación con el usuario a través de los teclados USB. Es por eso que hay una especificación en el estándar USB ubicua conocida como HID (Human Interface Device) – o dispositivo de interfaz humana. En pocas palabras, cualquier sistema operativo al que conectemos el USB Rubber Ducky lo detectara y será bien aceptado automáticamente como si se hubiera conectado un teclado, ya sea en Windows, OS X, Linux o Android.

Al final, el teclado sigue siendo un interfaz fundamental y lo que hará USB Rubber Ducky es "teclear comandos" en el sistema como si lo estuviera haciendo el usuario que se ha conectado a la sesión. Usando un sencillo lenguaje de programación y un editor de texto podríamos compilar un binario que automatice diversos “payloads” con lo cual podríamos realizar ataques en cuestión de segundos.

Figura 3: Estructura interna de USB Rubber Ducky

Con una idea similar, el libro de Hacking iOS se explica cómo usando un Teensy 3.0, en lo que se basa USB Rubber Key, se simula un teclado por USB para iPad para lanzar un ataque de fuerza bruta porque no hay protección de número de intentos para el teclado y se rompe el passcode de un iPad - uno de los muchos trucos de saltarse el passcode de iPhone & iPad.


Figura 4: Ataque de fuerza bruta al passcode de un iPad con Teensy 3.0

Debido a su estructura, los sistemas operativos ofrecen una confianza inherente a las pulsaciones del teclado, por lo tanto los dispositivos que abusan de la interfaz HID no pueden ser detectados por las contramedidas tradicionales de forma sencilla ya que iría contra la filosofía Plug&Play de los sistemas. Esto hace que sea una herramienta muy útil en procesos de pentesting internos, ataques de ingeniería social del tipo "¿me puedes imprimir un documento?" o de auténticos atacantes de dentro de la organización.

¿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.
¿Cómo podemos protegernos de estos ataques?

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.

Figura 5: Plug & Prey - Malicious USB Devices

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.

Figura 6: GPO para prevenir la instalación de dispositivos USB no autorizados

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.

Figura 7: USBDeview

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.

Figura 8: Shielducky - una herramienta para bloquear dispositivos USB HID

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.

Saludos Malignos!

17 comentarios:

  1. Hola, hace tiempo sigo la evolución de este " USB " pero hay una cosa que no me queda nada clara, y por el contrario creo que no acabo de entender.

    Pongamos un ejemplo yo tengo el USB llego a casa de pepito , meto el USB en su casa y ya al irme tengo un log ?.

    ya esta predefenido para eso?, hay que hacer los scrips?, ¿ el scripts y su ejecución son invisibles realmente al usuario ?

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Hola anónimo, El USB lo que te brinda es la posibilidad de lanzar scripts automatizados, estos scripts cada quien debe programarlos para la función que requieras que hagan, en el video de arriba, muestro un ejemplo con un script que desarrolle para que ejecute otro programa (mimikatz) y este a su vez extraiga los passwords de administrador de la victima y quizás subirlos a un FTP, los profesionales lo usan para pentesting y demás cosas, pero si esta en manos de un delincuente, hay peligro, por ejemplo acabo de terminar un script que me abra ciertos puertos del ordenador victima y desactive el firewall y esto en unos segundos, claro solo para dar ejemplos de lo que se podria hacer, y probar como la herramienta Shielducky te protege, asi que si vas a casa de pepito, y le enchufas el "USB rubber ducky" pre-cargardo con un script que modifique el Hosts de windows para que cuando la victima quiera ingresar a facebook.com, lo redireccione a un servidor malicioso, y podrian robarle el password, es por ello que se da un ejemplo lo peligroso que podria resultar...

    PD: mira el video...

    Saludos!

    ResponderEliminar
  4. He visto el video y tengo una duda. Si esto emula un teclado, como obtienes los programas que necesitas? Es decir, en el video se usa un programa para sacar el hash (que no la clave) de los usuarios, pero ese programa ya está en el equipo. Entonces? Parte de la SD que lleva se instala como pendrive y ahí llevas los programas que necesites?

    No lo pillo.

    ResponderEliminar
  5. Hola juanjo,

    1: lo que yo haría para bajar un programa usarlo como en el video, es automatizar el script que por medio del cmd bajara el binario de un ftp y una vez descargado ejecutarlo desde la ventana de comandos..

    2: cuando ingresas el "usb rubber ducky" a la maquina victima esta no lo detectara como dispositivo de almacenamiento, por lo tanto no puedes sacar contenido de la memoria SD, esto es debido al firmware, existen procedimientos para cambiar el firmware del dispositivo, para que funcione y lo detecte la maquina como "USB storage" y así poder usar el contenido del SD card, pero de esta forma para lanzar el script (payload) se tendria que presionar un botón (replay)del USB, por lo tanto el funcionamiento una vez cambiando el firmware, el uso cambia a ser de 2 pasos: enchufar al ordenador y presionar el botón replay para ejecutar el script.

    Espero haber resuelto tus dudas...

    Saludos!

    ResponderEliminar
  6. Hola,

    Existe otro proyecto parecido que también tiene buena pinta: http://theglitch.sourceforge.net/

    ResponderEliminar
  7. ¿¿Hay alguna página dónde hayan scripts descargables?? A mi con uno que detecte el antivirus entre Avira, Avast o AVG, me ponga una copia del spynet en exclusiones y me abra un puerto en el firewall tengo de sobra.

    ResponderEliminar
  8. Cristian Schmitt27/5/14 10:01 a. m.

    Buenas a todos,
    Alex Torres, te quisiera preguntar una cosa, se lanzan los scripts en 2° plano o el usuario los ve? Con esto me refiero, solo por curiosidad, a si la ejecución de los mismos sería sin que el usuario perciviese actividad alguna (aparte del hecho de que un usb emita lucecitas) todo esto viene a cuento de que si no se realizase de forma automatica (Tuviese que pulsar Start+R) requeriría de un teclado y perdería su gracia.

    Muchas gracias por esta magnífica publicación al igual que el video! Un saludo.

    ResponderEliminar
  9. aqui pone por usb pero por bluetoorh se podria hacer lo mismo.

    se lo instalas en el movil de una persona y a partir de ese momento lo hace en todo dispositivo que se vincule ese movil

    ResponderEliminar
  10. muy buen artículo!

    ResponderEliminar
  11. Que maravilla¡, las pòsibilidades son infinitas...hay que pedir uno.
    No obstante la contramedida creo que sería sencilla, con limitar el numero de pulsaciones por debajo de 300 estaríamos asegurandonos de la "humanidad" del control del teclado.

    ResponderEliminar
  12. en la Ekoparty del año pasado mostré que se podía hacer lo mismo en un sistema operativo Fedora y un Arduino Leonardo. Que es mucho mas simple conseguirlo.
    y no solo eso sino que a partir de eso hacia phishing con la contraseña y conseguía privilegios de administrador

    ResponderEliminar
  13. Es posible hacer un Usb casero con estas caracteristicas. Conocen algun tutorial.
    Saludos

    ResponderEliminar
  14. Hola, quizá hago el comentario demasiado tarde. Soy nuevo en esto y recién vi la publicación. Hay algo que no me queda claro, si conectar el dispositivo es como conectar un teclado, ¿no debería el sistema restringir la ejecución de ciertos comandos o solicitar el permiso del administrador? Por ejemplo, si el usuario es un "invitado" en Windows, ¿no debería el sistema restringir la ejecución de ciertos programas?

    ResponderEliminar
  15. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  16. probablemente mi coment sea el mas noob pero soy nuevo con la herramienta, como le meto los scripts ?

    ResponderEliminar
  17. Hola! Es la primera vez que comento a pesar de llevar algún tiempo siguiendo el blog. Aquí respondo a algunas dudas que creo poder solucionar.


    -> A los que preguntan sobre hacer un usb casero. Como Matías ha comentado, necesitas de un microcontrolador o en su defecto un microprocesador que te haga la faena y crear tu mismo la placa no es rentable. Si no tienes pasta, podrías aprovecharte del autoplay por defecto de algunos sistemas operativos. Recuerdo hace tiempo que en la sala de informática de mi instituto todos los PCs se llenaron de mierda por un chaval que trajo un usb infectado y todos aquellos ordenadores tenían el autoplay de los dispositivos de almacenamiento.

    -> A los que preguntan sobre scripts y demás. Normalmente suelo recomendar si necesitas info que te vayas a la docu del material. Los scripts en rubber ducky son llamados por así decirlo payload. Os recomiendo que si tenéis dudas le echéis un vistazo al Metasploit y Metasploiteable.

    -> A los que hablan de ejecutar en segundo plano. Depende del payload que cargues.

    -> Por bluetooth tendrías que forzar la entrada y auth del dispositivo con otras herramientas. Aun así, creo que por lo general, la mayoría de personas llevan el bluetooth por defecto desactivado (o eso espero porque sino que risas con la batería jajaja)

    -> Por último, a los que hablan sobre permisos... Existe el escalado de privilegios. Dependiendo del sistema y del parche que lleve, habrá diferentes vulnerabilidades por lo que diferentes formas de explotarlas, aunque, por lo general el escalado de privilegios compete los métodos aquellos por los cuales obtienes bien sea las cuentas de superusuario o bien directamente poder ejecutarlo como tal. Como curiosidad, si mal no me acuerdo, en el XP había una vulnerabilidad que era el comando AT que en resumidas cuentas te permitía ejecutar cualquier cosa como si fueras dios.


    Espero haber ayudado a la comunidad, un saludo!
    David Fdez. @davidfesteban

    ResponderEliminar