Curso de Linux para Hackers - FTP: Protocolo y explotación. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Bienvenidos a este capítulo del Curso de Linux para Hackers – FTP: Protocolo y explotación. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

Índice

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Lo que aprenderás en este artículo

  1. Conceptos básicos del Protocolo FTP: Qué es, cómo funciona y su historia como protocolo de transferencia de archivos.
  2. Funcionamiento del FTP: La comunicación a través de puertos específicos, las conexiones de control y de datos, y los modos activo y pasivo.
  3. Ventajas y desventajas del FTP: Pros y contras, incluyendo sus problemas de seguridad y opciones para mejorar su uso.
  4. Uso del comando FTP en Linux: Cómo conectarse, iniciar sesión y transferir archivos mediante comandos FTP.
  5. Clientes FTP populares: Herramientas como FileZilla y cómo usarlas para gestionar archivos.
  6. Seguridad en FTP: Vulnerabilidades del FTP como sniffing, fuerza bruta y DoS, y cómo defenderse de estos ataques.
  7. Mejores prácticas de seguridad en FTP: Configuración de opciones seguras, migración a FTPS/SFTP y uso de autenticación multifactor.

FTP Protocolo de Transferencia de Archivos

FTP (File Transfer Protocol – Protocolo de transferencia de archivos). Como su nombre indica, se trata de un protocolo que permite transferir archivos directamente de un dispositivo a otro. Actualmente, es un protocolo que poco a poco va abandonándose, pero ha estado vigente más de 50 años.

El protocolo FTP se empezó a utilizar en abril de 1971, y terminó de definir su estructura en el 73, aunque durante las décadas de los 70 y los 80 del siglo pasado fue perfeccionándose. Este protocolo nació antes de que existieran Internet o el correo electrónico, ya que fue uno de los componentes básicos de ARPANET, que fue esa red primigenia que luego dio lugar a Internet.

FTP es un protocolo de Internet estándar proporcionado por TCP/IP que se utiliza para transmitir archivos de un host a otro. Se utiliza principalmente para transferir los archivos de páginas web desde su creador a la computadora que actúa como servidor para otras computadoras en Internet. También se utiliza para descargar archivos a la computadora desde otros servidores.

Este protocolo funciona entre computadoras que estén conectados a una red TCP, que significa Transmission Control Protocol o Protocolo de control de transmisión. Este protocolo TCP da soporte a muchas tecnologías, entre ellas a Internet. Para que te hagas a la idea, la familia de protocolos que forman Internet se llama TCP/IP.

El protocolo FTP funciona para compartir archivos entre equipos que estén conectados a Internet, y los archivos se comparten de forma directa y sin ningún intermediario.

Además de los servicios Web, otro servicio que se utiliza comúnmente por medio de Internet es el que permite a los usuarios transferir archivos. El Protocolo de Transferencia de Archivos (FTP, File Transfer Protocol) brinda un método sencillo para transferir archivos de una computadora a otra.

El protocolo FTP tal cual es un protocolo inseguro

Un host que ejecuta un software cliente FTP puede acceder a un servidor FTP para realizar diversas funciones de administración de archivos, entre ellas subir y descargar archivos. El servidor FTP permite a un cliente intercambiar archivos entre dispositivos.

Ya que su información no viaja cifrada. Sin embargo, en 2001 esto se solucionó con el protocolo FTPS, que le añade una capa SSH para hacerlo más seguro y privado.

El FTP es un protocolo muy útil para el envío de archivos, ya que te permite enviarlos de un equipo a otro a gran velocidad de transferencia, y no hay ningún tipo de límites de tamaño como puede pasar en la descarga directa. También suele utilizarse en contextos como la creación de webs, pudiendo enviar pro FTP los ficheros de una web al servidor donde están.

También permite a los clientes administrar archivos de manera remota enviando comandos de administración de archivos, como Eliminar o Cambiar nombre. Para lograr esto, el servicio FTP utiliza dos puertos para las comunicaciones entre el cliente y el servidor.

En el ejemplo de la figura se ilustra cómo funciona FTP. Para comenzar con una sesión FTP, se envían solicitudes de conexión de control al servidor mediante el puerto 21 TCP de destino. Cuando se abre la sesión, el servidor cambia al puerto 20 TCP para transferir los archivos de datos.

El software cliente FTP viene incorporado en los sistemas operativos y en la mayoría de los exploradores Web. Los clientes FTP independientes ofrecen muchas opciones en una interfaz fácil de usar basada en GUI.

De acuerdo con el comando enviado a través de la conexión de control, los datos pueden descargarse desde el servidor o subirse desde el cliente.

Cómo funciona el FTP

Aunque transferir archivos de un sistema a otro es muy simple y directo, a veces puede causar problemas. Por ejemplo, dos sistemas pueden tener diferentes convenciones de archivos.

Dos sistemas pueden tener diferentes formas de representar texto y datos. Dos sistemas pueden tener diferentes estructuras de directorios. El protocolo FTP supera estos problemas al establecer dos conexiones entre hosts. Una conexión se utiliza para la transferencia de datos y otra conexión se utiliza para la conexión de control.

