USB Rubber Ducky casero (DIY)

Introducción

Decidí realizar este proyecto por el precio abusivo de un usb rubber ducky. La mayoría de los USB comunes son explotables debido a la vulnerabilidad "BadUSB". Esto permite a los piratas informáticos re-programar el micro-controlador de estos para que actúe como un "dispositivo de interfaz humana" (HID)/Teclado y realizar las pulsaciones de teclado personalizados en nuestra máquina de destino. Este escenario es a menudo llamado "HID Payload Attack", ya que tienes que entregar el USB para la ejecución (hablaremos de esto mas adelante). A pesar de que casi todas las unidades flash/USB son explotables, sólo hay una manera  y es reprogramar micro controladores "Phison" (Por ahora).

En este tutorial vamos a determinar el micro controlador de la unidad flash (USB), compilar el código fuente para las herramientas que necesitamos que esta publicado en Github, hacer un "custom firmware" con una carga útil de HID incorporada y convertir nuestra unidad flash usb inofensiva en un teclado malicioso diseñado para ayudarnos a lograr el compromiso del equipo de la víctima.

El proceso es parecido a compilar y flashear roms en un dispositivo Android.

 

Necesitamos:

  • Usar Windows
  • Una unidad flash USB 3.0 con Phison 2303 (2251-03) de micro controlador.
    Voy a utilizar la "Toshiba TransMemory-MX USB 3.0 8GB" en este tutorial.
  • Poder abrir la caja de su dispositivo USB sin dañarlo.

*Notas:

Podemos encontrar una lista de dispositivos compatibles conocidos en GitHub.
https://github.com/adamcaudill/Psychson/wiki/Known-Supported-Devices

A veces, tener un dispositivo confirmado, no significa que se está utilizando el PS2251-03, ya que los fabricantes pueden utilizar diferentes controladores, incluso en los mismos modelos de dispositivos.

-Por Favor, continúe bajo su propio riesgo, no hay garantía de que el dispositivo seguirá funcionando.

¡A pesar de que no debería aparecer ningún problema!

 

Determinar el Micro controlador de nuestro USB

Antes de empezar queremos asegurarnos de que nuestro USB utiliza el controlador compatible. Podemos usar un programa llamado "Flash Drive Information Extractor" para recopilar la información necesaria de nuestro USB:
USB Drive Info

No requiere instalación, se puede usar directamente desde el archivo ZIP. Sólo tiene que abrir la herramienta y pulsa el botón "Obtener Información USB Flash Drive", mientras que tienemos el USB insertado en el PC. Si la unidad utiliza el Controlador Phison 2303 (2251-03)  el resultado debe ser parecido a esto:

usbflashinfo

Sin embargo, si el dispositivo USB tiene un micro controlador diferente, lo más probable es que no se puede reprogramar para hacer un dispositivo HID con este exploit. Recomiendo comprobar los dispositivos compatibles conocidos en github y pedir uno de esos, en Ebay.es tienes gran cantidad y directamente te llega a tu puerta.

 

Configurar el entorno de trabajo

El desarrollador del exploit recomienda usar cualquier versión de "Microsoft Visual Studio 2012" o superior para compilar las herramientas:
y "SDCC" para crear el firmware personalizado:
Visual Studio suele tomar varias horas para descargar y no puede ser detenido, así que asegúrate de que tiene suficiente tiempo disponible. También ocupa bastantes gigabytes en su disco principal, alrededor de 10 GB en mi SSD, lo cual es molesto si solo lo vamos a usar una par de veces.

Descarga y compilación del código fuente

Para poder modificar el código antes debemos descargarlo, el código fuente se publico en github por adamcaudill:

https://github.com/adamcaudill/Psychson
En realidad Visual Studio viene con una característica interesante, vamos a clonar todo el repositorio. Incluso podemos interactuar con Visual Studio(VS) desde el sitio github:

Como hacer un BAD USB (Un Rubber Ducky USB) 2

 

Como hacer un BAD USB (Un Rubber Ducky USB) 3

Después de la clonación y la apertura del repositorio. Lo más probable es ver tres soluciones.

  • DriveCom
  • EmbedPayload
  • Injector

Vamos a necesitar "DRIVECOM" y "EmbedPayload" solamente, si se abre se puede compilar con

