🔄File Transfers
Son técnicas utilizadas por los atacantes para transferir archivos maliciosos o datos robados desde un sistema comprometido a un sistema controlado por el atacante o viceversa.
Nota: Este tipo de técnicas son muy invasivas, ya que vamos a enviar y recibir archivos en sistemas comprometidos, por lo que no podemos utilizar estas técnicas sin un consentimiento o aprobación por parte del objetivo
En la máquina que envía el archivo
En la máquina que recibe el archivo
Descarga con Wget o Curl
Si especificamos el puerto 80 en el envío con python solamente tendríamos que introducir la IP de la máquina que envía el archivo y el archivo a enviar
Ejecutar archivos directamente en Linux
Ejemplo con un ejecutable en Bash
Descarga con PowerShell
Podemos especificar el nombre de la clase Net.WebClient
y el método DownloadFile
con los parámetros correspondientes a la URL del archivo de destino para descargar y el nombre del archivo de salida.
Descarga con PowerShell - Método Fileless
Los ataques sin archivos funcionan mediante el uso de algunas funciones del sistema operativo para descargar y ejecutar los payloads. PowerShell también se puede utilizar para realizar ataques sin archivos. En lugar de descargar un script de PowerShell en el disco, podemos ejecutarlo directamente en la memoria usando el comando Invoke-Expression
o el alias IEX
PowerShell Invoke-WebRequest
Desde PowerShell 3.0 en adelante, el cmdlet Invoke-WebRequest
también está disponible, pero es notablemente más lento para descargar archivos. Puedes usar los alias iwr
, curl
y wget
en lugar del nombre completo Invoke-WebRequest
.
Descarga con SMB
El protocolo SMB que se ejecuta en el puerto TCP/445 se encuentra más comúnmente en las redes empresariales donde se ejecutan los servicios de Windows. Permite que las aplicaciones y los usuarios transfieran archivos entre servidores remotos. Podemos usar SMB para descargar archivos de nuestra máquina atacante fácilmente. Necesitamos crear un servidor SMB en nuestra máquina con smbserver.py de Impacket y luego usar copiar, mover, PowerShell Copy-Item o cualquier otra herramienta que permita la conexión a SMB.
¡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 una contraseña usando nuestro servidor SMB de Impacket y montar el servidor SMB en nuestra máquina de destino de Windows:
Desde la interfaz gráfica de Windows
Descarga con FTP
Otra forma de transferir archivos es mediante FTP (Protocolo de transferencia de archivos), que utilizan los puertos TCP/21 y TCP/20. Podemos usar 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 el módulo Python3 pyftpdlib. Se puede instalar con el siguiente comando:
Por defecto, pyftpdlib usa el puerto 2121. ¡Podemos cambiarlo con la opción -p / --port!
Descargar archivos desde un servidor FTP con PowerShell
Carga de archivos - FTP
La carga de archivos mediante FTP es muy similar a la descarga de archivos. Podemos usar PowerShell o el cliente FTP para completar la operación. Antes de iniciar nuestro servidor FTP utilizando el módulo de Python pyftpdlib, debemos especificar la opción --write para permitir que los clientes carguen archivos en nuestro host de ataque.
PowerShell Upload File
Con Netcat
Comando para recibir el fichero en Linux y Windows:
Comando para enviar el fichero en Linux y Windows:
Usando Base64
En algunos casos, es posible que no podamos transferir el archivo. Por ejemplo, el host remoto puede tener protecciones de firewall que nos impiden descargar un archivo de nuestra máquina. En este tipo de situación, podemos usar un truco simple para codificar en base64 el archivo en formato base64
, y luego podemos pegar la base64
cadena en el servidor remoto y decodificarla. Por ejemplo, si quisiéramos transferir un archivo binario llamado shell
, podemos base64
codificarlo de la siguiente manera:
Ahora, podemos copiar esta cadena en base64
, ir al host remoto, y usar base64 -d
para decodificarla y canalizar la salida a un archivo:
Guía rápida
Hack Tools Plugin
Este plugin disponible para todos los navegadores tenemos recogidas todas estas técnicas de envío de archivos, pudiendo configurar la IP, el puerto y el nombre del archivo que queremos enviar.
Última actualización