Blog

ACTUALIDAD
Rubber ducky
7 May 2018

Rubber Ducky por menos de 8€ en Arduino – Digispark – Parte I

//
Comentarios0
/

¿Qué es Rubber Ducky o BadUSB? La idea principal de este tipo de hardware es emular a través de USB un teclado, con el objetivo de mandar las señales de pulsaciones y teclear las sentencias que queramos en un equipo víctima y a gran velocidad.

La gran ventaja de esto es que podemos realizar operaciones que nos costarían tiempo en apenas segundos. ¿Quién no ha visto su funcionamiento en MR ROBOT? ¿No lo has visto? Bien, pues dejan caer en un aparcamiento varios de estos dispositivos y, una vez la víctima lo recoge con el objetivo de ver qué contiene o darle uso al conectarlo al equipo, se crea una conexión con el equipo atacante.

Requisitos Básicos

Pues lo primero será disponer de una de estas placas Arduino, para ello os recomiendo visitar Amazon y adquirirla, basta con introducir en el buscador la palabra mágica Digispark.

También podemos localizar esta placa en tiendas como Aliexpress, aunque también depende de si queréis esperar una eternidad en recibir vuestros “juguetes”, jeje.

Os dejo enlaces de compra:

Amazon 3 x 10€

Aliexpress 1 x 1,50€ 

La diferencia de precio es bastante grande, pero como os decía, se paga más la velocidad de envío y, sinceramente, yo para estas cosas soy bastante impaciente, jaja. ¡Quiero mi Digispark!

Además de disponer de una placa de este tipo, debemos tener instalado en nuestro equipo de desarrollo el IDE de Arduino, si no lo tenéis, lo podéis descargar e instalar en pocos minutos pìnchando aquí.

 

¿Qué características tiene esta placa?

Bien, como os comentaba, esta placa es una placa de desarrollo para Arduino que utiliza un microcontrolador Attiny85 de Microchip.

  • Microcontrolador de 8 bits
  • 8kb de memoria flash
  • 512b EEPROM
  • 512b SRAM
  • 6 puertos I/O

Os dejo el datasheet completo para este microchip aquí.

 

Configuración de Arduino

Antes de empezar a trabajar con nuestra placa, debemos tener instalado el IDE de Arduino, tal y como os comentaba en la fase de requisito. Después de esto, debemos bajar el paquete de compatibilidad de esta placa, una operación bastante sencilla.

Nos vamos a Archivo > Preferencias > Gestor de URLs e introducimos la siguiente URL: http://digistump.com/package_digistump_index.json 

 

rubber ducky

 

Hecho esto, ya podemos ir a Herramientas > Placa > Gestor de Tarjetas y seleccionar e instalar la digistump avr.

 

rubber ducky

 

Una vez instalada, procurad dejar estas mismas opciones que os señalo a continuación, para que la comunicación entre nuestro IDE y la placa sea del todo correcta:

 

rubber ducky

 

Después de esto, debemos realizar una de las operaciones más importantes, que es instalar las librerías de digispark compatibles con varios layouts de teclados, porque las librerías preinstaladas únicamente soportan los teclados estadounidenses (en_US) y nos puede dar más de un dolor de cabeza intentar ejecutar scripts en una máquina en español (esto lo he vivido en mis carnes, no me lo han contado, jaja).

Bien, es una operación sencilla. Os dejo el repositorio de ernesto-xload, que muy amablemente ha realizado las modificaciones necesarias para soportar todos estos layouts (gracias, Ernesto):

  • be_be
  • cz_cz
  • da_dk
  • de_de
  • en_us (default)
  • es_es
  • fi_fi
  • fr_fr
  • it_it
  • pt_pt
  • tr_tr

El enlace al repositorio es este.

En su README tenéis todos los pasos para instalar esta librería y ponerla en funcionamiento. Debéis descargar el repositorio y descomprimirlo en vuestro directorio de librerías de Arduino. Y me diréis, ¿dónde leches es eso? Bien, pues yo lo tengo situado en:

C:\Users\matias\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard

 

rubber ducky

 

Y para usar esta librería, debemos añadir siempre estas líneas al comienzo de cada script que realicemos (si lo hacemos para un sistema con teclado español):

#define kbd_es_es
#include “DigiKeyboard.h”

 

 

Para finalizar la configuración de funcionamiento de nuestro badUSB, debemos instalar los drivers de la placa en nuestro sistema. Yo, teniendo Windows 10, he necesitado instalarlos también. Los podéis descargar desde aquí.

 

rubber ducky

 

Creación de nuestro primer script

Bueno, después de la parte aburrida de configuraciones, descargar, copiar y pegar, etcétera, pasamos a lo divertido, que es la creación de nuestros scripts. Podemos hacer gran variedad de cosas y dejar que nuestra imaginación se mueva con total libertad (y maldad, jujuju).

Vamos a utilizar dos herramientas de extrema utilidad, la primera de ellas nos transformará los scripts hechos para el Rubber Ducky y los pasará a código Arduino para poder utilizarlo con nuestro Digispark. Esta herramienta, llamada Duckyspark, la podemos encontrar en este repositorio.

Es una herramienta hecha en Python, por lo que únicamente deberemos clonar el repo.

 

rubber ducky

 

Nuestro siguiente movimiento será buscar el script realizado para Rubber Ducky que más nos guste. Para este caso yo siempre o casi siempre suelo acudir a la siguiente web llamada Duck toolkit.

En esta web, en la sección de User Scripts, disponemos de una gran variedad de scripts con distintos objetivos. Podemos elegir el que más rabia nos dé, pero teniendo en cuenta que algunos están pensados para su funcionamiento en Rubber Ducky y es posible que para nuestro Digispark no funcione tan bien, o necesitemos realizar alguna modificación nosotros a mano.

Podemos también visitar gran cantidad de repositorios que se pueden ver a lo largo de la red que ya contienen scripts utilizables por nuestro Rubber Ducky. Aquí os dejo uno con varios scripts también interesantes.

 

//This DigiSpark script opens up Rick Astley’s – Never Gonna Give You Up and also a fake Windows update screen and then maximizes it using F11

#include “DigiKeyboard.h”

void setup() {

//empty

}

void loop() {

DigiKeyboard.delay(2000);

DigiKeyboard.sendKeyStroke(0);

DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);

DigiKeyboard.delay(600);

DigiKeyboard.print(“https://youtu.be/dQw4w9WgXcQ?t=43s“);

DigiKeyboard.sendKeyStroke(KEY_ENTER);

DigiKeyboard.delay(5000);

DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);

DigiKeyboard.delay(3000);

DigiKeyboard.print(“http://fakeupdate.net/win10u/index.html“);

DigiKeyboard.sendKeyStroke(KEY_ENTER);

DigiKeyboard.delay(2000);

DigiKeyboard.sendKeyStroke(KEY_F11);

for(;;){ /*empty*/ }

}

Aprenderemos a compilar estos scripts con nuestro entorno preparado de Arduino y flashear nuestra placa en la siguiente entrada. Mientras tanto, podéis ir cacharreando con lo aprendido aquí (que creo que no es poco, jaja) e ir probando si todo en vuestro entorno funciona.

Aprovechad los que no tenéis aún vuestro Digispark, compradlo ya y nos vemos en la próxima parte 🙂.