XUT_ / COURSES / PENETRATION TESTER

File Transfer Protocol (FTP)

File Transfer Protocol (FTP) fue desarrollado para hacer eficiente la transferencia de archivos entre ordenadores con diferentes sistemas.

FTP también manda y recibe la información en texto plano, por lo que también podemos usar Telnet (o Netcat) para comunicarnos con el servidor FTP y actuar como cliente FTP.

  1. Nos conectamos al servidor FTP usando Telnet. El servidor de FTP escucha en el puerto 21.
  2. Damos el nombre de usuario con USER frank
  3. Damos la contraseña con PASS D2xc9CgD.
  4. Como introdujimos datos correctos nos logueamos.

El comando STAT puede darnos información extra. El comando SYST nos muestra el tipo de sistema del objetivo. El comando PASV cambia el modo a pasivo. Es imprescindible saber que hay dos modos para FTP:

  • Active: La información se manda a través de un canal separado que se origina desde el puerto 20 del servidor.
  • Passive: La información se manda por un canal separado que se origina desde el puerto por encima del 1023 del cliente.

El comando TYPE A cambia el modo de transferencia de archivos a ASCII mientras que TYPE I lo cambia a binario. Sin embargo, no podemos transferir archivos usando clientes simples como Telnet porque FTP crea un canal nuevo para ello.

shell
pentester@TryHackMe$ telnet 10.80.185.10 21
Trying 10.80.185.10...
Connected to 10.80.185.10.
Escape character is '^]'.
220 (vsFTPd 3.0.3)
USER frank
331 Please specify the password.
PASS D2xc9CgD
230 Login successful.
SYST
215 UNIX Type: L8
PASV
227 Entering Passive Mode (10,10,0,148,78,223).
TYPE A
200 Switching to ASCII mode.
STAT          
211-FTP server status:
     Connected to ::ffff:10.10.0.1
     Logged in as frank
     TYPE: ASCII
     No session bandwidth limit
     Session timeout in seconds is 300
     Control connection is plain text
     Data connections will be plain text
     At session startup, client count was 1
     vsFTPd 3.0.3 - secure, fast, stable
211 End of status
QUIT
221 Goodbye.
Connection closed by foreign host.

La imagen de abajo muestra cómo una transferencia de archivos real tomaría lugar usando FTP.

File Transfer Protocol (FTP)

Debido a la complejidad de FTP para recibir archivos, vamos a usar un cliente FTP para hacer una transferencia real. Aquí podemos ver que los comandos cambian respecto a Telnet, pero el principio detrás de ellos es el mismo.

shell
pentester@TryHackMe$ ftp 10.80.185.10
Connected to 10.80.185.10.
220 (vsFTPd 3.0.3)
Name: frank
331 Please specify the password.
Password: D2xc9CgD
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,20,30,148,201,180).
150 Here comes the directory listing.
-rw-rw-r--    1 1001     1001         4006 Sep 15 10:27 README.txt
226 Directory send OK.
ftp> ascii
200 Switching to ASCII mode.
ftp> get README.txt
local: README.txt remote: README.txt
227 Entering Passive Mode (10,10,0,148,125,55).
150 Opening BINARY mode data connection for README.txt (4006 bytes).
WARNING! 9 bare linefeeds received in ASCII mode
File may not have transferred correctly.
226 Transfer complete.
4006 bytes received in 0.000269 secs (14892.19 Kbytes/sec)
ftp> exit
221 Goodbye.

Hay varios software de servidor FTP que puedes seleccionar como:

Para clientes FTP, además de la consola FTP del cliente normalmente encontrada en sistemas Linux, puedes usar clientes FTP con GUI como FileZilla. Algunos navegadores web también lo soportan.

Gracias a que FTP manda las credenciales de login junto con los comandos y archivos en texto plano, el tráfico FTP puede ser fácil de interceptar para los atacantes.