Hacking Ético con Arduino (1)

septiembre 27, 2024

Introducción

Hay una serie bastante desconocida a la que le tengo mucho cariño desde joven: The Lone Gunmen. Es un spin-off de Expediente X que sigue a los Pistoleros Solitarios, tres personajes que, aunque no lo parecían, eran héroes a su manera. Periodistas, hackers, y amantes de la tecnología.

Estos tipos usaban gadgets que parecían sacados de un taller DIY: cosas para abrir cajas fuertes, espiar conversaciones o hackear ordenadores en segundos. De esas cosas que de niño veías y decías “ojalá tener uno”.

Lo que más me flipaba era la idea de conectar un USB y tener acceso instantáneo a cualquier PC. En su momento, todo aquello era pura ciencia ficción, parecía imposible. Pero, sorpresa, hoy ya no lo es.

Con un pequeño cacharro como el Arduino Pro Micro puedes hacerlo.

No, no estamos hablando de magia ni de ciencia ficción.

Enchufas un dispositivo, se hace pasar por un teclado y… bum, puedes interactuar con un ordenador sin que nadie se dé cuenta. En este artículo te voy a enseñar cómo hacerlo.

Arduino Pro Micro: Cerebro de la operación

El Arduino Pro Micro es un microcontrolador que, a primera vista, no parece gran cosa.

Es del tamaño de una caja de cerillas, pero no te dejes engañar, porque esta pequeña placa tiene el superpoder de hacerse pasar por un teclado o un ratón cuando lo conectas a un ordenador.

¿Cómo lo consigue? Bueno, ahí está la gracia. El Pro Micro puede actuar como un dispositivo HID (Human Interface Device), que básicamente es la forma en la que un ordenador identifica a los teclados, ratones y otros periféricos.

¿Te ha pasado que cuando enchufas un teclado nuevo al ordenador, este lo reconoce automáticamente? Eso es porque el dispositivo le dice al sistema: «Hey, soy un teclado, hazme caso». Con el Pro Micro, puedes hacer lo mismo, solo que esta vez tú decides qué comandos ejecutar.

Lo que hacemos es programar el Pro Micro para que, cuando lo conectemos al PC, emule el comportamiento de un teclado.

En lugar de escribir letras aleatorias, lo que harás será predefinir comandos que el Arduino ejecutará como si fueran pulsaciones de teclas. Piensa en abrir una terminal, escribir un comando específico, o incluso abrir aplicaciones automáticamente.

Todo esto con solo enchufarlo al puerto USB. El ordenador ni se entera de que, en realidad, no es un teclado real.

Esta capacidad abre un abanico enorme de posibilidades. Desde automatizar tareas rutinarias hasta realizar pruebas de seguridad en sistemas.

¿Sabes esos momentos en los que necesitas abrir una aplicación, ejecutar varios comandos y revisar resultados? Con el Pro Micro puedes automatizar todo eso y ahorrarte horas de trabajo repetitivo. No más copiar y pegar comandos, lo enchufas y listo.

Las posibilidades de interacción con un ordenador son casi infinitas. Puedes, por ejemplo, programarlo para simular el inicio de sesión en un equipo. Imagina que tienes una secuencia de teclas que utilizas para loguearte en diferentes plataformas.

El Arduino las puede «teclear» por ti en segundos. También puedes abrir navegadores, cargar URLs, o incluso simular acciones del ratón. Todo depende de lo que necesites automatizar.

Y aquí es donde la cosa se pone interesante. Puedes usar el Pro Micro para realizar ataques de prueba, como el famoso ataque de Rubber Ducky, donde emulas un teclado para ejecutar comandos peligrosos.

Pero lo más importante es que este tipo de herramientas también tienen aplicaciones legales y muy útiles en pentesting (pruebas de seguridad informática), permitiéndote ver qué tan vulnerable es un sistema ante este tipo de ataques.

En resumen, el Arduino Pro Micro es como una navaja suiza: pequeño, versátil, y capaz de realizar una amplia gama de funciones.

¿El límite? Tu imaginación y, claro, las líneas de código que quieras cargarle.