Ctrl + Shift + B
o
Menu bar - Build - Build Solution
Si no se puede clonar el repositorio a través de Visual Studio, descargue el archivo .zip desde github y abrir los archivos .sln en cada carpeta de las soluciones.
DRIVECOM y EmbedPayload debería estar ya en el directorio ... Psychson tools
E: Documents Bad_USB Psychson tools

Como hacer un BAD USB (Un Rubber Ducky USB) 4

Obtener una "Burner Image"

Una "Burner Image" es necesaria para hacer dumping y flashear el firmware del usb. Estos se denominan normalmente utilizando la convención "BNxxVyyyz.BIN".
Las "Burner Images"para controladores Phison se pueden encontrar aquí:
El sitio sólo está disponible en ruso, podemos encuentrar el enlace de descarga si escaneamos el sitio buscadno "BN03" (BN implica "Burner Images" y 03 corresponde a PS2251-03)
Extraigan los archivos:
E: Documents BadUSB Burner_Image
 

Todas las "Burner Image" debe hacer el trabajo bien, pero se puede usar la versión más reciente que se indica por la parte "VYYY" del nombre.

 

Descargar Duck Encoder

El "Duck Encoder" es una herramienta multiplataforma basada en Java que convierte las secuencias de comandos en las cargas útiles de HID. Se basa en el exploit que nombrabamos antes: "BadUSD" también llamado "Rubber Ducky" creado por Hak5:

https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Downloads

No se olvide de instalar Java:

https://www.java.com

Lo guardé en

E: Documents Bad_USB DuckEncoder

 

Crear un Firmware personalizado

En este punto todos los preparativos ya están echos y pueden seguir utilizando las herramientas previamente descargadas. En este paso simplemente tenemos que ir a nuestro directorio ... Psychson firmware  y ejecutar build.bat. Si todo va bien, verá una nueva carpeta con muchos archivos diferentes en el interior.
Como hacer un BAD USB (Un Rubber Ducky USB) 5
fw.bin es el archivo que usaremos a continuación.

Escribiendo un Script

Te puedes preguntar en qué lenguaje vamos a escribir nuestro script. Como el DuckEncoder se basa en el "Rubber Ducky" vamos a utilizar "Duckyscript" como idioma. La sintaxis es bastante fácil.  se Pueden encontrar aquí instrucciones más detalladas:

https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript
Vamos a seguir y crearemos un archivo .txt en nuestro directorio preferido.
E: Documents Bad_USB DuckEncoder script.txt
Pensé en mostrarles algo más interesante que un script "Hello World" así que hice éste:

Como usted puede suponer, el BAD USB  "pulsa" la tecla Windows + R y apagar de inmediato el ordenador. Además se puede ver claramente que escribí "/" en lugar de "-". Eso es porque nuestro "Teclado" (BAD USB) tiene un diseño de Estados Unidos y las ventanas se establece en Déu en mi país. Tenga en cuenta que tenemos que cambiar el diseño de las ventanas de los Estados Unidos y escribir el guión de la manera que haríamos normalmente, o la forma en su PC víctimas sería escribirlo. No sea confuso de la entrada.

Usted puede incluso utilizar scripts personalizados y hacer algo de ingeniería inversa:

https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads

Convirtiéndolo en un HID Payload

Es el momento de empezar a utilizar la terminal de windows - cmd.

java -jar "PATH to duckencode.jar" -i "PATH to script.txt"-o "payload.bin Path"

Ejemplo:
java -jar E:DocumentsBadUSBDuckEncoderduckencode.jar -i E:DocumentsBad_USBDuckEncoderscript.txt -o E:DocumentsBad_USBDuckEncoderinject.bin

No vamos a conseguir ninguna salida, pero inject.bin se debe crear en "E: Documents Bad_USB DuckEncoder " en mi caso

Insertar el Payload el firmware

Ahora tenemos que utilizar las herramientas que construimos con Visual Studio. Obviamente EmbedPayload es para Payload. Simplemente tenemos que ejecutarlo en cmd:
"Path to EmbedPayload.exe" "PATH to payload" "PATH to the firmware we built"
para mi es:
E:DocumentsBadUSBPsychsontoolsEmbedPayload.exe E:DocumentsBad_USBDuckEncoderinject.bin E:DocumentsBad_USBPsychsonfirmwarebinfw.bin
Nota: ese fw.bin incluye el payload ahora. Tu puedes sobreescribir el payload ejecutando build.bat otra vez.

Volcado del firmware actual de la unidad flash USB

