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

Cuanto tiempo verdad? Me alegra poder haber sacado algo de tiempo para hablaros de una cosita con la que he estado cacharreando ultimamente, ya sabeis como soy, os suena Digispark?

Lo mas probable es que si, pero hoy os traigo la manera explicada de como hacerlo funcionar sin quebraderos de cabeza referente al layout del teclado en español. Empecemos…

 

¿Que 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 costarian tiempo en apenas segundos, quien no ha visto su funcionamiento en MR ROBOT? no? 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 que contiene o darle uso al conectarlo al equipo se crea una conexión con el equipo atacante.

Imagen relacionada

 

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 chinas como Aliexpress, pero también depende de si quereis esperar una eternidad en recibir vuestros juguetes jeje. Os dejo enlaces de compra:

Amazon 3 x 10€: https://www.amazon.es/Desarrollo-Digispark-Attiny85-XCSOURCE-TE531/dp/B01IV3ZGI8/ref=sr_1_2?ie=UTF8&qid=1520536085&sr=8-2&keywords=digispark&dpID=51mWX%252BS%252BcbL&preST=_SY300_QL70_&dpSrc=srch

Aliexpress 1 x 1,50€: https://es.aliexpress.com/store/product/1-unids-ATTINY85-m-dulo-para-Arduino-junta-de-desarrollo-usb-Digispark-kickstarter/439978_32837195109.html

La diferencia de precio es bastante grande, pero como os decía, se paga mas la velocidad de envio, y sinceramente yo para estas cosas soy bastante impaciente jaja.

¡Quiero mi Digispark!

Además de disponer de una placa de este tipo, debemos de tener instalado en nuestro equipo de desarrollo el IDE de Arduino, si no lo teneis lo podeis descargar e instalar en pocos minutos

https://www.arduino.cc/en/main/software

 

¿Que caracteristicas 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 con el datasheet completo para este microchip: http://www.microchip.com/wwwproducts/en/ATtiny85

 

Configuración de Arduino

Antes de empezar a trabajar con nuestra placa debemos de tener instalado el IDE de Arduino tal y como os comentaba en la fase de requisitos, después de esto debemos de 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

Config Arduino

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

digistumpUna 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:

arduino

Después de esto, debemos de realizar una de las operaciones mas importantes y es instalar las librerias de digispark compatibles con varios layouts de teclados, porque las librerias preinstaladas unicamente soportan los teclados estadounidenses (en_US) y nos puede dar mas 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 https://github.com/ernesto-xload/DigisparkKeyboard

En su README teneis todos los pasos para instalar esta librería y ponerla en funcionamiento, debeis de descargar el repositorio y descomprimirlo en vuestro directorio de librerias de arduino, y me direis…donde 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

DigisparkKeyboard

Y para usar esta libreria debemos añadir siempre estas lineas al comienzo de cada script que realicemos (si lo hacemos para un sistema con teclado español)

#define kbd_es_es
#include “DigiKeyboard.h”

lineas_digispark

Para finalizar la configuración de funcionamiento de nuestro badUSB debemos de instalar los drivers de la placa en nuestro sistema, yo teniendo Windows 10 he necesitado insalarlos también, y lo podeis descargar desde este enlace:

https://raw.githubusercontent.com/digistump/DigistumpArduino/master/tools/micronucleus-2.0a4-win.zip

digispark drivers

 

Creación de nuestro primer script

Bueno ya después de la parte aburrida de configuraciones, descargar, copiar y pegar etc pasamos a lo divertido y es a 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 y la podemos encontrar en este repositorio.

https://github.com/toxydose/Duckyspark

Es una herramienta hecha en python, por lo que unicamente deberemos clonar el repo.

duckyspark

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

https://ducktoolkit.com/viewscript/all/

En esta web en la sección de User Scripts disponemos de una gran variedad de scripts con distintos objetivos, podemos elegir el que mas 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.

https://github.com/CedArctic/DigiSpark-Scripts

 
 
//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 podeis ir cacharreando con lo aprendido aqui (que creo que no es poco jaja) e ir probando si todo en vuestro entorno funciona.

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

 

 

Matías Moreno Cárdenas

Publicado por: Matías Moreno Cárdenas

Analista de Seguridad IT y hacking ético / Desarrollador de Software Multiplataforma. Actualmente analista de seguridad informática y hacking ético en Grupo SIA

Deja un comentario

Press Ctrl+C to copy the following code.
"