Rubber Ducky y cía

Probablemente hayas oído hablar del Rubber Ducky. Si no, te lo presento: es un dispositivo USB que parece inofensivo, pero en cuanto lo conectas, se convierte en una auténtica pesadilla para cualquier sistema desprotegido. El Rubber Ducky emula un teclado, igual que el Arduino Pro Micro, pero con un diseño mucho más pulido para ataques rápidos y automatizados.

La idea es sencilla: cuando conectas un Rubber Ducky a un ordenador, este empieza a teclear comandos predefinidos a la velocidad de la luz, como si un fantasma hubiera tomado el control.

Y como el sistema operativo confía en los teclados, no pone ninguna barrera. Puedes ejecutar desde algo tan simple como abrir una página web hasta instalar software o modificar configuraciones críticas del sistema.

¿Qué tiene esto que ver con el Arduino Pro Micro? Básicamente, con el Arduino puedes hacer lo mismo por una fracción del precio.

Claro, el Rubber Ducky es más plug-and-play, mientras que el Pro Micro requiere un poco más de trabajo porque tienes que programarlo tú mismo.

Pero si te gusta cacharrear y prefieres la filosofía DIY, el Arduino es el camino perfecto para construir tu propio dispositivo de ataque, o más bien, de pruebas de seguridad.

Además del Rubber Ducky, hay otros dispositivos parecidos, como el Bash Bunny o el LAN Turtle, que son herramientas populares en el mundo del pentesting. Todos estos dispositivos tienen un punto en común: su tamaño. Son lo suficientemente pequeños como para pasar desapercibidos, lo que los convierte en aliados ideales en simulaciones de ataques reales.

Lo mejor del Arduino Pro Micro es que puedes adaptarlo a tus necesidades. No solo emular un teclado, sino también programarlo para realizar tareas muy específicas que los dispositivos como el Rubber Ducky no pueden hacer sin un conocimiento profundo de su sistema.

Digamos que el Arduino es la opción «abierta» que te permite personalizar todo a tu gusto.

Además, como mencionaba antes, el Rubber Ducky es más conocido por su uso en ataques maliciosos, pero aquí no estamos para eso.

Estamos para aprender cómo protegernos de estas herramientas y usarlas en entornos controlados, como en auditorías de seguridad o para mejorar procesos de automatización.

No conectes cualquier USB que te encuentres por la calle, y mucho menos subestimes lo que un pequeño dispositivo como este puede hacer.

La lección aquí es simple: lo que antes parecía algo sacado de una peli de hackers, ahora es una realidad. Herramientas pequeñas, pero con un potencial enorme, que pueden hacer travesuras en cualquier equipo sin la protección adecuada.

Por eso, cuanto más las conozcas, mejor preparado estarás para defenderte de ellas.

Creando tu arma de hacking con Arduino

Ahora que ya sabes lo que puede hacer el Arduino Pro Micro, es momento de crear tu propio gadget para automatizar tareas simples. Y cuando digo “arma hacker”, lo digo en el buen sentido. Esto no es para dañar, sino para entender el poder de la automatización en un entorno controlado. Vamos a ver algunos ejemplos que te permitirán interactuar con un ordenador de forma automática, sin hacer nada más que conectar el dispositivo.

Ejemplo 1: Abrir la terminal de comandos (CMD)

Este es un ejemplo clásico. Con el Arduino Pro Micro, puedes hacer que al conectarlo, abra automáticamente la terminal de comandos de Windows. ¿Cómo lo hacemos? Solo necesitamos un pequeño script que envíe las teclas adecuadas.

#include "Keyboard.h"

void setup() {
  // Inicializamos el teclado
  Keyboard.begin();
  delay(500);  // Esperamos medio segundo para que el PC reconozca el dispositivo

  // Simulamos la combinación de teclas para abrir CMD: Win + R, escribir "cmd" y presionar Enter
  Keyboard.press(KEY_LEFT_GUI);  // Tecla Windows
  Keyboard.press('r');  // Tecla R
  delay(100);  // Un pequeño retraso para que el sistema lo detecte
  Keyboard.releaseAll();

  // Escribimos "cmd" en el cuadro de diálogo que aparece
  delay(500);  // Esperamos a que aparezca el cuadro de diálogo
  Keyboard.print("cmd");
  delay(500);

  // Simulamos la tecla Enter
  Keyboard.press(KEY_RETURN);
  Keyboard.releaseAll();
}

