Transferencia de Archivos
Diferentes utilidades para las operaciones de transferencia de archivos en Windows.
Operaciones de Descarga
Codificación y decodificación PowerShell Base64
Máquina Atacante
Máquina Víctima (Windows)
Confirmación de la coincidencia de hashes MD5
System.Net.WebClient
PowerShell ofrece muchas opciones de transferencia de archivos. En cualquier versión de PowerShell, la clase System.Net.WebClient se puede utilizar para descargar un archivo HTTP
, HTTPS
o FTP
. La siguiente tabla describe los métodos de WebClient para descargar datos de un recurso:
DowloadFile
Máquina atacante
Máquina Víctima (Windows)
Sintaxis
DownloadFileAsync
Máquina Víctima (Windows)
Sintaxis
DownloadString
PowerShell también se puede utilizar para realizar ataques sin archivos. En lugar de descargar un script de PowerShell al disco, podemos ejecutarlo directamente en la memoria usando el cmdlet Invoke-Expression o el alias IEX
.
IEX
también acepta entrada de tubería.
Invoke-WebRequest
A partir de PowerShell 3.0, el cmdlet Invoke-WebRequest también está disponible, pero es notablemente más lento a la hora de descargar archivos. Puedes usar los alias iwr
, curl
, y wget
en lugar del nombre completo Invoke-WebRequest
.
SMB
Máquina atacante
Creamos un servidor SMB con impacket-smbserver
.
copy
Las nuevas versiones de Windows bloquean el acceso de invitados no autenticados.
Para transferir archivos en este escenario, podemos establecer un nombre de usuario y contraseña usando nuestro servidor Impacket SMB y montar el servidor SMB en nuestra máquina de destino con Windows:
Montar el recurso compartido
FTP
Otra forma de transferir archivos es mediante FTP (Protocolo de transferencia de archivos), que utiliza los puertos TCP/21 y TCP/20. Podemos utilizar el cliente FTP o PowerShell Net.WebClient para descargar archivos desde un servidor FTP.
Podemos configurar un Servidor FTP en nuestro host de ataque usando Python3 pyftpdlib
módulo. Se puede instalar con el siguiente comando:
Configurar un servidor FTP Python3
Una vez configurado el servidor FTP, podemos realizar transferencias de archivos utilizando el cliente FTP preinstalado desde Windows o PowerShell. Net.WebClient
.
Creamos un archivo de comando para el cliente FTP y descargamos el archivo de destino.
Operaciones de Subida
Codificación y decodificación PowerShell Base64
Máquina Víctima (Windows)
Máquina atacante
PowerShell Web Uploads
PowerShell no tiene una función incorporada para operaciones de carga, pero podemos usar Invoke-WebRequest
o Invoke-RestMethod
para construir nuestra función de carga. También necesitaremos un servidor web que acepte cargas, lo cual no es una opción predeterminada en la mayoría de las utilidades de servidor web comunes.
Para nuestro servidor web, podemos usar uploadserver , un módulo extendido del módulo HTTP.server de Python , que incluye una página de carga de archivos.
Script de PowerShell para cargar un archivo al servidor de carga de Python
PowerShell Base64 Web Upload
Otra forma de utilizar archivos codificados en PowerShell y base64 para operaciones de carga es mediante el uso Invoke-WebRequest
o Invoke-RestMethod
junto con Netcat. Usamos Netcat para escuchar en un puerto que especificamos y enviamos el archivo como petición POST
. Finalmente, copiamos la salida y usamos la función de decodificación base64 para convertir la cadena base64 en un archivo.
Captamos los datos base64 con Netcat y usamos la aplicación base64 con la opción de decodificación para convertir la cadena en el archivo.
Última actualización