El funcionamiento de este protocolo es bastante sencillo. Simplemente, un dispositivo A se conecta directamente a un dispositivo B, y podrá ver los archivos que tiene disponible para compartir. Al verlos, simplemente podrá descargarlos directamente en el equipo que se ha conectado al otro.

Esto quiere decir que un dispositivo tiene que estar configurado como servidor FTP, ese en el que se aloja el contenido, y luego te conectas a él como un cliente. En los dispositivos, los datos del protocolo FTP se envían a través de los puertos 20 y 21, que son los que están asignados en todos los equipos para llevar a cabo sus transferencias de archivos.

La figura anterior muestra el modelo básico del FTP. El cliente FTP tiene tres componentes: la interfaz de usuario, el proceso de control y el proceso de transferencia de datos. El servidor tiene dos componentes: el proceso de control del servidor y el proceso de transferencia de datos del servidor.

Aunque eso de tener un dispositivo como cliente y otro como servidor puede parecer complicado si no entiendes de estas cosas, afortunadamente hoy en día todo esto es sencillo. 

Sólo vas a tener que utilizar un programa que se encargue de todo, que son esos a los que se les llama clientes FTP. Muchos son gratis, y como usuarios sólo tendrás que establecer la dirección del servidor a la que te quieres conectar y listo. Además, suelen tener también versiones para crear el servidor.

Hay dos tipos de conexiones en FTP:

  • Conexión de control: La conexión de control utiliza reglas de comunicación muy simples. A través de la conexión de control, podemos transferir una línea de comando o una línea de respuesta a la vez. La conexión de control se realiza entre los procesos de control. La conexión de control permanece conectada durante toda la sesión FTP interactiva.
  • Conexión de datos: La conexión de datos utiliza reglas muy complejas, ya que los tipos de datos pueden variar. La conexión de datos se realiza entre procesos de transferencia de datos. La conexión de datos se abre cuando llega un comando para transferir los archivos y se cierra cuando se transfiere el archivo.

Ventajas del FTP:

  • Velocidad: una de las mayores ventajas del FTP es la velocidad. El FTP es una de las formas más rápidas de transferir archivos de un equipo a otro.
  • Eficiente: Es más eficiente ya que no necesitamos completar todas las operaciones para obtener el archivo completo.
  • Seguridad: Para acceder al servidor FTP, necesitamos iniciar sesión con el usuario y contraseña, por lo que podemos decir que el FTP es más seguro.
  • Movimiento de ida y vuelta: FTP nos permite transferir archivos de ida y vuelta. Supongamos que usted es el gerente de una empresa, envía información a todos los empleados y todos ellos envían información de vuelta al mismo servidor.

Desventajas del FTP:

  • El requisito estándar de la industria es que todas las transmisiones FTP deben estar cifradas. Sin embargo, no todos los proveedores de FTP son iguales y no todos ofrecen cifrado. Por lo tanto, tendremos que buscar proveedores de FTP que ofrezcan cifrado.
  • El FTP sirve para dos operaciones, es decir, para enviar y recibir archivos grandes en una red. Sin embargo, el límite de tamaño del archivo que se puede enviar es de 2 GB. Tampoco permite ejecutar transferencias simultáneas a varios receptores.
  • Las contraseñas y el contenido de los archivos se envían en texto claro, lo que permite escuchas no deseadas. Por lo tanto, es muy posible que los atacantes puedan llevar a cabo el ataque de fuerza bruta intentando adivinar la contraseña del FTP.
  • No es compatible con todos los sistemas.

Sintaxis del comando ftp de Linux

El ftpcomando de Linux utiliza la siguiente sintaxis básica:

ftp [options] [IP]

Esta IPes la dirección IP del sistema al que se está conectando.

Las opciones del comando FTP

Opciones del comando FTPDescripción
-4Utilice únicamente IPv4.
-6Utilice únicamente IPv6.
-eDesactiva la edición de comandos y el soporte del historial.
-pUtiliza el modo pasivo para las transferencias de datos, lo que le permite utilizar FTP a pesar de que exista un firewall que pueda impedirlo.
-iDesactiva la solicitud interactiva durante múltiples transferencias de archivos.
-nDesactiva los intentos de inicio de sesión automático en la conexión inicial.
-gDesactiva la codificación de nombres de archivos.
-vHabilita la salida detallada.
-dHabilita la depuración.

El comando FTP lo conecta a un sistema remoto e inicia la interfaz FTP. La interfaz FTP utiliza los siguientes comandos para administrar y transferir archivos al sistema remoto:

Tabla FTP