void loop() {
  // No necesitamos hacer nada en el loop
}

Con este código, cada vez que conectes el Arduino al puerto USB, abrirá automáticamente el CMD. Ya te puedes imaginar las posibilidades de automatización que esto ofrece.

Ejemplo 2: Descargar un archivo usando curl

Este siguiente paso es igual de sencillo. Supongamos que quieres automatizar la descarga de un archivo desde internet usando curl. Primero, abrimos CMD como en el ejemplo anterior, y luego ejecutamos el comando curl.

#include "Keyboard.h"

void setup() {
  Keyboard.begin();
  delay(500);

  // Abrimos CMD como en el ejemplo anterior
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press('r');
  delay(100);
  Keyboard.releaseAll();
  delay(500);
  Keyboard.print("cmd");
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.releaseAll();
  delay(1000);  // Esperamos a que se abra la terminal

  // Ejecutamos el comando curl para descargar un archivo
  Keyboard.print("curl -O https://example.com/archivo.txt");  // URL del archivo
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.releaseAll();
}

void loop() {
  // Nada en el loop
}

Este script hace que, al conectar el Arduino, abra CMD y ejecute el comando curl para descargar el archivo desde la URL que definas. Automático, sin esfuerzo.

Ejemplo 3: Abrir una página web en el navegador

Otra tarea que puedes automatizar fácilmente es abrir un navegador y cargar una página web. El procedimiento es similar: primero usas la combinación de teclas para abrir un cuadro de ejecución (Win + R), y luego escribes la URL.

#include "Keyboard.h"

void setup() {
  Keyboard.begin();
  delay(500);

  // Abrimos el cuadro de ejecución
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press('r');
  delay(100);
  Keyboard.releaseAll();
  delay(500);

  // Escribimos la URL para abrir el navegador
  Keyboard.print("https://www.example.com");
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.releaseAll();
}

void loop() {
  // Nada en el loop
}

Con estos ejemplos ya tienes una idea clara del potencial que ofrece el Arduino Pro Micro. Puedes automatizar todo tipo de tareas con unas pocas líneas de código.

Sin embargo, es importante recordar que todo esto debe usarse de manera responsable. La misma herramienta que sirve para mejorar procesos y realizar pruebas de seguridad puede ser utilizada para fines maliciosos si no se tiene cuidado.

Siempre asegúrate de que estás trabajando en un entorno controlado y con permisos adecuados, especialmente si estás probando estas herramientas en sistemas que no son tuyos.

No es lo mismo automatizar tareas en tu propio ordenador que usar estos scripts en el equipo de alguien sin su conocimiento.

No soy responsable de tus actos.

Conclusión

El Arduino Pro Micro es mucho más que un simple microcontrolador.

Como has visto, tiene la capacidad de emular un teclado y ejecutar comandos automáticamente, lo que lo convierte en una herramienta increíblemente versátil.

Desde automatizar tareas rutinarias hasta simular pruebas de penetración (pentesting) en un entorno controlado, este pequeño dispositivo tiene un potencial casi ilimitado.

Pero, como ocurre con cualquier herramienta poderosa, el uso responsable es la clave. Todo lo que te he mostrado aquí tiene aplicaciones útiles y educativas.

Desde abrir CMD hasta descargar archivos o automatizar secuencias de trabajo, lo importante es que entiendas cómo funciona y uses estos conocimientos con ética. El mismo dispositivo que puede facilitarte el trabajo también podría causar problemas si se usa con malas intenciones.

Así que ahora que sabes cómo construir tu propia arma hacker con Arduino, recuerda que la tecnología no es buena ni mala en sí misma.

Depende de cómo la uses.

Con un enfoque ético, puedes aprender, experimentar y llevar tus habilidades al siguiente nivel, siempre respetando los límites de la legalidad y la seguridad.