📡 Protocolo TFTP (Trivial File Transfer Protocol)


📝 Introducción

¿Qué es TFTP?

TFTP (Trivial File Transfer Protocol) es un protocolo de transferencia de archivos extremadamente simple, diseñado para facilitar la transmisión de archivos en redes locales. Opera sobre UDP y es ampliamente utilizado en entornos donde se requiere una transferencia rápida y sin autenticación, como en el arranque de dispositivos de red, routers, switches y sistemas embebidos.

¿Para qué sirve?

  • Transferencia de archivos de configuración o firmware a dispositivos de red
  • Arranque de sistemas sin disco (PXE Boot)
  • Copia de archivos en entornos controlados donde la seguridad no es prioritaria

Contextos de uso en ciberseguridad

  • Post-explotación: Exfiltración o carga de archivos en sistemas comprometidos
  • Red Team: Transferencia rápida de payloads en redes internas
  • Análisis forense: Recuperación de archivos de dispositivos embebidos
  • Auditoría de red: Detección de servidores TFTP inseguros

⚙️ Funcionamiento y Sintaxis

Características principales

CaracterísticaDetalle
PuertoUDP 69
TransporteUDP (no TCP)
AutenticaciónNo soportada
DirecciónNo orientado a conexión
ComandosGET (lectura), PUT (escritura)
SeguridadNula (sin cifrado, sin autenticación)

Flujo básico de TFTP

sequenceDiagram
    participant Cliente
    participant Servidor

    Cliente->>Servidor: Solicitud de lectura/escritura (RRQ/WRQ)
    Servidor-->>Cliente: ACK o DATA
    Cliente->>Servidor: DATA o ACK
    loop Hasta completar archivo
        Servidor-->>Cliente: DATA
        Cliente->>Servidor: ACK
    end

Sintaxis básica de comandos

# Leer (descargar) un archivo desde el servidor TFTP
tftp <ip_servidor> -c get <archivo_remoto> <archivo_local>
 
# Escribir (subir) un archivo al servidor TFTP
tftp <ip_servidor> -c put <archivo_local> <archivo_remoto>

En sistemas modernos, el cliente suele ser tftp o atftp.


🛠️ Parámetros y Opciones Comunes

OpciónDescripciónEjemplo
-cEjecuta un comando (get/put)-c get archivo
-mEspecifica el modo (octet, netascii)-m octet
-vModo verbose (detallado)-v
-lEspecifica archivo local-l archivo_local
-rEspecifica archivo remoto-r archivo_remoto

Modos de transferencia

  • octet: Binario (recomendado para archivos no texto)
  • netascii: ASCII (para archivos de texto plano)

💻 Ejemplos Prácticos

Ejemplo 1: Descargar un archivo de configuración

# Descargar archivo config.txt desde un servidor TFTP
tftp 192.168.1.10 -c get config.txt
 
# O usando atftp
atftp --get --local-file=config.txt --remote-file=config.txt 192.168.1.10

Ejemplo 2: Subir un archivo malicioso (post-explotación)

# Subir un payload a un servidor TFTP vulnerable
tftp 192.168.1.10 -c put shell.sh
 
# O con atftp
atftp --put --local-file=shell.sh --remote-file=shell.sh 192.168.1.10

Ejemplo 3: Usar TFTP en scripts de pentesting

# Script para descargar múltiples archivos
for file in passwd shadow hosts; do
    tftp 192.168.1.10 -c get $file
done

⚠️ Riesgos y Consideraciones de Seguridad

TFTP es INSEGURO por diseño

  • Sin autenticación: Cualquiera puede leer o escribir archivos
  • Sin cifrado: Todo el tráfico es en texto claro
  • Sin control de acceso: Puede ser explotado para exfiltración o carga de malware
  • Uso limitado recomendado: Solo en redes internas y controladas

Ejemplo de ataque

flowchart TD
    A[Atacante] -- put shell.sh --> B[Servidor TFTP vulnerable]
    B -- shell.sh ejecutado --> C[Compromiso del sistema]

🛡️ Tips y Buenas Prácticas

Consejos para pentesters y administradores

  • Buscar servidores TFTP expuestos en auditorías de red (nmap -sU -p 69 --script tftp-enum)
  • Limitar el acceso a TFTP solo a hosts autorizados
  • Deshabilitar TFTP si no es estrictamente necesario
  • Monitorear logs de acceso a TFTP para detectar actividad sospechosa
  • Usar TFTP solo para archivos no sensibles y en entornos controlados

Errores comunes y soluciones

ErrorCausaSolución
Permission deniedEl servidor no permite escrituraRevisar permisos en el servidor
TimeoutFirewall bloquea UDP 69Abrir puerto o probar conectividad
File not foundArchivo no existe en el servidorVerificar nombre y ruta
Access violationRestricción de acceso en el servidorRevisar configuración del servidor

📊 Comparativa TFTP vs FTP vs SFTP

ProtocoloPuertoTransporteAutenticaciónCifradoUso típico
TFTP69/UDPUDPBoot, config, IoT
FTP21/TCPTCPTransferencia general
SFTP22/TCPTCP (SSH)Transferencia segura

🔍 Detección y Enumeración

Escaneo con Nmap

# Detectar servidores TFTP en la red
nmap -sU -p 69 --script tftp-enum 192.168.1.0/24

Enumeración manual

# Listar archivos conocidos (si el servidor lo permite)
tftp 192.168.1.10 -c get /etc/passwd
tftp 192.168.1.10 -c get /etc/shadow

🧠 Resumen

  • TFTP es un protocolo de transferencia de archivos simple y rápido, pero muy inseguro.
  • Es útil en redes internas, arranque PXE y dispositivos embebidos, pero no debe usarse en redes públicas.
  • Es un vector común de exfiltración y persistencia en post-explotación.

Recuerda

Si encuentras TFTP abierto en una auditoría, ¡es un objetivo prioritario para análisis y explotación!