Yo les aconsejo hacer una copia del firmware actual en su unidad flash USB por si desea restaurar. Para cualquier acción que queremos tener en nuestro USB tenemos que usar DRIVECOM que está en nuestra carpeta "herramientas".
"PATH to DriveCom.exe" /drive="Drive Letter of our USB" /action=DumpFirmware /burner="PATH to our burner image" /firmware="PATH of the output.bin"
En mi caso:
E:DocumentsBad_USBPsychson-mastertoolsDriveCom.exe /drive=F /action=DumpFirmware /burner=E:DocumentsBad_USBFirmwareBN03V117M.BIN /firmware=E:DocumentsBad_USBoriginalfw.bin
 

Flashear el Firmware

Finalmente podemos entregar el muy maliciosa apagar payload integrado en el firmware a nuestra unidad flash USB:
"PATH to DriveCom.exe" /drive="Drive Letter" /action=SendFirmware /burner="PATH to our burner image" /firmware="PATH to the firmware"
En mi caso:
E:DocumentsBadUSBPsychsontoolsDriveCom.exe /drive=F /action=SendFirmware /burner=E:DocumentsBad_USBFirmwareBN03V117M.BIN /firmware=E:DocumentsBad_USBPsychsonfirmwarebinfw.bin
Una salida exitosa debe tener este aspecto:

Como hacer un BAD USB (Un Rubber Ducky USB) 7

Observe que DRIVECOM está cambiando el modo de nuestra USB a modo de arranque de forma automática al flashear el firmware. Ahora que nuestra unidad flash USB se ha convertido en un teclado que no podemos cambiar los modos más con nuestras herramientas, ni el acceso a la memoria, pero eso es un problema menor. En la siguiente sección me centraré cómo resolver este problema.

Ajuste de nuestro dispositivo en "modo de arranque" Manualmente

You can boot manually, if you unplug the device, put a needle (or some other very small/fine metalthing) between pin 2 and 3 at the side above the TOSHIBA label. According to the picture it would be left side of the chip and the second and third pin counting upside down. With the needle at the pins you have to replug the device and wait for ~1 second, remove the needle and the stick is in boot mode (lamp keeps glowing). Now you can flash, but to me it only worked for custom firmware and I couldn't get back to original firmware.
Hope I could help.
Si usted quiere tomar medidas adicionales para su BAD USB te darás cuenta de que ni DRIVECOM ni en Windows ni ningún otro sistema operativo pueden acceder a ella, ya que es un teclado después de todo. Tenemos que abrir la tapa de nuestra unidad USB y conectar dos pines del microcontrolador mientras enchufa la unidad en nuestro PC.
Desde el círculo está en la esquina superior izquierda de mi controlador - desde esta perspectiva - Tengo que conectar los dos pasadores de la parte inferior izquierda:
(Puede que tenga que abrir la imagen en una nueva pestaña y hacer zoom )

Como hacer un BAD USB (Un Rubber Ducky USB) 8

 

Yo suelo usar el borde de un conector USB para conectar estos dos pines. Además de un cable de extensión USB puede ser muy útil en este escenario. Parece que es difícil, pero usted se acostumbrará a esto. Utilice lo que usted se sienta más cómodo, sin dañar su unidad flash USB. Si lo haces correctamente la unidad se mostrará en windows de nuevo:
Como hacer un BAD USB (Un Rubber Ducky USB) 9
... Y podemos modificar nuestra unidad o el firmware original de nuevo.
Si no, su PC se apagará, esfuércese más la próxima vez.Notas:

  • El BAD USB puede no funcionar en todos los PC con Windows, incluyendo la mía, ya que puede no tener los drivers necesarios
  • Tenga en cuenta que usted no será capaz de acceder a la memoria, mientras que su unidad USB está fingiendo ser un dispositivo HID

Reflexiones finales

El Bad USB es una herramienta muy poderosa si usted tiene acceso a el ordenador de la víctima, incluso pensaron que windows podria protegerle, les deja la carga automática de los controladores USB. Además se evita la detección AntiVirus ya que es un teclado en lugar de un virus.
Si usted está pensando en hacer de un simple pretexto para insertar nuestra usb en una PC de la empresa de su elección, por favor, tenga en cuenta que tener una unidad flash usb real para el caso lo más probable es que va a ser atrapado, por lo que puede escapar fácilmente .
Además me gustaría mencionar que realmente aprecio retroalimentación constructiva de ustedes. Así que no dude en contactar si encuentra algún error o quieres que mejorar algo!