[Tutorial] Como hacer un BAD USB (Un Rubber Ducky USB)

Iniciado por Stiuvert, Enero 28, 2017, 12:46:50 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Enero 28, 2017, 12:46:50 PM Ultima modificación: Enero 28, 2017, 01:05:54 PM por Stiuvert
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.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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:



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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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:No tienes permitido ver los links. Registrarse o Entrar a mi cuentay "SDCC" para crear el firmware personalizado:No tienes permitido ver los links. Registrarse o Entrar a mi cuentaVisual 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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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:



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 conCtrl + Shift + B
o
Menu bar – Build – Build SolutionSi 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 toolsE: Documents Bad_USB Psychson tools

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í:No tienes permitido ver los links. Registrarse o Entrar a mi cuentaEl 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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No se olvide de instalar Java:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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.



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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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.binNo 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.binNota: 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

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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.binUna salida exitosa debe tener este aspecto:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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

CitarNo tienes permitido ver los links. Registrarse o Entrar a mi cuenta Take a look at this picture:No tienes permitido ver los links. Registrarse o Entrar a mi cuentaYou 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 )

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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:



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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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!

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Pedazo de aporte, gracias por compartir compañero.

Muy bueno aunque sea c/p

Salu2
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Buenos días, quería hacer un usb bad como proyecto fin de ciclo, pero a pesar de buscar los compatibles, me esta siendo prácticamente imposible encontrar las memorias que figuran en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Quería saber si viene con la versión 2307 en lugar de con la 2303 valdría para realizarlo o no

La verdad es que estaba buscando algún tuto facilillo para ponerme a ello, será posible acceder a otros fichero como el caché del navegador?

Gracias por el post!.

Quería preguntar si solo se pueden utilizar solo los que vienen en la página No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Lo comento porque tengo el Kingston DataTraveler G3 32 GB, y me gustaría saber si es compatible, pues he visto otras páginas donde dicen que se puede utilizar cualquier USB DataTraveler.
Gracias.


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Quería preguntar si solo se pueden utilizar solo los que vienen en la página No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Lo comento porque tengo el Kingston DataTraveler G3 32 GB, y me gustaría saber si es compatible, pues he visto otras páginas donde dicen que se puede utilizar cualquier USB DataTraveler.
Gracias.

Lo mismo, haber si alguien lo ha probado en ello, si no, no queda mas que probar, aunque seria mejor en uno de 2GB  ;D

Gracias por leer.

Por lo menos hay uno más, he visto que se puede hacer con arduino, se llama digispark o badusb o evilusb. Además hay varios tipos

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Quería preguntar si solo se pueden utilizar solo los que vienen en la página No tienes permitido ver los links. Registrarse o Entrar a mi cuenta. Lo comento porque tengo el Kingston DataTraveler G3 32 GB, y me gustaría saber si es compatible, pues he visto otras páginas donde dicen que se puede utilizar cualquier USB DataTraveler.
Gracias.

Lo mismo, haber si alguien lo ha probado en ello, si no, no queda mas que probar, aunque seria mejor en uno de 2GB  ;D

Gracias por leer.

How to check your firmaware

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:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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:



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

....

Saludos!
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Hola.

Alguna manera de conocer el controlador del usb desde linux? ArchLinux para ser concretos.

No he entendido la parte de conectar los dos pines, ni con la imagen me ha quedado claro... me lo podeis repetir por favor?

Gracias!.

 Una pasada la verdad me gusto mucho el post espero poder a prueba estos conocimientos... a ver que tal me va