DominioDescripción
!Escápese temporalmente al shell local.
$Ejecutar una macro.
?Mostrar texto de ayuda.
accountProporcione una contraseña para el sistema remoto.
appendAgregar un archivo local a un archivo en el sistema remoto.
asciiEstablezca el tipo de transferencia de archivos en red ASCII (tipo predeterminado).
bellHabilite una alerta de sonido después de completar cada transferencia.
binaryEstablezca el tipo de transferencia de archivos en transferencia de imagen binaria.
byeSalir de la interfaz FTP.
caseAlternar la sensibilidad entre mayúsculas y minúsculas al asignar ID durante el mgetcomando.
cdCambiar el directorio de trabajo actual en el sistema remoto.
cdupCambiar al padre del directorio de trabajo actual en el sistema remoto.
chmodCambiar los permisos de archivos en el sistema remoto.
closeSalir de la interfaz FTP.
crActiva o desactiva la eliminación del retorno de carro en las transferencias de archivos ASCII .
debugActivar o desactivar el modo de depuración.
deleteEliminar un archivo del sistema remoto.
dirEnumere el contenido de un directorio en el sistema remoto.
disconnectTerminar la sesión FTP.
exitFinalice la sesión FTP y salga de la interfaz FTP.
formEstablecer el formato de transferencia de archivos.
getTransferir un archivo del sistema remoto a la máquina local.
globActiva o desactiva la expansión de caracteres meta de los nombres de archivos locales.
hashActiva o desactiva la visualización del signo almohadilla (» # «) para cada bloque de datos transferido.
helpMostrar texto de ayuda.
idleEstablecer un temporizador de inactividad para el sistema remoto.
imageEstablezca el tipo de transferencia de archivos en transferencia de imagen binaria.
ipanyPermitir cualquier tipo de dirección IP.
ipv4Permitir únicamente direcciones IPv4 .
ipv6Permitir únicamente direcciones IPv6.
lcdCambiar el directorio de trabajo actual en la máquina local.
lsEnumere el contenido de un directorio en el sistema remoto.
macdefDefinir una macro.
mdeleteEliminar varios archivos en el sistema remoto.
mdirEnumere el contenido de varios directorios en el sistema remoto.
mgetTransferir varios archivos desde el sistema remoto a la máquina local.
mkdirCrea un directorio en el sistema remoto.
mlsEnumere el contenido de varios directorios en el sistema remoto.
modeEstablecer el modo de transferencia de archivos.
modtimeMostrar la última vez que se modificó un archivo en el sistema remoto.
mputTransferir varios archivos desde la máquina local al sistema remoto.
newerTransfiera un archivo del sistema remoto a la máquina local solo si la hora de modificación del archivo remoto es más reciente que la del archivo local (si no existe una versión local del archivo, el archivo remoto se considera automáticamente más nuevo).
nlistEnumere el contenido de un directorio en el sistema remoto.
nmapEstablecer plantillas para la asignación de nombres de archivos predeterminados.
ntransEstablecer la tabla de traducción para la asignación de nombre de archivo predeterminado.
openEstablecer una conexión con un servidor FTP.
passiveHabilitar el modo de transferencia pasiva.
promptForzar indicaciones interactivas al transferir varios archivos.
proxyEjecutar comando en una conexión alternativa (proxy).
putTransferir un archivo desde la máquina local al sistema remoto.
pwdMuestra el directorio de trabajo actual en el sistema remoto.
qcActiva o desactiva la visualización de un carácter de control (» ? «) en la salida de comandos de tipo ASCII.
quitFinalice la sesión FTP y salga de la interfaz FTP.
quoteEspecifique un comando como argumento y envíelo al servidor FTP.
recvTransferir un archivo del sistema remoto a la máquina local.
regetTransfiere un archivo del sistema remoto a la máquina local si el archivo local es más pequeño que el archivo remoto. La transferencia comienza al final del archivo local. Si no hay una versión local del archivo, el comando no se ejecuta.
renameCambiar el nombre de un archivo en el sistema remoto.
resetBorrar respuestas de comandos en cola.
restartReiniciar un comando de transferencia de archivos en un marcador establecido.
rhelpMostrar texto de ayuda para el sistema remoto.
rmdirEliminar un directorio en el sistema remoto.
rstatusMostrar el estado del sistema remoto.
runiqueAlternar el almacenamiento de archivos en la máquina local con nombres de archivo únicos.
sendTransferir un archivo desde la máquina local al sistema remoto.
sendportAlternar el uso de comandos PORT.
siteEspecifique un comando como argumento y envíelo al servidor FTP como un comando SITE.
sizeMostrar el tamaño de un archivo en el sistema remoto.
statusMuestra el estado de la interfaz FTP.
structEstablecer la estructura de transferencia de archivos.
suniqueAlternar el almacenamiento de archivos en el sistema remoto con nombres de archivo únicos.
systemMostrar el sistema operativo en el sistema remoto.
tenexConfigure el tipo de transferencia de archivos para permitir la conexión a máquinas TENEX.
tickActiva o desactiva la impresión del contador de bytes durante las transferencias.
traceActivar o desactivar el seguimiento de paquetes.
typeEstablecer un tipo de transferencia de archivos.
umaskEstablecer una máscara de permisos predeterminada para la máquina local.
userProporcione el nombre de usuario y la contraseña para el servidor FTP remoto.
verboseActivar o desactivar salida detallada.

Cómo utilizar el comando ftp en Linux

El ftpcomando conecta un sistema informático a un servidor remoto mediante el protocolo FTP. Una vez conectado, también permite a los usuarios transferir archivos entre la máquina local y el sistema remoto, y administrar archivos y directorios en el sistema remoto.

Establecer una conexión FTP

Para establecer una conexión FTP a un sistema remoto, utilice el ftpcomando con la dirección IP del sistema remoto:

ftp [IP]

Por ejemplo, conectarse a un servidor remoto con la dirección IP 192.168.100.9 :

ftp 192.168.137.128

Inicie sesión en el servidor FTP

Una vez que inicie una conexión a un sistema remoto mediante FTP, la interfaz FTP le solicitará que ingrese un nombre de usuario y una contraseña para iniciar sesión. Al ingresar las credenciales requeridas, iniciará sesión y se iniciará la interfaz FTP. En este ejemplo, iniciaremos sesión como usuario.

Clientes FTP

El cliente FTP es un programa que implementa un protocolo de transferencia de archivos que le permite transferir archivos entre dos hosts en Internet. Permite a un usuario conectarse a un host remoto y cargar o descargar archivos.

Tiene un conjunto de comandos que podemos usar para conectarnos a un host, transferir los archivos entre usted y su host y cerrar la conexión.

El programa FTP también está disponible como componente integrado en un navegador web. Este cliente FTP basado en interfaz gráfica de usuario facilita enormemente la transferencia de archivos y no requiere recordar los comandos FTP.

FileZilla

Posiblemente, el cliente FTP más popular entre la mayoría de usuarios sea FileZilla de Mozilla, los mismos creadores que Firefox. La mayoría de clientes son parecidos, y para conectarte necesitas tener la dirección IP y el puerto del servidor (1), saber el modo de conexión (2), y el usuario y contraseña (3) para acceder a ese servidor FTP.

Porque claro, estos servidores no suelen estar abiertos para que cualquiera entre y tome los archivos que quiera. Necesitarás tener una cuenta de acceso para conectarte. Esto, en parte, ha hecho que otras alternativas más sencillas de cara a los usuarios como las nubes o el P2P se acabasen imponiendo a la hora de compartir archivos.

Ataque y Defensa del Protocolo FTP

El Protocolo de Transferencia de Archivos (FTP) es uno de los métodos más antiguos y utilizados para transferir archivos entre sistemas a través de una red. Aunque sigue siendo popular en muchos entornos, FTP presenta varias vulnerabilidades que pueden ser explotadas por atacantes. En este artículo, exploraremos los tipos de ataques comunes contra FTP y las estrategias para defenderse contra ellos.

FTP es un protocolo de red de la capa de aplicación utilizado para transferir archivos entre un cliente y un servidor. Opera sobre el protocolo TCP y utiliza dos canales principales: uno para comandos y otro para datos. El canal de comandos utiliza el puerto 21, mientras que el canal de datos generalmente utiliza el puerto 20 o un puerto asignado dinámicamente.

FTP tiene dos modos de operación principales:

  1. Modo Activo: El cliente abre un puerto y espera que el servidor se conecte a él para transferir datos.
  2. Modo Pasivo: El servidor abre un puerto para la transferencia de datos y espera que el cliente se conecte a él. Este modo es más seguro en entornos de red con cortafuegos.

1. Robo de Credenciales (Sniffing de Contraseñas)

Descripción: FTP transmite credenciales (nombre de usuario y contraseña) en texto plano. Esto permite a los atacantes interceptar las comunicaciones y capturar credenciales sensibles mediante técnicas de sniffing de red.

Métodos de Ejecución:

  • Sniffing: Un atacante que tiene acceso a la red puede utilizar herramientas de captura de paquetes como Wireshark para interceptar y leer las credenciales transmitidas entre el cliente y el servidor FTP.

Consecuencias:

  • Acceso No Autorizado: Con las credenciales capturadas, el atacante puede obtener acceso no autorizado a los archivos y directorios del servidor FTP.
  • Compromiso de Otros Servicios: Si las credenciales se reutilizan en otros servicios, el atacante podría comprometer múltiples sistemas.

Defensa Contra Sniffing de Contraseñas:

  • Uso de FTPS o SFTP: Implementar FTPS (FTP sobre SSL/TLS) o SFTP (FTP sobre SSH) para cifrar las comunicaciones y proteger las credenciales.
  • Red Segura: Limitar el acceso a la red donde se ejecuta FTP para reducir las posibilidades de que un atacante pueda realizar sniffing.

2. Ataques de Fuerza Bruta

Descripción: Los ataques de fuerza bruta consisten en intentar adivinar las credenciales del FTP mediante la automatización de intentos de inicio de sesión con múltiples combinaciones de nombres de usuario y contraseñas.

Métodos de Ejecución:

  • Automatización: Los atacantes utilizan herramientas automatizadas como Hydra o Medusa para realizar intentos masivos de inicio de sesión hasta encontrar la combinación correcta de credenciales.

Consecuencias:

  • Acceso No Autorizado: Una vez que el atacante adivina las credenciales correctas, puede obtener acceso total a los archivos y directorios del servidor FTP.
  • Compromiso Completo del Sistema: Si las credenciales adivinadas pertenecen a un usuario con privilegios elevados, el atacante podría comprometer completamente el servidor.

Defensa Contra Fuerza Bruta:

  • Limitación de Intentos de Inicio de Sesión: Configurar el servidor FTP para bloquear temporalmente o permanentemente la cuenta después de un número determinado de intentos fallidos de inicio de sesión.
  • Autenticación Fuerte: Utilizar contraseñas complejas y únicas, y, si es posible, implementar autenticación multifactor (MFA) para agregar una capa adicional de seguridad.

3. Ataques de Enumeración de Usuarios

Descripción: La enumeración de usuarios es un proceso mediante el cual un atacante intenta descubrir nombres de usuario válidos en un servidor FTP, generalmente mediante respuestas de error específicas que indican si un usuario existe o no.

Métodos de Ejecución:

  • Respuestas Diferenciadas: Al intentar iniciar sesión con un nombre de usuario incorrecto, el servidor FTP puede devolver diferentes mensajes de error para usuarios existentes y no existentes, lo que permite al atacante enumerar usuarios válidos.

Consecuencias:

  • Facilitación de Ataques de Fuerza Bruta: Con una lista de usuarios válidos, un atacante puede enfocar sus ataques de fuerza bruta, aumentando la probabilidad de éxito.
  • Compromiso de la Seguridad: La enumeración de usuarios puede ser el primer paso en un ataque más grande, como la obtención de acceso no autorizado o la escalada de privilegios.

Defensa Contra la Enumeración de Usuarios:

  • Respuestas Uniformes: Configurar el servidor FTP para devolver mensajes de error genéricos que no indiquen si un nombre de usuario es válido o no.
  • Monitoreo y Alerta: Implementar sistemas de monitoreo que detecten patrones de enumeración de usuarios y alerten a los administradores de red.

4. Ataques de Explotación de Vulnerabilidades

Descripción: Las implementaciones de servidores FTP pueden contener vulnerabilidades que los atacantes pueden explotar para obtener acceso no autorizado, ejecutar código arbitrario o provocar condiciones de denegación de servicio.

Métodos de Ejecución:

  • Explotación de Vulnerabilidades: Los atacantes buscan vulnerabilidades conocidas en el software del servidor FTP (como desbordamientos de búfer o errores de desreferenciación de punteros nulos) y utilizan exploits para comprometer el servidor.

Consecuencias:

  • Compromiso Total del Servidor: Si se explota una vulnerabilidad crítica, el atacante puede obtener control total sobre el servidor FTP.
  • Robo o Modificación de Archivos: El atacante puede acceder a archivos sensibles, modificarlos o distribuir malware a través del servidor FTP.

Defensa Contra la Explotación de Vulnerabilidades:

  • Actualización y Parcheo Regular: Mantener el software del servidor FTP actualizado con los últimos parches de seguridad.
  • Evaluación de Vulnerabilidades: Realizar evaluaciones de seguridad regulares para identificar y corregir vulnerabilidades antes de que puedan ser explotadas.

5. Ataques de Denegación de Servicio (DoS)

Descripción: Un ataque de denegación de servicio (DoS) contra un servidor FTP busca sobrecargar el servidor con solicitudes maliciosas o manipular el protocolo de tal manera que el servidor deje de responder o se vuelva inaccesible.

Métodos de Ejecución:

  • Inundación de Conexiones: El atacante envía un gran número de solicitudes de conexión al servidor FTP, agotando los recursos y provocando una caída del servicio.
  • Explotación de Vulnerabilidades: Utilizar vulnerabilidades en la implementación del servidor FTP para bloquear el servicio o hacer que se caiga.

Consecuencias:

  • Interrupción del Servicio: Los usuarios legítimos no pueden acceder al servidor FTP, lo que puede causar pérdida de productividad y daños a la reputación.
  • Pérdida de Datos: Si el servidor FTP se cae de manera inesperada, pueden ocurrir pérdidas de datos o corrupción de archivos.

Defensa Contra DoS en FTP:

  • Limitar el Número de Conexiones: Configurar el servidor FTP para limitar el número de conexiones simultáneas por usuario o dirección IP.
  • Implementación de Firewalls y Sistemas de Detección de Intrusos (IDS): Utilizar firewalls para filtrar el tráfico malicioso y sistemas IDS para detectar y bloquear intentos de ataque DoS.

Mejores Prácticas para Asegurar FTP

  1. Migrar a Protocolos Más Seguros: Considerar la migración a protocolos de transferencia de archivos más seguros como SFTP (FTP sobre SSH) o FTPS (FTP sobre SSL/TLS), que cifran las credenciales y los datos transferidos. Cifrar las comunicaciones protege contra el sniffing de credenciales y otros ataques basados en la intercepción de datos.
  2. Implementación de Listas de Control de Acceso (ACL): Configurar ACL para controlar qué usuarios pueden acceder al servidor FTP y qué acciones pueden realizar (leer, escribir, eliminar). Restringir el acceso solo a usuarios autorizados y limitar los permisos de escritura a solo aquellos que lo necesiten.
  3. Registro y Monitoreo: Implementar un sistema de registro que capture todas las actividades en el servidor FTP, incluidos los intentos de inicio de sesión, transferencias de archivos y errores. Utilizar soluciones de monitoreo como Splunk o ELK Stack para analizar los registros en busca de actividades sospechosas y generar alertas en tiempo real.
  4. Implementación de Autenticación Multifactor (MFA): Añadir MFA a la autenticación FTP para requerir no solo una contraseña, sino también un segundo factor de autenticación, como un token o un código enviado al móvil. MFA añade una capa adicional de seguridad que protege contra ataques de fuerza bruta y robo de credenciales.

Explotación de FTP (Puerto 21)

Comencemos explotando el puerto 21 ejecutando FTP con Hydra y dos listas de palabras para la operación, tenemos nombres de usuario y contraseñas predeterminados. 

Explotación del puerto 21: FTP con Hydra

Ya tenemos todos nuestros puertos y servicios enumerados. Comencemos por explotar el puerto 21 ejecutando FTP. Usaremos Hydra para esto. Las dos listas de palabras para esta operación tendrán nombres de inicio de sesión y contraseñas predeterminados.

Hydra nos muestra que tenemos 4 ID de inicio de sesión y contraseñas válidas.

sudo hydra -L user.txt -P pass.txt 192.168.0.121 ftp

Explotar FTP a través del framework Metasploit.

msfconsole 
Search vsftpd
Use exploit/unix/ftp/vsftpd_234_backdoor 
Set RHOST 192.168.0.121
Run 

 ¡Felicitaciones! Hemos obtenido acceso root mediante exploits FTP.

Resumen detallado del artículo

1. Conceptos básicos del Protocolo FTP

  • ¿Qué es FTP?: Un protocolo de red que permite la transferencia de archivos de un host a otro sobre una conexión TCP, utilizado comúnmente en la gestión de servidores web.
  • Historia: FTP se implementó en los años 70, inicialmente para la red ARPANET, y ha evolucionado desde entonces.
  • Inseguridad inherente: Transfiere datos y credenciales sin cifrado, exponiendo potencialmente la información sensible. FTPS (FTP sobre SSL) se desarrolló en 2001 para añadir cifrado.

2. Funcionamiento del FTP

  • Transferencia a través de puertos 20 y 21: FTP utiliza el puerto 21 para el control y el puerto 20 para datos.
  • Tipos de conexión:
    • Conexión de control: Establece y mantiene la sesión de comunicación.
    • Conexión de datos: Abre una conexión temporal cada vez que se envían archivos.
  • Modos de operación:
    • Modo activo: El cliente abre un puerto y el servidor establece la conexión para enviar datos.
    • Modo pasivo: El servidor abre un puerto, y el cliente lo usa para conectarse, útil en redes con firewall.

3. Ventajas y desventajas del FTP

  • Ventajas:
    • Alta velocidad de transferencia de archivos.
    • Control de archivos a través de comandos como eliminación y cambio de nombre.
  • Desventajas:
    • Inseguridad: No cifra datos ni credenciales, haciéndolo vulnerable a ataques de interceptación.
    • Compatibilidad limitada: Algunos sistemas y configuraciones de red pueden no ser compatibles.

4. Uso del comando FTP en Linux

  • Sintaxis básica: ftp [opciones] [IP]
  • Opciones útiles:
    • -p: Activa el modo pasivo, útil si hay un firewall.
    • -v: Activa la salida detallada.
    • -d: Activa el modo de depuración.
  • Comandos FTP en la interfaz:
    • get y put: Transferir archivos entre cliente y servidor.
    • ls y dir: Listar archivos en el servidor.
    • cd: Cambiar de directorio en el servidor.
    • bye: Cerrar sesión y salir.

5. Clientes FTP populares

  • FileZilla: Cliente FTP gratuito y fácil de usar con soporte para FTPS.
  • Uso de clientes FTP: Simplifican la transferencia de archivos y gestión de servidores mediante interfaces gráficas y autenticación integrada.

6. Seguridad en FTP: Vulnerabilidades y ataques comunes

  • Robo de credenciales (Sniffing de contraseñas):
    • Descripción: FTP transmite credenciales en texto plano, lo que permite interceptarlas fácilmente.
    • Defensa: Usar FTPS o SFTP para cifrar la conexión.
  • Ataques de fuerza bruta:
    • Descripción: Los atacantes prueban múltiples combinaciones de usuario/contraseña hasta acceder.
    • Defensa: Limitar intentos fallidos y usar autenticación fuerte.
  • Enumeración de usuarios:
    • Descripción: Descubrir usuarios válidos mediante mensajes de error diferenciados.
    • Defensa: Usar respuestas genéricas a errores de autenticación.
  • Explotación de vulnerabilidades:
    • Descripción: Fallos en implementaciones de servidores FTP pueden llevar a compromisos.
    • Defensa: Mantener los servidores actualizados y realizar evaluaciones de seguridad.
  • Ataques DoS:
    • Descripción: Sobrecargar el servidor FTP con solicitudes para interrumpir su funcionamiento.
    • Defensa: Limitar conexiones simultáneas y usar firewalls e IDS.

7. Mejores prácticas de seguridad en FTP

  • Migrar a FTPS o SFTP: Proporcionan cifrado y son más seguros que FTP.
  • Listas de control de acceso (ACL): Permitir solo a usuarios autorizados y limitar sus permisos.
  • Registro y monitoreo: Registrar actividad para identificar y responder a comportamientos sospechosos.
  • Autenticación multifactor (MFA): Requiere un segundo factor de autenticación para mejorar la seguridad.
  • Exploración del puerto 21 con Hydra y Metasploit:
    • Hydra: Permite ataques de fuerza bruta para encontrar credenciales válidas.
    • Metasploit: Herramienta para explotar vulnerabilidades y realizar auditorías de seguridad.

Conclusión

FTP, uno de los protocolos de transferencia de archivos más antiguos, permite la comunicación eficiente entre dispositivos en redes TCP/IP, aunque su falta de cifrado lo hace vulnerable a ataques. Para mitigar riesgos, es esencial migrar a FTPS o SFTP cuando sea posible y aplicar mejores prácticas de seguridad como autenticación multifactor, monitoreo de actividades y uso de listas de control de acceso. Siguiendo estas prácticas, es posible aprovechar las capacidades de FTP en entornos seguros.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

Preguntas sobre el Protocolo FTP y su Seguridad

  1. ¿Qué es el protocolo FTP y cuál fue su propósito original?
  2. ¿Por qué el protocolo FTP se considera inseguro para la transferencia de archivos?
  3. ¿Cuál es la diferencia entre FTP y FTPS?
  4. ¿Qué es un cliente FTP y cómo funciona en una transferencia de archivos?
  5. ¿Qué son las conexiones de control y de datos en FTP y cómo se diferencian?
  6. ¿Cuáles son las principales ventajas del uso de FTP frente a otros métodos de transferencia?
  7. ¿Qué tipo de ataques son comunes en servidores FTP y cómo funcionan los ataques de fuerza bruta en este contexto?
  8. ¿Cómo protege el uso de FTPS o SFTP frente a ataques de sniffing?
  9. ¿Cuál es la función del puerto 21 en FTP y por qué algunos servidores optan por otros puertos?
  10. ¿Qué prácticas de seguridad pueden implementarse en un servidor FTP para evitar ataques de denegación de servicio (DoS)?

Ejercicios sobre FTP y Seguridad

  1. Conectar a un servidor FTP usando un cliente FTP básico en Linux
    • Establece una conexión con un servidor FTP y explora los comandos básicos como ls, get, put, mget y mput.
  2. Transferir archivos entre un sistema local y remoto
    • Con un cliente FTP, transfiere un archivo desde tu sistema local a un servidor FTP y verifica que se haya almacenado correctamente en el servidor.
  3. Cambiar el tipo de transferencia de archivos entre ASCII y binario
    • Usa los comandos ascii y binary para cambiar el modo de transferencia en FTP y transfiere archivos de diferentes tipos. Verifica las diferencias en los resultados.
  4. Configurar un servidor FTP en modo pasivo y probar la conexión
    • Configura un servidor FTP para que acepte conexiones pasivas, y usa un cliente FTP para conectarte a él a través de una red protegida con firewall.
  5. Usar un cliente FTP con modo seguro (FTPS)
    • Configura un cliente FTPS y conéctate a un servidor FTP que acepte conexiones cifradas. Verifica que las credenciales y los datos están cifrados en tránsito.
  6. Ejecutar ataques de fuerza bruta simulados en un servidor FTP con Hydra
    • Usa Hydra para realizar una prueba de fuerza bruta simulada contra un servidor FTP (en un entorno controlado), y observa cómo se registran los intentos fallidos en los registros del servidor.
  7. Establecer restricciones de acceso basadas en IP en un servidor FTP
    • Configura un servidor FTP para permitir solo conexiones de un conjunto específico de IPs y prueba el acceso desde diferentes direcciones.
  8. Configurar autenticación MFA en un servidor FTPS
    • Configura una autenticación de múltiples factores (MFA) en un servidor FTPS y verifica cómo añade una capa adicional de seguridad al proceso de autenticación.
  9. Revisar registros de actividad de un servidor FTP
    • Explora los registros del servidor FTP y analiza los intentos de acceso para identificar posibles intentos de ataque.
  10. Mitigar ataques de denegación de servicio en un servidor FTP
    • Configura límites en el número de conexiones simultáneas y establece un firewall para filtrar el tráfico malicioso en el puerto 21 de un servidor FTP.

Respuestas detalladas a las preguntas sobre el Protocolo FTP

  1. ¿Qué es FTP y cuál fue su propósito original?
    FTP (File Transfer Protocol) es un protocolo de red que permite la transferencia de archivos entre sistemas a través de redes TCP/IP. Fue diseñado originalmente para facilitar la transferencia de archivos en redes primitivas como ARPANET y luego se convirtió en un componente fundamental de Internet.
  2. ¿Por qué se considera inseguro?
    FTP transmite datos, incluyendo nombres de usuario y contraseñas, en texto plano, lo cual permite a atacantes interceptar esta información a través de técnicas de sniffing. Esto hace que FTP sea vulnerable a ataques de escucha y de robo de credenciales.
  3. ¿Diferencia entre FTP y FTPS?
    FTPS es una versión segura de FTP que utiliza el cifrado SSL/TLS para proteger los datos en tránsito. A diferencia de FTP, FTPS cifra tanto las credenciales de inicio de sesión como los archivos transferidos, ofreciendo una capa de seguridad adicional.
  4. ¿Qué es un cliente FTP y cómo funciona en la transferencia de archivos?
    Un cliente FTP es un software que permite al usuario conectarse a un servidor FTP para cargar o descargar archivos. El cliente se conecta al servidor, inicia sesión con un nombre de usuario y contraseña y ejecuta comandos como get y put para transferir archivos.
  5. Conexiones de control y de datos en FTP
    La conexión de control, en el puerto 21, se utiliza para enviar comandos y recibir respuestas. La conexión de datos, en el puerto 20, se abre solo durante la transferencia de archivos y se cierra una vez completada la transferencia.
  6. Ventajas de FTP
    FTP ofrece velocidad y eficiencia en la transferencia de archivos grandes, permite transferencias bidireccionales y brinda una interfaz de administración de archivos remotos mediante comandos como eliminar, renombrar y mover archivos.
  7. Ataques comunes y fuerza bruta en FTP
    En servidores FTP, los ataques comunes incluyen sniffing, fuerza bruta y DoS. En un ataque de fuerza bruta, los atacantes prueban múltiples combinaciones de credenciales hasta encontrar una correcta, ganando acceso no autorizado al servidor.
  8. Protección de FTPS y SFTP frente al sniffing
    FTPS y SFTP utilizan cifrado SSL/TLS y SSH, respectivamente, lo que protege las credenciales y el contenido de los archivos durante la transferencia, impidiendo que los atacantes puedan leer los datos interceptados.
  9. Función del puerto 21
    El puerto 21 es el puerto estándar para la conexión de control en FTP, donde se intercambian los comandos y respuestas. Sin embargo, algunos servidores usan otros puertos para evitar escaneos y ataques automatizados.
  10. Prácticas de defensa contra DoS en FTP
    Para mitigar ataques de DoS, es aconsejable limitar el número de conexiones simultáneas por usuario o IP y utilizar firewalls para bloquear solicitudes sospechosas en el puerto 21.

Respuestas detalladas a los ejercicios sobre FTP

  1. Conectar a un servidor FTP usando el comando ftp en Linux ftp 192.168.137.128 Al conectarse, inicia sesión con un nombre de usuario y contraseña válidos.
  2. Transferencia de archivos entre sistema local y remoto
    • Usa el comando put para cargar un archivo al servidor: put archivo_local.txt
    • Para descargarlo, usa: get archivo_remoto.txt
  3. Cambiar entre transferencias ASCII y binario
    • Configura el modo de transferencia con ascii o binary: ascii put archivo_texto.txt
  4. Configurar modo pasivo en un servidor FTP
    • Edita la configuración de FTP para activar el modo pasivo. Conéctate usando: ftp -p 192.168.137.128
  5. Usar FTPS para una conexión segura
    • Usa un cliente FTPS compatible (como FileZilla) y configura el puerto 21. La conexión estará cifrada, protegiendo credenciales y archivos.
  6. Ejecutar ataques de fuerza bruta con Hydra
    • Ejecuta Hydra (en un entorno de pruebas) para observar los intentos de fuerza bruta: sudo hydra -L user.txt -P pass.txt ftp://192.168.0.121
  7. Restricción de acceso en un servidor FTP
    • Configura el servidor para permitir acceso solo a una lista de IPs específicas en su archivo de configuración o mediante el firewall.
  8. Configurar autenticación MFA en FTPS
    • Activa MFA en el servidor, configurando un segundo factor que será solicitado junto a las credenciales de acceso.
  9. Revisión de registros de actividad en el servidor FTP
    • Usa cat o tail para revisar los registros en /var/log/vsftpd.log y observar intentos de conexión sospechosos.
  10. Defensa contra ataques DoS en FTP
    • Configura límites en la configuración de FTP para conexiones simultáneas: max_clients=10 max_per_ip=3

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!