Bienvenidos a esta Guía Rápida de Linux para Hackers #20 Comandos de Red y Protocolos. 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 de ARP (Address Resolution Protocol): Cómo funciona ARP para mapear direcciones IP a direcciones MAC en redes locales.
  2. Uso del comando arp en Linux: Cómo visualizar y modificar la tabla ARP del sistema.
  3. Seguridad y ataques relacionados con ARP: Cómo se llevan a cabo ataques como ARP Spoofing y las formas de mitigarlos.
  4. Protocolo Telnet: Conceptos básicos, vulnerabilidades y cómo proteger este protocolo en entornos modernos.
  5. Protocolo SSH (Secure Shell): Su funcionamiento, ventajas sobre Telnet, y medidas de seguridad avanzadas.
  6. FTP (File Transfer Protocol): Funcionamiento, ventajas, desventajas y medidas de seguridad para proteger servidores FTP.
  7. Explotación y defensa de protocolos: Técnicas de ataque, como fuerza bruta, sniffing y ataques MitM, y cómo prevenirlas.

Arp de Linux

El comando arp significa Protocolo de Resolución de Direcciones (Address Resolution Protocol). Nos permite ver o agregar contenido a la tabla ARP del kernel.

ARP es un protocolo de red fundamental en las redes TCP/IP, utilizado para mapear direcciones IP a direcciones físicas de hardware (MAC) en redes locales. Funciona en la capa de enlace de datos (Capa 2) del modelo OSI, y es esencial para la comunicación en redes Ethernet. Cuando un dispositivo necesita comunicarse con otro dispositivo en la misma red local, usa ARP para encontrar la dirección MAC asociada a la dirección IP de destino.

Normalmente, dentro de una red de área local (LAN), los dispositivos se comunican entre sí mediante dos tipos de direcciones; IP (Protocolo de Internet) para direccionamiento lógico y MAC (Control de acceso a medios) para direccionamiento físico.

Para facilitar la comunicación a través de la red física, se desarrolló el ARP (Protocolo de resolución de direcciones) para asignar las direcciones IP de capa tres de los dispositivos a sus direcciones MAC correspondientes de capa dos. 

De esta manera, el protocolo ARP permite que los dispositivos de una red se encuentren e identifiquen entre sí mediante sus direcciones IP y MAC.

El protocolo ARP permite

  • Hosts para comunicarse dentro de la misma red y adquirir la dirección de puerta de enlace a otras redes.
  • Enrutadores para comunicarse con hosts dentro de la misma LAN y para comunicarse con otros enrutadores.

El protocolo ARP utiliza dos tipos distintos de paquetes, denominados respectivamente solicitud ARP y respuesta ARP, junto con la tabla ARP mostrada anteriormente para almacenar la asignación entre las direcciones IP y MAC. D

ARP funciona transmitiendo un paquete de solicitud ARP que contiene la dirección IP del dispositivo de destino y luego recibe un paquete de respuesta ARP que contiene la dirección MAC de ese dispositivo.

Funcionamiento de ARP

Cuando un dispositivo necesita enviar un paquete a una dirección IP en su red local, pero no conoce la dirección MAC correspondiente, realiza una solicitud ARP (ARP Request). El proceso es el siguiente:

  1. Solicitud ARP: El dispositivo envía una solicitud ARP a toda la red (broadcast), preguntando “¿Quién tiene la dirección IP X.X.X.X?”.
  2. Respuesta ARP: El dispositivo con la IP buscada responde con un mensaje unicast que incluye su dirección MAC.
  3. Actualización de la tabla ARP: El dispositivo inicial guarda la dirección MAC en su tabla ARP, de modo que no necesita repetir el proceso hasta que la entrada ARP expire.

Comando arp en Linux

En Linux, el comando arp permite ver y manipular la tabla ARP del sistema. Es una herramienta esencial para administradores de redes y también puede ser útil en pruebas de seguridad para analizar y manipular las resoluciones de direcciones en una red local.

Sintaxis:

arp [opciones]

Mire la instantánea de arriba, el comando arp muestra la tabla ARP.

Opciones

  • -a mostrar (todos) los hosts en estilo alternativo (BSD)
  • -e mostrar (todos) los hosts en estilo predeterminado (Linux)
  • -s, –set establece una nueva entrada ARP
  • -d, –delete elimina una entrada especificada
  • -v, –verbose es verboso
  • -n, –numeric no resuelve nombres
  • -i, –device especifica la interfaz de red (p. ej. eth0)
  • -D, –use-device lee del dispositivo dado
  • -A, -p, –protocol especifica la familia de protocolos
  • -f, –file lee nuevas entradas del archivo o de /etc/ethersy entre 125

Ver la tabla ARP completa

arp -a

Esto mostrará todas las entradas de ARP en la tabla del sistema, incluyendo direcciones IP, MAC y la interfaz de red asociada.

Eliminar una entrada de la tabla ARP

arp -d 192.168.1.10 

Esto elimina la entrada de ARP para la IP 192.168.1.10. La próxima vez que se necesite esta dirección MAC, el sistema enviará otra solicitud ARP.

Agregar una entrada estática a la tabla ARP

arp -s 192.168.1.10 00:11:22:33:44:55 

Esto asocia permanentemente la IP 192.168.1.10 con la dirección MAC 00:11:22:33:44:55, útil para asegurar que un dispositivo específico siempre tenga la misma MAC en la red local.

El comando arp tiene más opciones que puedes explorar

 arp --help

También te recomendamos consultar las páginas man:

 man arp

Escaneo de red

ARP SCAN:
# nmap -n -sn -PR 10.5.23.0/24

Uso de ARP en Hacking Ético

Ataques ARP Spoofing y ARP Poisoning

En hacking ético, el protocolo ARP también puede ser utilizado para probar la seguridad de la red mediante ataques de ARP spoofing o ARP poisoning, en los cuales un atacante engaña a los dispositivos de la red para que asocien la dirección IP de otro dispositivo con la dirección MAC del atacante. Esto permite interceptar, redirigir o manipular el tráfico de red.

Herramientas como arpspoof o ettercap en Kali Linux facilitan este tipo de ataques y son utilizadas en pruebas de seguridad para evaluar la robustez de la red frente a vulnerabilidades en el protocolo ARP.

ARP Spoofing

Mediante la manipulación de direcciones IP y MAC, un ataque de suplantación de identidad ARP puede alterar la forma en que los dispositivos de su red se comunican entre sí. Esto permite a los atacantes interceptar el tráfico entre sus dispositivos y potencialmente robar información confidencial.

Si bien la suplantación de ARP es útil para los pentester a la hora de evaluar la situación de seguridad de una red, plantea un riesgo significativo para los blue team, ya que puede usarse como un trampolín para llevar a cabo otros tipos de ataques, como los de tipo man-in-the-middle. y ataques de denegación de servicio.

Conocer el protocolo ARP y sus limitaciones es fundamental para mantenerse a salvo de este ataque y sus posibles amenazas. Este artículo le proporcionará más detalles técnicos sobre este ataque, explorará algunas herramientas y técnicas de uso común y abordará algunas preguntas frecuentes.

Entonces, si está interesado en aprender más sobre qué es ARP Spoofing, asegúrese de leer el artículo completo.

Gratuitous ARP

Existe otro tipo de paquete ARP que debes conocer para comprender ciertos ataques de suplantación de identidad, llamado ARP gratuito. Se pueden distinguir dos tipos

  • Gratuitous ARP replies: Son respuestas ARP que se envían sin ninguna solicitud ARP correspondiente. Generalmente utilizado por un host para anunciar su presencia en la red.
  • Gratuitous ARP requests: son solicitudes ARP que se envían sin esperar ninguna respuesta ARP correspondiente. Normalmente se utiliza para detectar conflictos de direcciones IP y garantizar que nadie más en la misma red utilice la misma dirección IP que el remitente.

Dentro del paquete ARP gratuito, la IP de origen y destino es la IP del emisor (atacante) y la dirección MAC es la dirección de transmisión de la LAN (FF-FF-FF-FF-FF-FF).

El ARP gratuito puede resultar útil para mantener la coherencia de la caché ARP en los dispositivos, reducir la cantidad de solicitudes ARP y mejorar el rendimiento de la red. Sin embargo, normalmente se explotan para iniciar MiTM y ataques de suplantación de identidad dentro de una LAN.

¿Qué es la suplantación de ARP?

Ahora que hemos repasado los conceptos básicos de ARP, exploremos cómo se aprovecha para ataques de suplantación de identidad de ARP.

La suplantación de ARP (también conocida comúnmente como envenenamiento de ARP) es una forma de ataque en la que un atacante envía mensajes ARP falsificados a través de una red de área local. Esto da como resultado la vinculación de la dirección MAC de un atacante con la dirección IP de una computadora o servidor legítimo en la red. 

Al hacerlo, el atacante se situaría en medio de la comunicación entre nodos de la red, lo que le permitirá acceder a los datos transmitidos, modificar el tráfico o incluso realizar ataques de denegación de servicio.

La suplantación/envenenamiento de ARP altera la caché ARP de los dispositivos para redirigir el tráfico a su máquina. Por lo general, esto se puede lograr de dos maneras: envenenando los hosts directamente o la puerta de enlace de la red.

¿Cuál es el objetivo de un ataque de suplantación de identidad ARP?

El principal objetivo detrás de un ataque de suplantación de ARP es obtener acceso a las comunicaciones de la red y potencialmente montar otros ataques, incluidos, entre otros,

  • Denegación de servicio (DoS): el atacante puede inundar la red con paquetes ARP diseñados, interrumpiendo o deshabilitando la capacidad de comunicación de otros dispositivos.
  • Obtener acceso no autorizado a recursos: el atacante puede utilizar los privilegios del host falsificado para obtener acceso no autorizado a recursos de la red, como servidores, bases de datos, contenido restringido y aplicaciones.
  • Inyección de malware: el atacante, con suficientes privilegios, puede inyectar malware u otro software malicioso en la red, infectando potencialmente otros dispositivos de la red.
  • Reconocimiento de red: el atacante puede recopilar información sobre los dispositivos y la infraestructura de red en la red, potencialmente como precursor de un ataque más dirigido.

Man-in-the-middle attacks

  • Ataques de intermediario: el atacante puede interceptar y alterar el tráfico de red destinado a otros dispositivos en la red, actuando efectivamente como un intermediario entre los dispositivos. Esto conduce a varias amenazas potenciales, incluyendo
  • Escucha: el atacante puede utilizar la dirección IP falsificada para escuchar el tráfico de la red y recopilar información confidencial destinada a otros dispositivos.
  • Rastreo de credenciales: el atacante puede interceptar y capturar credenciales de inicio de sesión, contraseñas, cookies y otra información confidencial transmitida a través de la red.
  • Secuestro de sesión: el atacante puede interceptar, robar o predecir cookies e ID de sesión, apoderándose efectivamente de una sesión existente entre dos partes. 
  • Manipulación de datos: el atacante puede alterar o modificar el tráfico redirigido, lo que podría causar daños o interrupciones en los sistemas y aplicaciones.
  • Robo de identidad: el atacante puede utilizar la IP falsificada para actuar como una autoridad particular o un host dentro de la red.
  • Exfiltración de datos: el atacante puede utilizar la identidad falsificada para robar datos confidenciales de la red y exfiltrarlos a una ubicación externa.
  • Ataques de pharming: el atacante puede utilizar la dirección IP falsificada para lanzar un ataque de pharming, en el que los usuarios son redirigidos a un sitio web falso que parece legítimo, lo que podría conducir al robo de información.

Dependiendo de la postura de seguridad de la red, estos ataques no deberían ser sencillos según los estándares actuales. En un escenario normal, sería un desafío obtener acceso a ciertos recursos, pero con una combinación de experiencia y creatividad, muchas cosas pueden verse comprometidas.

¿Qué herramientas se utilizan para la suplantación de ARP?

A lo largo de los años, se han desarrollado varias herramientas con fines de investigación y para probar la postura de seguridad de una red. Aquí hay algunas herramientas que pueden facilitar un ataque de ARP Spoofing (tenga en cuenta que es su responsabilidad utilizar estas herramientas de manera legal y responsable): 

Arpspoof

Una herramienta del paquete Dsniff que se puede utilizar para enviar mensajes ARP falsificados en una LAN. Se puede utilizar para redirigir el tráfico o realizar ataques de intermediario. Está disponible en la distribución Kali Linux y se puede obtener instalando el paquete dsnif . 

Ettercap 

Ettercap es una herramienta de seguridad de red gratuita y de código abierto que se desarrolló originalmente para rastrear redes, pero que desde entonces se ha ampliado para incluir otros ataques de intermediario (MitM), incluida la suplantación de ARP. 

Además de sus funciones principales, Ettercap ahora incluye una gama de herramientas útiles como filtrado de paquetes, recopilación de contraseñas para varios protocolos, compatibilidad con SSL/SSH y más. También admite complementos de terceros, lo que proporciona capacidades prácticamente ilimitadas. 

Puede usar Ettercap directamente desde la consola o puede usar la versión GUI. Está disponible para Linux, macOS y Windows y se puede descargar desde la página de inicio oficial de Ettercap . 

Bettercap

Bettercap es una herramienta de piratería de redes todo en uno escrita en Go. La herramienta incluye un conjunto extensible de funciones para diferentes tipos de objetivos, incluidas redes WiFi, dispositivos BLE, dispositivos HID inalámbricos y compatibilidad con redes ipv4 e Ipv6.

Bettercap se puede utilizar desde la CLI (Interfaz de línea de comandos) en una sesión interactiva y un motor javascript, así como una interfaz de usuario web para una experiencia más sencilla y visual.

Wireshark

Aunque no necesariamente se utiliza para realizar la suplantación de ARP. Es una herramienta esencial para analizar la red y rastrear los paquetes a través del canal de comunicación. Consulte nuestra hoja de referencia de Wireshark aquí .

Wireshark es un analizador de protocolos de red gratuito y de código abierto que se puede utilizar para capturar y analizar el tráfico de red, incluidos los paquetes ARP.

Está disponible para Windows, macOS y Linux y se puede descargar desde el siguiente enlace:  https://www.wireshark.org/.

Puedes saber mas hacerca de wireshark en nuestra Guía Rápida de Wireshark: todos los comandos, filtros y sintaxis.

Para un flujo de trabajo más ligero y orientado a secuencias de comandos, Wireshark viene con otra herramienta llamada Tshark, a la que puede acceder desde la línea de comandos.

Si es un investigador de seguridad o simplemente busca aprender más sobre la seguridad de la red, este es un poderoso conjunto de herramientas que puede tener en su arsenal. Sin embargo, si está buscando más alternativas, tenga en cuenta que varias herramientas conocidas han sido retiradas o ya no son compatibles, así que verifique dos veces antes de dedicar horas a solucionar problemas. 

Preguntas frecuentes

¿Cuál es el objetivo principal del protocolo ARP?

El objetivo principal del protocolo ARP es facilitar la comunicación entre dispositivos dentro de una red local mapeando las direcciones IP de los dispositivos a sus correspondientes direcciones MAC, lo que permite la comunicación en la red física desde el direccionamiento lógico. 

¿Cuál es el resultado de un ataque de suplantación de identidad ARP exitoso?

Un ataque de suplantación de identidad ARP exitoso permite al atacante interceptar la comunicación dentro de una red local y potencialmente lanzar otros tipos de ataques de intermediario (MitM) y de denegación de servicio (DoS), según sus objetivos y técnicas específicos.

¿La suplantación de identidad de Arp es lo mismo que el envenenamiento por ARP?

La suplantación de ARP y el envenenamiento de ARP son dos términos que con frecuencia se usan indistintamente ya que se refieren al mismo tipo de ataque y tienen el mismo resultado: la interceptación del tráfico . Sin embargo, desde un punto de vista técnico, corresponden a diferentes objetivos para lograr esta meta.

  • La suplantación de ARP se refiere al acto de suplantar la identidad de un host particular en la red a través de paquetes arp diseñados. 
  • El envenenamiento de ARP, por otro lado, se refiere al acto de alterar el caché ARP de los dispositivos en la red con asignaciones IP a MAC falsificadas.

¿Existen diferentes tipos de suplantación de ARP?

La suplantación de ARP se puede clasificar en dos tipos según el enfoque adoptado

  • Suplantación de ARP del host: el atacante utiliza solicitudes ARP diseñadas para falsificar un host en particular.
  • Envenenamiento de ARP de puerta de enlace: el atacante altera las tablas MAC de la puerta de enlace de la red para redirigir el tráfico a su máquina.

¿Cómo prevenir la suplantación de ARP?

Si bien algunos controles de seguridad pueden ser específicos de los fabricantes de hardware/software, existen enfoques generales que pueden ayudar a mitigar la suplantación de ARP y los ataques de intermediario (MitM) en general, que incluyen Implementar mecanismos de autenticación (como Multi-Factor- Autenticación, etc.)

  • Cifrar la comunicación de red
  • Configurar los controles de acceso adecuadamente
  • Actualizar los dispositivos de red periódicamente
  • Monitorear la actividad de la red 
  • Configurar entradas ARP estáticas 

¿En qué tipo de ataque adicional se basa la suplantación de ARP?

Para llevar a cabo con éxito un ataque de suplantación de identidad ARP, un atacante primero debe infiltrarse en la red y luego, en la mayoría de los casos, eludir su cifrado. Algunos posibles vectores de ataque incluyen:

  • Acceder físicamente a la red
  • Atacar redes WiFi inseguras
  • Usar malware para obtener acceso a dispositivos de red
  • Ingeniería social
  • Explotar vulnerabilidades en dispositivos de red
  • Explotar mecanismos de seguridad mal configurados
  • Datos recopilados por fuerza bruta
  • Emplear ataques de protocolo como Eliminación de SSL para evitar conexiones seguras

Conclusión

Al adentrarnos en la Guía Rápida de ARP Spoofing, hemos revelado los peligros ocultos y las defensas contra esta táctica de ataque. Desde comprender cómo los atacantes engañan a las direcciones ARP hasta fortalecer las defensas con herramientas y prácticas efectivas, esta guía capacita a los profesionales para enfrentar el desafío del ARP Spoofing. Con la conciencia y las estrategias adecuadas, podemos proteger nuestras redes contra esta amenaza cada vez más común.

La suplantación de ARP es una amenaza crítica que permite a los atacantes obtener acceso a recursos de la red e información confidencial sin el conocimiento o consentimiento del objetivo. También puede ayudar a lanzar otros ataques, como ataques de denegación de servicio (DoS) y de ingeniería social.

Como tal, es fundamental que los ingenieros de redes y seguridad sean conscientes de los riesgos que plantea la suplantación de ARP e implementen medidas para contrarrestar y mitigar dichos ataques. Esto puede implicar la implementación de medidas de seguridad de la red, como firewalls y sistemas de detección de intrusiones, y el uso de protocolos seguros, como HTTPS. 

Comando telnet de Linux

En Linux, el comando telnet se utiliza para crear una conexión remota con un sistema a través de una red TCP/IP. Nos permite administrar otros sistemas mediante la terminal. Podemos ejecutar un programa para realizar la administración.

Telnet se utiliza para negociar con otro host con la ayuda del protocolo TELNET. Si el comando telnet se invoca sin un argumento de host, se presenta en modo comando, representado por su indicador. Acepta y ejecuta el comando que se indica a continuación en este modo. Implementa un comando abierto con esos argumentos si se invoca con argumentos.

Utiliza el protocolo TELNET. Sin embargo, este protocolo tiene algunos defectos de seguridad, pero es uno de los protocolos de red más utilizados debido a su simplicidad. No es un protocolo seguro porque transfiere datos en forma no cifrada. A menudo, los usuarios de Linux prefieren ssh en lugar de telnet porque ssh transfiere datos en forma cifrada. Esta utilidad es similar a la función de Escritorio remoto de Windows.

Opciones de telnet

  • -7: Elimina el octavo bit de la entrada y la salida. De manera predeterminada, Telnet es de 8 bits limpios, pero no transfiere la opción, es decir, TELNET BINARY, a menos que se fuerce.
  • -8: ejecuta una ruta de datos de 8 bits. Intenta comunicarse con la opción, es decir, TELNET BINARY, tanto en la salida como en la entrada.
  • -E: Impide que un carácter sea identificado como un carácter de escape.
  • -F: Esta opción permite enviar las credenciales locales al sistema remoto, como las que ya se enviaron al entorno local si se utiliza la autenticación Kerberos V5.
  • -K: No especifica el inicio de sesión automático para el sistema remoto.
  • -L: En la salida, especifica la ruta de datos de 8 bits. Lleva la opción, es decir, BINARIO, a comunicar en la salida.
  • -X atype: Desactiva el tipo de autenticación atype.
  • -a: Intenta iniciar sesión automáticamente. Transfiere el nombre de usuario mediante la variable USER de la opción ENVIRON si el sistema remoto lo admite.
  • -b hostalias: utiliza bind(2) para vincular el socket local a una dirección con alias o a otra dirección de interfaz distinta a la seleccionada por connect(2) de forma natural. Puede resultar útil durante la conexión a servicios que aplican direcciones IP para la reconfiguración del servidor y la autenticación no es deseable.
  • -c: Desactiva la lectura del archivo .telnetrc del usuario.
  • -d: Establece el valor de alternancia de depuración inicial en VERDADERO.
  • -e escapechar: Establece el carácter de escape inicial de Telnet como escapechar. No habrá ningún carácter de escape si no se encuentra escapechar.
  • -f: esta opción permite enviar las credenciales locales al sistema remoto si se utiliza la autenticación Kerberos V5.
  • -k realm: esta opción afirma que telnet trae tickets para el host remoto en el reino en lugar del reino del host remoto si se utiliza la autenticación Kerberos.
  • -I usuario: si el sistema remoto acepta la opción ENVIRON al conectarse a un sistema remoto, el usuario será transferido al sistema remoto debido al valor de la variable USER. Esta opción significa el indicador -a. También se puede utilizar con el comando, es decir, open.
  • -n tracefile: esta opción se utiliza para abrir el archivo de seguimiento para registrar información de seguimiento.
  • -r: especifica la interfaz de usuario de la misma forma que rlogin(1). El carácter de escape se fija en el carácter tilde a menos que se cambie con el indicador -e.
  • -x: activa el cifrado del flujo de datos si es posible.
  • -port: representa un número de puerto (una dirección de aplicación). El puerto telnet es el puerto predeterminado si no se indica el número.
  • -host: Representa el nombre oficial, la dirección de Internet de un host remoto o un alias.

Comandos en telnet

A continuación se enumeran y explican algunos comandos Telnet importantes. Solo se deben escribir los comandos necesarios para identificarlo de forma única.

  • auth[…]: este comando puede manipular los detalles enviados por la opción, es decir, TELNET AUTHENTICATION . Para este comando, se describen a continuación algunos argumentos válidos:
    • disable type: deshabilita el tipo de autenticación indicado. Podemos usar el comando, es decir, auth disable , para obtener la lista de tipos disponibles.
    • enable type: Habilita el tipo de autenticación indicado. Podemos usar el comando, es decir, auth enable , para obtener la lista de tipos disponibles.
    • status: especifica el estado actual de varios tipos de autenticación.
  • close: Cierra la sesión TELNET y vuelve al modo comando.
  • display argument[…]: Muestra algunos o todos los valores de alternancia y configuración.
  • encrypt argument[…]: este comando puede manipular los detalles enviados por la opción, es decir, TELNET ENCRYPT . A continuación se describen algunos argumentos válidos para este comando:
    • disable type [input|output]: deshabilita el tipo de cifrado indicado. Si omitimos la salida y la entrada, se deshabilitan ambas. Podemos usar el comando, es decir, encrypt deshabilitar , para obtener la lista de tipos disponibles.
    • enable type [input|output]: habilita el tipo de cifrado indicado. Si omitimos la salida y la entrada, se habilitan ambas. Podemos usar el comando, es decir, encrypt enable , para obtener la lista de tipos disponibles.
    • input: es similar al comando encrypt start input.
    • -input: Es similar al comando encrypt stop input.
    • output: Es similar al comando encrypt start output.
    • -output: Es similar al comando encrypt stop output.
    • status: especifica el estado de cifrado actual.

Características principales:

  • Protocolo basado en texto: La interacción se realiza a través de comandos de texto.
  • Sin cifrado: Toda la información, incluidas las credenciales de usuario, se transmite en texto plano.
  • Acceso remoto: Permite la administración remota de sistemas y dispositivos.
  • Interacción directa: No ofrece ninguna interfaz gráfica, lo que lo hace muy ligero.

Instalación y uso básico en Linux

En la mayoría de distribuciones de Linux, Telnet no viene preinstalado debido a sus problemas de seguridad. Sin embargo, se puede instalar fácilmente utilizando el gestor de paquetes de tu sistema:

  • En sistemas basados en Debian/Ubuntu:
    sudo apt install telnet
  • En sistemas basados en Red Hat/Fedora:
    sudo yum install telnet

Una vez instalado, puedes conectarte a un servidor remoto simplemente utilizando:

telnet <IP o dominio> <puerto>

Por ejemplo, para conectarse a un servidor en el puerto 23 (puerto predeterminado de Telnet):

telnet 192.168.1.10 23

Instalar Telnet en Linux

Para instalar telnet, ejecute el siguiente comando:

sudo apt install telnetd -y  

El comando anterior instalará el paquete necesario para el protocolo Telnet. Observe el resultado siguiente:

Iniciar el shell Telnet

El shell interactivo se puede iniciar ejecutando el comando telnet de la siguiente manera:

telnet  

Este shell nos permite ejecutar algunos comandos exclusivos de Telnet. Se verá como el siguiente:

El shell facilita la creación de una conexión remota con varios comandos. Podemos enumerar todos los comandos ejecutando el comando help . Para ejecutar el comando help, escriba h . Considere el siguiente resultado:

A partir de la captura de pantalla anterior, se enumeran todos los comandos y su uso. Se enumeran muchas utilidades de línea de comandos, como cerrar, cerrar sesión, mostrar, modo, abrir, salir, enviar y más.

¿Cómo conectarse mediante el comando telnet en Linux?

Crear una conexión entre dos sistemas mediante el comando telnet es un proceso simple, ejecute el comando telnet seguido del nombre del host.

Por ejemplo, conectamos nuestro sistema con el host local. Ejecutamos el comando de la siguiente manera:

telnet localhost  

El comando anterior solicitará el nombre de usuario y la contraseña. Ingrese las credenciales para continuar. Observe el siguiente resultado:

Telnet es un protocolo de red simple basado en texto que se utiliza para acceder a computadoras remotas a través de redes TCP/IP como Internet.

Conectarse a Telnet usando el comando: `telnet 192.168.0.121`.

 Luego de conectarnos, podemos ejecutar los comandos como lo hicimos anteriormente. La única diferencia es que ahora la máquina se trata como una máquina remota.

Para salir del comando telnet, ejecute el comando logout.

Explotación del puerto 23 con Hydra

Explotación de TELNET con MF6

Este módulo probará un inicio de sesión de Telnet en una variedad de máquinas e informará los inicios de sesión exitosos. Si ha cargado un complemento de base de datos y se ha conectado a una base de datos, este módulo registrará los inicios de sesión y hosts exitosos para que pueda realizar un seguimiento de su acceso. Para esto se utilizará la misma contraseña y el mismo archivo de usuario de antes.

use auxiliary/scanner/telnet/telnet_login msf auxiliary (scanner/telnet/telnet_login) 
> set rhosts 192.168.1.103 msf auxiliary (scanner/telnet/telnet_login) 
> set user_file /root/Desktop/user.txt msf auxiliary (scanner/telnet/telnet_login) 
> set pass_file /root/Desktop/pass.txt msf auxiliary (scanner/telnet/telnet_login) 
> set stop_on_success true msf auxiliary (scanner/telnet/telnet_login) 
> run

Problemas de Seguridad con Telnet

Una vez establecida una conexión Telnet, los usuarios pueden realizar cualquier función autorizada en el servidor, como si utilizaran una sesión de línea de comandos en el servidor mismo. Si están autorizados, pueden iniciar y detener procesos, configurar el dispositivo e inclusive apagar el sistema.

Aunque el protocolo Telnet puede requerir que un usuario inicie sesión, no admite el transporte de datos cifrados. Todos los datos intercambiados durante las sesiones de Telnet se transportan como texto normal por la red. Esto significa que los datos pueden ser fácilmente interceptados y entendidos.

El protocolo Secure Shell (SSH) ofrece un método alternativo y seguro para el acceso a servidores. SSH proporciona la estructura para un inicio de sesión remoto seguro y otros servicios de red seguros. También proporciona una autenticación más sólida que Telnet y admite el transporte de datos de sesión mediante cifrado.

Como una mejor práctica, los profesionales de red deberían utilizar siempre SSH en lugar de Telnet, cada vez que sea posible. En la figura se ilustra por qué SSH es más seguro que Telnet. Observe que, cuando se utiliza Telnet, los datos que captura el hacker son claramente legibles, mientras que al utilizar SSH, los datos están cifrados y, por lo tanto, son más seguros.

Ataque y Defensa del Protocolo Telnet

El protocolo Telnet es uno de los métodos más antiguos utilizados para acceder de forma remota a dispositivos en una red. Aunque su uso ha disminuido significativamente en favor de protocolos más seguros como SSH, Telnet aún se encuentra en algunos sistemas heredados y dispositivos de red.

Este protocolo presenta varias vulnerabilidades críticas, lo que lo convierte en un objetivo frecuente para ataques cibernéticos. En este artículo, exploraremos los tipos de ataques más comunes contra Telnet y las mejores estrategias para defenderse.

Telnet es un protocolo de red que permite a los usuarios conectarse a un sistema remoto para ejecutar comandos como si estuvieran físicamente presentes en ese sistema. Opera principalmente sobre el puerto TCP 23 y permite el acceso a la línea de comandos de servidores, enrutadores, conmutadores y otros dispositivos. Telnet es un protocolo en texto plano, lo que significa que los datos, incluidas las credenciales de autenticación, se transmiten sin cifrar.

Telnet es un protocolo antiguo con numerosas vulnerabilidades que lo hacen inadecuado para su uso en entornos de red modernos, especialmente en redes públicas. A pesar de su simplicidad y facilidad de uso, Telnet carece de las características de seguridad necesarias para proteger las comunicaciones y los datos en la era actual de ciber

Principales Vulnerabilidades de Telnet

  1. Transmisión de Credenciales en Texto Plano: Todas las credenciales de inicio de sesión, incluidas las contraseñas, se envían sin cifrar. Esto permite a los atacantes que interceptan el tráfico de red capturar estas credenciales y obtener acceso no autorizado.
  2. Falta de Autenticación Sólida: Telnet carece de mecanismos de autenticación robustos. Los ataques de fuerza bruta y el uso de credenciales predeterminadas o débiles son comunes, lo que facilita el acceso no autorizado.
  3. Ausencia de Cifrado de Datos: A diferencia de protocolos como SSH, Telnet no cifra los datos transmitidos, lo que hace que todo el tráfico sea susceptible a ataques de intermediario (MitM) y sniffing.

Cómo Los Hackers Usan Telnet para Atacar Sistemas

A pesar de sus desventajas, Telnet sigue siendo una herramienta útil para los hackers en situaciones específicas, principalmente en redes mal configuradas o antiguas. A continuación, se muestran algunas formas comunes en las que los hackers pueden explotar Telnet:

1. Escaneo de Puertos para Identificar Servicios Telnet Activos

Los atacantes suelen realizar escaneos de puertos utilizando herramientas como Nmap para identificar dispositivos que tienen el puerto 23 abierto (puerto estándar de Telnet). Un escaneo simple para encontrar dispositivos que ejecutan Telnet en una red sería:

nmap -p 23 192.168.1.0/24

Si el atacante encuentra algún sistema con Telnet habilitado, sabrá que tiene un objetivo potencial.

2. Sniffing de Tráfico

Descripción: Sniffing es una técnica en la que un atacante intercepta y captura el tráfico de red para analizarlo. Dado que Telnet transmite datos en texto plano, un atacante que use herramientas de sniffing como Wireshark puede capturar credenciales, comandos y otros datos sensibles.

Métodos de Ejecución:

  • Captura de Paquetes: El atacante utiliza un analizador de paquetes para capturar el tráfico Telnet, lo que le permite leer todo el contenido transmitido, incluidas las credenciales de inicio de sesión.

Consecuencias:

  • Robo de Credenciales: El atacante puede capturar nombres de usuario y contraseñas, lo que le permite acceder al sistema de forma remota.
  • Compromiso de Seguridad: El acceso no autorizado al sistema puede llevar al robo de datos, modificación de configuraciones, o la instalación de malware.

Una vez que un atacante ha identificado un sistema que utiliza Telnet, puede usar técnicas de sniffing para capturar el tráfico de red y obtener credenciales de inicio de sesión. Herramientas como Wireshark o tcpdump permiten capturar y analizar paquetes en tiempo real, revelando cualquier dato enviado sin cifrar, como contraseñas.

Por ejemplo, un atacante podría ejecutar:

tcpdump -i eth0 port 23 -w telnet_traffic.pcap

Después, puede abrir el archivo resultante en Wireshark y observar el contenido, incluidos los nombres de usuario y contraseñas en texto claro.

3. Fuerza Bruta de Contraseñas

Descripción: En un ataque de fuerza bruta, un atacante intenta adivinar las credenciales de Telnet probando múltiples combinaciones de nombres de usuario y contraseñas hasta encontrar la correcta. Dado que Telnet no implementa medidas de seguridad avanzadas, como bloqueos de cuenta tras varios intentos fallidos, es vulnerable a estos ataques.

Métodos de Ejecución:

  • Automatización: Herramientas como Hydra o Medusa pueden ser utilizadas para automatizar el proceso de adivinación de credenciales.

Consecuencias:

  • Acceso No Autorizado: Una vez que el atacante adivina las credenciales correctas, puede acceder al sistema Telnet, potencialmente obteniendo control total del dispositivo.
  • Escalada de Privilegios: Si el atacante logra acceder a una cuenta con privilegios elevados, puede realizar cambios críticos en el sistema.

Defensa Contra la Fuerza Bruta en Telnet:

  • Uso de Contraseñas Fuertes: Implementar políticas que requieran contraseñas largas, complejas y únicas.
  • Limitar Intentos de Inicio de Sesión: Configurar el sistema para bloquear temporalmente o permanentemente las cuentas después de un número determinado de intentos fallidos.
  • Migración a SSH: SSH no solo cifra las credenciales, sino que también permite la autenticación multifactor y otras medidas de seguridad avanzadas.

Como ya vimos en un ejemplo anterior en muchas redes mal protegidas, los servicios Telnet están activados con credenciales débiles o predeterminadas. Los hackers pueden aprovechar herramientas de fuerza bruta como Hydra o Medusa para intentar adivinar las credenciales. Un ataque de fuerza bruta en Telnet usando Hydra sería algo como esto:

hydra -l admin -P /ruta/a/diccionario.txt telnet://192.168.1.10

Este comando intentará todas las combinaciones de contraseñas desde un archivo de diccionario contra el usuario admin en el dispositivo Telnet.

4. Ataques Man-in-the-Middle (MitM)

Descripción: En un ataque MitM, un atacante intercepta las comunicaciones entre el cliente Telnet y el servidor. Dado que Telnet no cifra el tráfico, el atacante puede capturar, modificar o inyectar comandos en la comunicación, comprometiendo la seguridad del sistema.

Métodos de Ejecución:

  • Intercepción de Tráfico: El atacante coloca su dispositivo entre el cliente y el servidor Telnet, interceptando todo el tráfico de ida y vuelta.

Consecuencias:

  • Suplantación de Identidad: El atacante puede hacerse pasar por el cliente o el servidor, lo que permite realizar acciones no autorizadas en el sistema.
  • Robo de Información Sensible: El atacante puede capturar datos sensibles, como credenciales o información confidencial, que se transmiten entre el cliente y el servidor.

Defensa Contra MitM en Telnet:

  • Migración a SSH: SSH protege contra ataques MitM mediante el uso de cifrado fuerte y autenticación de servidor.
  • Implementación de VPNs: Utilizar redes privadas virtuales (VPN) para cifrar todo el tráfico entre el cliente y el servidor Telnet, protegiéndolo contra la interceptación.

5. Explotación de Vulnerabilidades en Implementaciones de Telnet

Descripción: A lo largo de los años, varias implementaciones de servidores Telnet han tenido vulnerabilidades que permiten a los atacantes ejecutar código arbitrario, provocar denegaciones de servicio, o ganar acceso no autorizado.

Métodos de Ejecución:

  • Explotación de Desbordamiento de Búfer: Un atacante puede enviar datos específicamente manipulados que explotan una vulnerabilidad de desbordamiento de búfer, permitiéndole ejecutar código malicioso en el servidor.

Consecuencias:

  • Compromiso Total del Sistema: El atacante puede obtener control total del servidor Telnet, lo que le permite modificar archivos, instalar software malicioso o robar datos.
  • Denegación de Servicio (DoS): El servidor Telnet puede caer o volverse inestable debido a la explotación, interrumpiendo los servicios para los usuarios legítimos.

Defensa Contra la Explotación de Vulnerabilidades en Telnet:

  • Aplicar Parches y Actualizaciones: Mantener el software del servidor Telnet actualizado con los últimos parches de seguridad para corregir vulnerabilidades conocidas.
  • Deshabilitar Servicios Innecesarios: Deshabilitar Telnet y otros servicios innecesarios que puedan ser explotados por atacantes.

6. Acceso Persistente

Si un atacante logra acceder a un sistema a través de Telnet, puede instalar un backdoor o un rootkit para mantener acceso a largo plazo. Un método común es modificar archivos críticos del sistema, como el .bashrc o .profile de un usuario, para ejecutar scripts maliciosos cada vez que el usuario inicie sesión.

7. Escalamiento de Privilegios

Una vez dentro del sistema, si el atacante ha ingresado con una cuenta de usuario de bajo nivel, puede intentar escalar privilegios para obtener acceso de administrador o root. Esto puede implicar la explotación de vulnerabilidades locales en el sistema, como configuraciones erróneas de permisos, o la explotación de vulnerabilidades conocidas del sistema operativo.

Mejores Prácticas para Asegurar Telnet

  1. Migración a Protocolos Seguros: La mejor defensa contra los riesgos asociados con Telnet es dejar de usarlo en favor de protocolos más seguros, como SSH. SSH proporciona cifrado fuerte, autenticación avanzada y protección contra muchos de los ataques comunes a los que es vulnerable Telnet.
  2. Segmentación de Red y Acceso Controlado: Si Telnet debe ser utilizado por alguna razón, asegúrese de que el acceso esté restringido solo a las partes de la red que realmente lo necesiten. Utilizar firewalls para bloquear el tráfico Telnet desde y hacia la red pública y restringir el acceso solo a dispositivos autorizados.
  3. Autenticación Multifactor (MFA): Implementar MFA para agregar una capa adicional de seguridad a los inicios de sesión de Telnet. MFA requiere que los usuarios proporcionen una segunda forma de autenticación, lo que dificulta que los atacantes accedan al sistema incluso si tienen las credenciales correctas.
  4. Monitoreo y Registro de Actividades: Configurar sistemas para registrar todas las actividades de Telnet y monitorear estos registros en busca de patrones sospechosos. Utilizar soluciones de monitorización y análisis de registros, como SIEM (Security Information and Event Management), para detectar y responder a actividades sospechosas en tiempo real.
  5. Educación y Capacitación del Personal: Capacitar a los administradores y usuarios sobre los riesgos de Telnet y las mejores prácticas de seguridad. Realizar sesiones de capacitación periódicas y asegurarse de que todos los usuarios comprendan los riesgos de seguridad asociados con el uso de Telnet.

Ejemplo Real: Uso Malicioso de Telnet en Dispositivos IoT

Una de las áreas donde Telnet sigue siendo prevalente es en dispositivos IoT (Internet de las cosas), como cámaras IP, routers y otros dispositivos conectados a la red. Muchos de estos dispositivos tienen credenciales Telnet predeterminadas que rara vez son cambiadas por los usuarios.

Un ejemplo notable de abuso de Telnet en dispositivos IoT es el malware Mirai, que comprometió millones de dispositivos IoT vulnerables que ejecutaban Telnet, utilizando contraseñas predeterminadas. Mirai luego utilizó estos dispositivos comprometidos para lanzar ataques DDoS masivos.

Cómo Protegerse de Ataques en Telnet

Debido a los riesgos inherentes del uso de Telnet, la mejor práctica es no usar Telnet y en su lugar optar por SSH, que cifra todas las comunicaciones. Sin embargo, si debes usar Telnet por alguna razón, aquí te ofrecemos algunas recomendaciones de seguridad:

  1. Deshabilitar Telnet: Si no es necesario, deshabilita el servicio Telnet en tus dispositivos y sistemas.
  2. Usar Telnet a través de una VPN: Si Telnet es imprescindible, usa una VPN para asegurar la conexión y cifrar el tráfico.
  3. Cambiar credenciales predeterminadas: Siempre asegúrate de cambiar las contraseñas predeterminadas en dispositivos que usen Telnet.
  4. Restringir el acceso: Usa firewalls y listas de control de acceso (ACL) para restringir el acceso al servicio Telnet solo a IPs específicas.
  5. Monitoreo de tráfico: Implementa herramientas de monitoreo para detectar cualquier intento no autorizado de acceso a través de Telnet.

SSH (Secure Shell)

La seguridad desempeña siempre un papel central en Internet. De ahí que el procedimiento de seguridad SSH está firmemente anclado en la pila de protocolos TCP/IP. Implementado en 1995 y revisado varias veces desde entonces, el protocolo SSH permite a los usuarios establecer una conexión segura entre dos PCs. A continuación nos adentraremos en los detalles del protocolo SSH y mostraremos cómo realiza el cifrado.

¿Para qué sirve SSH?

El protocolo SSH permite que dos computadoras establezcan una conexión segura y directa dentro de una red potencialmente insegura como Internet. Este protocolo es necesario para que no puedan acceder terceros al flujo de datos que se transfiere a través de la conexión y la información sensible no caiga en manos equivocadas.

Antes de que apareciera Secure Shell, también era posible establecer conexiones directas entre dos PCs, pero las aplicaciones que se utilizaban, Telnet, Remote Shell o rlogin, eran inseguras. SSH encripta la conexión entre dos computadoras y permite operar una de ellas desde la otra.

SSH no solo garantiza una conexión cifrada, sino también que solo se establezcan conexiones entre los PCs destinados a este fin (es decir, que no sea posible ningún ataque del tipo man-in the-middle) y que los datos no puedan manipularse en su camino hacia el destinatario. Originariamente, el acceso al PC remoto se realizaba siempre a través de la línea de comandos, con la que se enviaban comandos al equipo remoto. Entretanto, ya es posible también reflejar una interfaz gráfica de usuario (que no siempre está disponible en los servidores) en tu propio PC con la ayuda de Virtual Network Computing (VNC) y así controlar el otro PC.

SSH tiene muchas aplicaciones diferentes:

  • Gestión de servidores a los que no se puede acceder localmente
  • Transferencia segura de archivos
  • Creación de copias de seguridad
  • Conexión entre dos PCs con encriptación de extremo a extremo
  • Mantenimiento remoto desde otros PCs

El desarrollo de SSH también ha influido en otros protocolos. Por ejemplo, el inseguro protocolo FTP, con el que es posible cargar archivos en un servidor y descargarlos desde allí, se ha desarrollado aún más hasta transformarlo en el Protocolo de Transferencia de Archivos SSH (SFTP).

Una ventaja de SSH es que el protocolo se ejecuta en todos los sistemas operativos comunes. Dado que en sus orígenes era una aplicación Unix, también se implementa por defecto en todas las distribuciones de Linux y en macOS. Sin embargo, SSH también se puede usar en Windows si instalas el programa apropiado.

Comando SSH

En Linux, ssh es un protocolo que significa Secure Shell o Secure Socket Shell. El secure shell es útil para la seguridad al conectarse a un servidor remoto. El comando ssh utiliza un protocolo ssh , que es un protocolo seguro, ya que la transferencia de datos entre el cliente y el host se realiza de forma cifrada. Transfiere la entrada a través del cliente al host y devuelve la salida transferida por el host. Se ejecuta a través del puerto TCP/IP 22.

La conexión cifrada también se utiliza para ejecutar comandos en un servidor Linux , reenvío de puertos , tunelización y más.

Hay muchos clientes SSH disponibles tanto de forma comercial como gratuita. OpenSSH es el cliente más utilizado. Está disponible para todas las plataformas más utilizadas, como Windows, Linux, macOS, OpenBSD y más.

Sintaxis:

ssh nombre_usuario@host (IP/nombre_de_dominio)  

El comando anterior le pedirá la contraseña, escríbala y presione la tecla ENTER.

Si estamos realizando una conexión por primera vez, nos pedirá continuar con la conexión, escribiremos sí y pulsaremos Enter. Agregará una clave ECDSA (Elliptical Curve Digital Signature Algorithm) y nos conectará a un servidor remoto.

Ahora puede controlar y administrar una máquina remota mediante su terminal. Si tiene alguna dificultad para establecer una conexión, tenga en cuenta los siguientes puntos:

  • Si la dirección IP proporcionada de la máquina remota es válida.
  • El puerto que escucha el demonio SSH no está bloqueado por un firewall ni se reenvía incorrectamente.
  • El nombre de usuario y la contraseña que ingresó son correctos.
  • El software SSH está instalado correctamente.

Componentes del comando ssh

El comando ssh consta de tres tipos diferentes de componentes:

  • Comando ssh: indica a la máquina que cree una conexión cifrada segura con el sistema host.
  • Nombre de usuario: El nombre de usuario es el nombre del usuario de Linux al que accede la máquina host.
  • Host: un host es una máquina a la que accede el usuario, como una computadora o un enrutador. Un nombre de dominio o una dirección IP también se denominan Host.

Comandos SSH

El cliente ssh tiene muchas funciones para el comando ssh, como crear una clave, configurar una clave, abrir un servidor SSH, mantener una clave para inicio de sesión único, cliente de transferencia de archivos y más. Algunos de los comandos ssh más útiles son los siguientes:

  • ssh-keygen: Se utiliza para crear un par de claves para establecer una conexión y autenticación de clave pública.
  • ssh-copy-id: Se utiliza para configurar una clave pública como un usuario válido en un servidor.
  • ssh-agent: se utiliza para crear un agente que guarde la clave privada para el inicio de sesión único.
  • ssh-add: Es una herramienta para agregar una clave al agente.
  • scp: es un cliente de transferencia de archivos que proporciona una interfaz de línea de comandos similar a RCP.
  • sftp: es un comando de transferencia de archivos que proporciona una interfaz de línea de comandos similar a FTP.
  • sshd: Es un servidor OpenSSH para el sistema Linux.

Opciones: Hay muchas opciones de línea de comandos disponibles para especificar las distintas especificaciones de salida de SSH. Algunas opciones útiles son las siguientes:

  • -c: Se utiliza para especificar la clase de consulta para datos que no son IN.
  • -C: Se utiliza para comparar registros SOA en servidores de nombres autorizados.
  • -d: Esta opción se considera equivalente a -v.
  • -i: Se utiliza para búsquedas inversas de IP6.INT.
  • -l: Se utiliza para listar todos los hosts de un dominio mediante AXFR.
  • -m: esta opción establece el indicador de depuración de memoria, como trace|record|usage.
  • -N: Se utiliza para cambiar la cantidad de puntos permitidos antes de que se realice la búsqueda de raíz.
  • -r: Se utiliza para deshabilitar el procesamiento recursivo.
  • -R: Especifica el número de reintentos para los paquetes UDP.
  • -s: Se utiliza para que una respuesta SERVFAIL detenga la consulta.
  • -t: Se utiliza para especificar el tipo de consulta.
  • -T: Se utiliza para habilitar el modelo TCP/IP.
  • -v: Se utiliza para salida detallada.
  • -V: Se utiliza para imprimir el número de versión y salir.
  • -w: se utiliza para especificar la espera eterna para una respuesta.
  • -W: Se utiliza para especificar cuánto tiempo esperar una respuesta.
  • -4: Se utiliza solo para el transporte de consultas IPv4.
  • -6: Se utiliza solo para el transporte de consultas IPv6.

SSH vs. OpenSSH

Secure Shell fue creado en 1995 como un proyecto de código abierto. Ese mismo año, el desarrollador Tatu Ylönen fundó una empresa para seguir desarrollando el protocolo. Así, el proyecto inicialmente abierto se fue convirtiendo cada vez más en software propietario. Sin embargo, la comunidad de la red no se limitó a aceptar su comercialización y desarrolló una bifurcación abierta basada en el protocolo SSH-1: OpenSSH. Sin embargo, dado que la empresa SSH Communication Security sigue trabajando en Secure Shell, ahora existen dos protocolos que son competencia. Uno de ellos es el protocolo propietario SSH-2 (un desarrollo posterior desde que se conocieron las vulnerabilidades de seguridad en SSH-1) y el otro es OpenSSH.

OpenSSH y el SSH comercial son equivalentes tanto en funcionalidad como en alcance. La diferencia radica sobre todo en el coste, pero también en el servicio de soporte. Si eliges el producto de SSH Communication Security, también recibirás asistencia las 24 horas del día, los 7 días de la semana, lo que puede ser particularmente útil para empresas grandes con gerentes de TI que cambian a menudo. OpenSSH, por otro lado, ofrece la ventaja de que cuenta con una gran comunidad que participa en el constante desarrollo del proyecto.

Instalar el cliente OpenSSH en Linux

El cliente OpenSSH es una herramienta de conectividad para que los sistemas conecten dos sistemas con el protocolo ssh. También se lo denomina ssh y se puede invocar desde la terminal de Linux. Este paquete de cliente contiene otras utilidades SSH como sftp, scp y ssh que se instalan de manera predeterminada con el comando ssh. Realiza operaciones remotas utilizando estas utilidades ssh.

El cliente OpenSSH viene preinstalado en la mayoría de distribuciones Linux. Si algún sistema Linux no tiene el cliente ssh, podemos instalarlo manualmente mediante el administrador de paquetes.

Para instalar el cliente OpenSSH, ejecute el siguiente comando:

sudo apt  update

El comando sudo anterior actualizará el paquete del sistema Linux. Observe la siguiente captura de pantalla del resultado:

Después de actualizar el sistema Linux, ejecute el siguiente comando para instalar el cliente OpenSSH:

sudo apt install Cliente OpenSSH  

El comando anterior instalará el último paquete del cliente OpenSSH. Observe el resultado siguiente:

Como podemos ver en el resultado anterior, se está ejecutando un proceso demonio para instalar el cliente OpenSSH. Como en nuestra máquina, el cliente OpenSSH ya está instalado, se ha mostrado el mensaje “openssh-client ya es la versión más reciente”.

Instalar el servidor OpenSSH en Linux

Para realizar una conexión SSH, necesitamos tener la parte del lado del servidor del software SSH en nuestra máquina.

Para comprobar el estado de instalación del servidor, abra la terminal y ejecute el siguiente comando:

ssh  localhost

Si nuestra máquina no tiene el kit de herramientas de servidor del cliente OpenSSH, entonces mostrará la salida de la siguiente manera:

En el caso anterior, tenemos que instalar el servidor OpenSSH.

Para instalar el servidor SSH, ejecute el siguiente comando:

sudo apt-get install openssh-server ii  

El comando anterior solicitará la contraseña de administrador del sistema. Escriba la contraseña y presione la tecla ENTER para iniciar el proceso de instalación. A continuación, confirmará la instalación, escriba la tecla ‘y’ y presione la tecla ENTER. Considere el siguiente resultado:

Después de confirmar la instalación, se iniciará un proceso demonio que instalará el servidor OpenSSH en su máquina.

Para verificar la instalación, ejecute el siguiente comando:

service ssh status

El comando anterior mostrará el estado de la instalación. Si la instalación se realizó correctamente, se mostrará el resultado de la siguiente manera:

El comando anterior verificará el tipo de conectividad ” sí” para continuar. Considere el siguiente resultado:

Ahora hemos instalado con éxito el servidor OpenSSH en nuestra máquina.

Generación de claves SSH

Para crear una conexión con el cliente host, necesitamos una clave específica para una conexión cifrada. Iniciar sesión en la computadora host remota mediante una clave ssh es más seguro que usar una contraseña. Después de iniciar sesión en la computadora host, los comandos de la computadora solo funcionarán si se escriben directamente en la computadora host.

Para generar la clave ssh, ejecute el siguiente comando:

ssh-keygen

El comando anterior generará las claves pública y privada para crear una conexión con el sistema host. Considere el siguiente resultado:

Podemos ver en el resultado anterior que se generaron las claves SSH. El comando ssh-keygen crea dos archivos, key@ssh y key@ssh.pub , que contienen la clave privada y pública, respectivamente.

Se recomienda ocultar la clave privada por motivos de seguridad y copiar la clave pública al host remoto. Después de copiar esta clave al host remoto, podemos establecer una conexión utilizando la clave SSH, no mediante la contraseña.

¿Cómo funciona SSH? Una breve explicación

Secure Shell utiliza varias técnicas de cifrado y autenticación. Por un lado, esto garantiza que los flujos de datos no puedan leerse ni manipularse. Por otra parte, solo los participantes autorizados pueden ponerse en contacto entre sí.

Autentificación

En un primer paso, el servidor SSH y el cliente se autentican mutuamente. El servidor envía un certificado al cliente para verificar que realmente es el servidor correcto. Solo en el primer contacto existe el peligro de que un tercero logre conectarse entre los dos participantes e intercepte la conexión. Dado que el propio certificado también está encriptado, no puede ser imitado. Una vez que el cliente sabe cuál es el certificado correcto, nadie más puede hacer contacto a través del servidor correspondiente.

Después de la autenticación del servidor, el cliente también debe demostrar ante el servidor que está autorizado para acceder a él. Esta información se almacena en el servidor. Como resultado, los usuarios deben introducir la contraseña cada vez que se conectan a otro servidor durante la misma sesión. Debido a esto, existe la posibilidad alternativa de autenticación del lado del cliente utilizando el conjunto de claves formado por la clave pública y la privada.

La clave privada se crea individualmente para tu propio PC con una contraseña que debe ser más larga que una al uso. La clave privada se almacena exclusivamente en tu PC y siempre permanece secreta. Si deseas establecer una conexión SSH, introduce primero la contraseña que abre el acceso a la clave privada.

En el servidor (así como en el propio cliente) también hay claves públicas. El servidor crea un problema criptográfico con su clave pública y lo envía al cliente. Este, a su vez, descifra el problema con su propia clave privada, devuelve la solución e informa al servidor de que está permitido establecer una conexión segura.

Durante una sesión, solo necesitas introducir la contraseña una vez para conectarte a cualquier número de servidores. Al final de la conexión, los usuarios cierran la sesión en sus equipos locales para asegurarse de que ningún tercero que tenga acceso físico al equipo local pueda conectarse al servidor.

Codificación

Después de la autenticación mutua, los dos participantes de la comunicación establecen una conexión cifrada. Para ello, se genera una clave de sesión que expira una vez finalizada la conexión –no debe confundirse con los pares de claves públicas/privadas, que solo se utilizan para el intercambio de claves. La clave que se utiliza para el cifrado simétrico solo es válida para esta sesión. Tanto el cliente como el servidor tienen la misma clave, por lo que cualquier mensaje que se intercambie puede ser cifrado y descifrado. El cliente y el servidor crean la clave simultáneamente, pero de forma independiente el uno del otro. En el llamado algoritmo de intercambio de claves, ambas partes utilizan cierta información pública y secreta para crear la contraseña.

Otra forma de encriptación se produce gracias al SSH por hashing. Un hash es una especie de firma que se genera para los datos transmitidos. El proceso es el siguiente: se utiliza un algoritmo para generar un hash único a partir de los datos. Si se manipulan los datos, el valor del hash también cambia automáticamente, lo que permite al destinatario reconocer si los datos han sido modificados por terceros. Los valores del hash están diseñados de tal manera que no pueden ser simplemente simulados. Idealmente, nunca es posible generar dos transmisiones diferentes con el mismo hash: a esto se le llama seguridad de colisión.

Puertos SSH

Los puertos TCP son puntos finales abiertos por los servidores y los clientes para permitir la comunicación. Como en un puerto marítimo, los participantes en la comunicación reciben y envían aquí los paquetes de datos. TCP tiene un espacio de direcciones de 16 bits y por lo tanto tiene disponibles 65535 puertos. Sin embargo, la entidad Internet Assigned Numbers Authority (IANA) ha asignado algunos puertos (exactamente 1024) para ciertas aplicaciones, incluyendo el puerto SSH. Por defecto, todas las conexiones SSH se ejecutan en el puerto 22.

Debido a que el puerto a través del cual pasan las conexiones SSH es muy conocido y se sabe que se utiliza para transmitir datos sensibles, suele ser uno de los destinos favoritos de los ciberdelincuentes. Por lo tanto, algunos usuarios piensan que tiene sentido reubicar el puerto SSH para evitar ataques, aunque esta solución solo ofrece protección a corto plazo. Con un escáner de puertos es posible encontrar cualquier puerto utilizado por un PC.

Con SSH, el reenvío de puertos también es posible: el puerto SSH de un cliente o un servidor es utilizado por otro participante dentro de una red local para crear una conexión segura a través de Internet. Para ello, los participantes crean un túnel: los datos se reciben a través del puerto 22 y se envían al cliente a través de la red local.

Clientes SSH

El cliente SSH suele ser tu propio PC o el que utilices para establecer una conexión con el servidor. Para lograr esto, puedes o debes (dependiendo del sistema operativo) instalar un software separado que establezca una conexión SSH. Estos programas también suelen llamarse clientes SSH. De mano de la misma SSH Communication Security podemos encontrar el cliente de pago Tectia SSH, que además proporciona un software de servidor. Además, hay muchas alternativas libres, como el software de código abierto PuTTy para Windows y Linux o lsh, que funciona en todos los sistemas operativos basados en Unix.

Algunos programas proporcionan a los usuarios una interfaz gráfica que simplifica la configuración y la implementación de SSH. En principio, Secure Shell también puede ejecutarse desde la línea de comandos, incluso sin necesidad de instalación adicional, en macOS y otros sistemas operativos similares a Unix.

Servidor SSH

El servidor SSH es la parte opuesta al cliente. El término también se utiliza en este contexto para el software en sí. Gran parte del software cliente también funciona en servidores. Además, hay programas diseñados exclusivamente para servidores SSH y es común iniciar SSH en servidores en el momento del arranque, lo que garantiza que puedes acceder al servidor desde fuera en cualquier momento a través de SSH.

Por otra parte, no es necesario que el servidor SSH sea en realidad un servidor en sentido estricto, es decir, que se encuentre en un centro de datos remoto. Los usuarios también pueden instalar un servidor SSH en su propio PC en casa para beneficiarse de las ventajas del reenvío de puertos, por ejemplo.

Técnicas del protocolo SSH

El protocolo SSH es más seguro en comparación con otros protocolos como Telnet y las técnicas de cifrado son bastante mejores que las de otros protocolos. Existen tres técnicas de cifrado principales que utiliza SSH, que son las siguientes:

  1. Hashing: El hash es una técnica de autenticación que se utiliza para garantizar si los datos recibidos provienen de un remitente genuino y no han sido alterados. Utiliza una función hash para generar un código hash a partir de los datos recibidos. Sin embargo, no es posible regenerar los datos a partir del valor hash. Este valor hash se verifica tanto en el extremo del remitente como en el del receptor. Si coincide, los datos se autentican.
  2. Cifrado simétrico: esta técnica genera una clave única para el cifrado y el descifrado. La clave generada se distribuye entre los hosts y los clientes y crea una conexión segura. Es la técnica de cifrado más básica. Funciona mejor cuando los datos se cifran y descifran en la misma máquina.
  3. Cifrado asimétrico: La técnica de cifrado asimétrico se considera más segura que otras tecnologías, ya que utiliza las claves ssh (claves públicas y privadas) para el cifrado. La clave pública se distribuye a otras máquinas para crear una conexión segura, mientras que la clave privada solo la utiliza la máquina cliente. La conexión segura se establece mediante las claves pública y privada.

Ataque y Defensa del Protocolo SSH

El protocolo SSH (Secure Shell) es una herramienta esencial para la administración segura de sistemas y redes. SSH permite a los administradores y usuarios autenticarse y ejecutar comandos de forma remota en servidores, todo ello de manera cifrada. A pesar de su diseño robusto, SSH no es inmune a ataques si no se configura y gestiona adecuadamente. En este artículo, se explorarán en detalle los tipos de ataques más comunes dirigidos a SSH y las mejores prácticas de defensa para asegurar este protocolo crítico.

SSH fue desarrollado para reemplazar protocolos inseguros como Telnet, proporcionando una forma segura de comunicación y administración remota. SSH opera en la capa de aplicación del modelo OSI y utiliza el puerto TCP 22 por defecto. Ofrece tres capas principales de seguridad:

  1. Transporte: Proporciona confidencialidad, integridad y autenticación del servidor utilizando criptografía.
  2. Autenticación de Usuario: Permite la autenticación segura de usuarios mediante contraseñas, claves públicas, o autenticación multifactor.
  3. Conexión: Administra la capa de sesión, permitiendo la multiplexación de múltiples canales lógicos sobre una sola conexión SSH.

1. Ataques de Fuerza Bruta

Descripción: Los ataques de fuerza bruta son uno de los métodos más comunes utilizados para comprometer SSH. En estos ataques, los atacantes intentan repetidamente adivinar el nombre de usuario y la contraseña hasta que encuentran una combinación correcta. SSH es particularmente vulnerable a estos ataques si se utilizan contraseñas débiles o predeterminadas.

Métodos de Ejecución:

  • Automatización: Herramientas como Hydra, Medusa y Burp Suite pueden ser utilizadas para automatizar intentos de autenticación con miles de combinaciones de usuario y contraseña.

Consecuencias:

  • Acceso No Autorizado: Una vez que el atacante adivina las credenciales correctas, puede obtener acceso completo al sistema, lo que podría resultar en la ejecución de comandos maliciosos, robo de datos, o incluso un compromiso completo del servidor.

Defensa Contra Ataques de Fuerza Bruta:

  • Contraseñas Fuertes y Complejas: Implementar políticas de contraseñas que requieran el uso de caracteres alfanuméricos, mayúsculas, minúsculas y símbolos.
  • Autenticación Basada en Claves Públicas: Utilizar claves SSH en lugar de contraseñas para la autenticación. Las claves públicas son mucho más difíciles de adivinar o comprometer.
  • Limitar Intentos de Inicio de Sesión: Configurar el servidor SSH para bloquear temporalmente o permanentemente una cuenta después de un número determinado de intentos fallidos.
  • Fail2Ban: Utilizar herramientas como Fail2Ban para monitorizar intentos de acceso fallidos y bloquear automáticamente las direcciones IP sospechosas.

Ataque por fuerza bruta con Hidra y MS

Este tipo de ataque se realiza fácilmente con herramientas como HydraMedusa o Patator.

Un comando típico con Hydra para atacar un servidor SSH podría ser:

hydra -l usuario -P /ruta/al/diccionario.txt ssh://192.168.1.100

Aquí, Hydra intenta acceder al servidor 192.168.1.100 con el usuario usuario probando todas las contraseñas del archivo de diccionario.

Metasploit tiene una función auxiliar que usaremos en el servicio SSH que se ejecuta en el puerto 22. Una vez que obtengamos nuestra sesión a través de él, lo actualizaremos a Meterpreter.

Este módulo probará los inicios de sesión ssh en una variedad de máquinas e informará los inicios de sesión exitosos. Si ha cargado un complemento de base de datos y se ha conectado a una base de datos, este módulo registrará los inicios de sesión y los hosts exitosos para que pueda realizar un seguimiento de su acceso.

2. Ataques de Hombre en el Medio (MitM)

Descripción: Un ataque MitM contra SSH ocurre cuando un atacante intercepta y potencialmente altera la comunicación entre el cliente y el servidor SSH. Aunque SSH utiliza cifrado, si un atacante logra hacerse pasar por el servidor o el cliente, puede capturar datos sensibles o modificar la información transmitida.

Métodos de Ejecución:

  • Suplantación de Clave del Servidor: Un atacante puede presentar una clave pública falsa al cliente, haciéndose pasar por el servidor SSH legítimo, y capturar el tráfico en texto claro antes de reenviarlo al servidor real.

Consecuencias:

  • Intercepción de Datos Sensibles: El atacante puede capturar credenciales de autenticación, comandos ejecutados, y datos transferidos entre el cliente y el servidor.
  • Modificación de Tráfico: El atacante puede alterar los comandos enviados por el cliente o las respuestas del servidor, lo que podría resultar en la ejecución de acciones no autorizadas.

Defensa Contra Ataques MitM:

  • Verificación de Claves del Servidor: Configurar los clientes SSH para que verifiquen la huella digital (fingerprint) del servidor SSH antes de establecer la conexión, asegurando que la clave pública del servidor no ha sido cambiada.
  • SSH Fingerprint Validation: Utilizar métodos adicionales de validación, como la verificación manual de la huella digital del servidor en la primera conexión.
  • Certificados SSH: Implementar un sistema de autoridades de certificación (CA) para emitir y verificar certificados SSH, garantizando la autenticidad de las claves del servidor.

3. Robo de Claves Privadas

Descripción: Las claves SSH son un método preferido de autenticación debido a su seguridad superior en comparación con las contraseñas. Sin embargo, si una clave privada es comprometida, el atacante puede utilizarla para acceder a cualquier servidor que acepte esa clave.

Métodos de Ejecución:

  • Exfiltración de Claves Privadas: Los atacantes pueden utilizar malware, phishing o técnicas de ingeniería social para robar la clave privada almacenada en el sistema del usuario.
  • Acceso Físico: Si un atacante obtiene acceso físico a un dispositivo donde se almacena una clave privada sin cifrar, puede copiarla y utilizarla para acceder a servidores remotos.

Consecuencias:

  • Acceso No Autorizado a Múltiples Sistemas: Si la clave privada es utilizada en varios servidores, el atacante podría obtener acceso no autorizado a múltiples sistemas, comprometiendo una gran parte de la infraestructura.
  • Escalada de Privilegios: Con acceso a servidores remotos, el atacante podría escalar sus privilegios y obtener control total sobre los sistemas afectados.

Defensa Contra el Robo de Claves Privadas:

  • Cifrado de Claves Privadas: Asegurarse de que todas las claves privadas estén cifradas con una contraseña segura, de modo que incluso si son robadas, no puedan ser utilizadas sin la contraseña de descifrado.
  • Uso de Agentes SSH: Utilizar agentes SSH para gestionar claves privadas y evitar que estén expuestas en la memoria o en archivos sin cifrar.
  • Implementación de MFA: Complementar la autenticación basada en claves con un segundo factor de autenticación para aumentar la seguridad.

4. Ataques de Fuerza Bruta Inversa

Descripción: En un ataque de fuerza bruta inversa, el atacante conoce la clave privada del usuario pero intenta adivinar los nombres de usuario válidos en el servidor. Esto es particularmente peligroso si la clave privada se ha filtrado o ha sido robada.

Métodos de Ejecución:

  • Adivinación de Nombres de Usuario: El atacante utiliza la clave privada para intentar iniciar sesión en el servidor SSH con diferentes combinaciones de nombres de usuario.

Consecuencias:

  • Acceso No Autorizado: Si el atacante encuentra un nombre de usuario válido que coincide con la clave privada, puede obtener acceso al servidor.

Defensa Contra Fuerza Bruta Inversa:

  • Restringir el Uso de Claves Públicas: Configurar el servidor para aceptar solo claves públicas para nombres de usuario específicos y conocidos.
  • Monitoreo de Acceso SSH: Implementar herramientas de monitoreo para detectar patrones de ataque de fuerza bruta inversa y bloquear IPs sospechosas.

5. Explotación de Vulnerabilidades en Implementaciones de SSH

Descripción: A pesar de ser un protocolo seguro, las implementaciones de servidores SSH pueden contener vulnerabilidades que, si no se parchean, pueden ser explotadas por atacantes para comprometer el servidor.

Métodos de Ejecución:

  • Explotación de Vulnerabilidades: Los atacantes pueden utilizar exploits disponibles públicamente para aprovechar vulnerabilidades específicas en versiones no parcheadas de servidores SSH.

Consecuencias:

  • Compromiso del Servidor: El atacante podría obtener acceso completo al servidor, ejecutar código malicioso, o interrumpir los servicios.
  • Denegación de Servicio (DoS): Un ataque exitoso podría deshabilitar el servidor SSH, impidiendo que los usuarios legítimos accedan al sistema.

Defensa Contra Explotación de Vulnerabilidades:

  • Actualización Regular del Software: Asegurarse de que el software del servidor SSH esté actualizado con los últimos parches de seguridad.
  • Reducción de Superficie de Ataque: Deshabilitar características de SSH que no sean necesarias, como el reenvío de X11 o el acceso por contraseña, para minimizar el riesgo de explotación.

Mejores Prácticas para Asegurar SSH

  1. Uso de Claves SSH en Lugar de Contraseñas
    • Descripción: Las claves SSH ofrecen una mayor seguridad que las contraseñas debido a su complejidad y la dificultad de adivinarlas mediante ataques de fuerza bruta.
    • Implementación: Configurar el servidor para aceptar solo la autenticación basada en claves, deshabilitando completamente el uso de contraseñas.
  2. Limitación de Acceso a SSH
    • Descripción: Restringir el acceso SSH a direcciones IP específicas o rangos de IP mediante listas de control de acceso (ACL) en firewalls o routers.
    • Beneficios: Limitar el acceso reduce significativamente la superficie de ataque y la exposición a intentos de acceso no autorizados.

Cómo Asegurar SSH en Linux

Para proteger SSH de posibles ataques, es crucial seguir ciertas mejores prácticas de seguridad. A continuación, algunos de los pasos más importantes para asegurar tu servidor SSH:

1. Deshabilitar el Acceso de Root

Es una práctica común deshabilitar el acceso directo al usuario root a través de SSH, lo que obliga a los administradores a iniciar sesión con un usuario no privilegiado antes de escalar permisos. Para deshabilitar el acceso root, modifica el archivo de configuración SSH /etc/ssh/sshd_config y cambia la siguiente línea:

PermitRootLogin no

2. Autenticación basada en Claves Públicas

La autenticación por clave pública/privada es mucho más segura que las contraseñas. En lugar de ingresar una contraseña, los usuarios deben tener una clave privada que coincida con una clave pública registrada en el servidor. Esto hace que sea prácticamente imposible para los atacantes realizar ataques de fuerza bruta.

Para configurar la autenticación por claves:

Genera un par de claves en tu máquina local:

ssh-keygen -t rsa

Luego, copia la clave pública al servidor:

ssh-copy-id usuario@servidor_remoto

Asegúrate de que el archivo de configuración SSH en el servidor (/etc/ssh/sshd_config) esté configurado para aceptar solo autenticación por claves:

PasswordAuthentication no
PubkeyAuthentication yes

3. Usar Puertos No Estándar

Cambiar el puerto por defecto de SSH (22) a otro menos común puede reducir la cantidad de ataques automatizados de fuerza bruta. Aunque esto no es una medida de seguridad fuerte por sí misma, ayuda a reducir la exposición a escáneres de red. Para cambiar el puerto, edita el archivo de configuración /etc/ssh/sshd_config y cambia la siguiente línea:

Port 2222

4. Implementar Autenticación de Dos Factores (2FA)

SSH puede configurarse para requerir autenticación de dos factores, lo que añade una capa adicional de seguridad. Herramientas como Google Authenticator pueden integrarse con SSH para solicitar un segundo factor, como un código de verificación temporal.

5. Restringir el Acceso por IP

Usa un firewall como iptables o ufw para limitar el acceso al puerto SSH solo a IPs de confianza. También puedes configurar el archivo /etc/hosts.allow y /etc/hosts.deny para permitir o denegar conexiones SSH de ciertas direcciones IP.

6. Configurar el Tiempo de Expiración de Sesiones Inactivas

Para prevenir que sesiones SSH inactivas permanezcan abiertas y accesibles, puedes configurar un tiempo de expiración. En el archivo /etc/ssh/sshd_config, añade o ajusta los siguientes parámetros:

ClientAliveInterval 300
ClientAliveCountMax 0

Esto cierra sesiones inactivas después de 5 minutos.

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.

Puntos clave del artículo y sus resúmenes:

  1. ARP y su importancia en redes locales:
    • ARP permite mapear direcciones IP (lógicas) a direcciones MAC (físicas) para facilitar la comunicación en redes locales.
    • Las solicitudes y respuestas ARP aseguran que los dispositivos se reconozcan y se comuniquen dentro de la misma LAN.
  2. Comando arp en Linux:
    • Visualiza y manipula la tabla ARP con comandos como arp -a para listar todas las entradas o arp -d [IP] para eliminar una entrada.
    • Se pueden agregar entradas estáticas para evitar resoluciones dinámicas repetidas.
  3. Ataques relacionados con ARP (Spoofing/Poisoning):
    • Los atacantes pueden redirigir el tráfico engañando a dispositivos para que asocien una dirección MAC falsa con una IP legítima.
    • Herramientas como Ettercap y Bettercap son utilizadas tanto para auditorías de seguridad como para ataques.
  4. Telnet y sus vulnerabilidades:
    • Telnet transmite datos, incluidas credenciales, en texto plano, lo que lo hace inseguro frente a ataques como sniffing.
    • Se recomienda usar SSH como alternativa más segura debido a su cifrado.
  5. SSH como solución segura:
    • SSH encripta datos y proporciona autenticación robusta, ideal para conexiones remotas.
    • La autenticación basada en claves públicas/privadas y el uso de MFA (autenticación multifactor) son prácticas recomendadas.
  6. FTP y su funcionamiento:
    • Permite la transferencia de archivos entre sistemas conectados en red, usando los puertos 20 y 21.
    • FTPS o SFTP son alternativas seguras que añaden cifrado a las transferencias.
  7. Ataques comunes en FTP:
    • Sniffing: Credenciales en texto claro pueden ser interceptadas.
    • Fuerza bruta: Intentos masivos de adivinar credenciales.
    • Explotación de vulnerabilidades: Uso de herramientas como Hydra y Metasploit para comprometer servidores FTP.
  8. Defensas contra ataques en protocolos:
    • ARP: Configurar entradas estáticas, usar detección de ataques ARP.
    • Telnet: Migrar a SSH, cifrar conexiones mediante VPN.
    • FTP: Migrar a FTPS/SFTP, restringir accesos y monitorear actividades.
  9. Buenas prácticas generales:
    • Mantener sistemas y software actualizados.
    • Implementar autenticación multifactor (MFA).
    • Monitorear actividades de red en busca de anomalías.
    • Limitar el acceso a servicios a IPs confiables mediante firewalls.

Este artículo es una guía integral para comprender la importancia de los protocolos de red, sus vulnerabilidades, y cómo proteger sistemas contra amenazas comunes.

Pon en práctica lo aprendido

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

10 Preguntas Clave

  1. ¿Qué es el Protocolo de Resolución de Direcciones (ARP) y cuál es su función principal en una red?
  2. Explica cómo funciona el proceso de solicitud y respuesta en ARP.
  3. ¿Cuáles son los riesgos asociados con ARP Spoofing y cómo se pueden mitigar?
  4. ¿Qué diferencia hay entre Telnet y SSH en términos de seguridad?
  5. Menciona las principales desventajas de usar Telnet para conexiones remotas.
  6. ¿Cuáles son los modos principales de funcionamiento del protocolo FTP?
  7. ¿Cómo protege SSH las comunicaciones contra ataques de hombre en el medio (MitM)?
  8. Describe los pasos básicos para configurar la autenticación por clave pública en SSH.
  9. ¿Cuáles son los riesgos de usar FTP sin cifrado y qué alternativas más seguras existen?
  10. ¿Qué técnicas de ataque son comunes en servidores FTP y cómo se pueden prevenir?

10 Ejercicios Prácticos

  1. Visualización de la tabla ARP en Linux: Ejecuta el comando arp -a en tu sistema y describe las entradas que aparecen.
  2. Configurar una entrada ARP estática: Usa el comando arp -s para asignar manualmente una dirección IP a una dirección MAC específica y verifica el resultado en la tabla ARP.
  3. Comparar Telnet y SSH: Configura una conexión con Telnet y otra con SSH, y analiza las diferencias en términos de seguridad y datos transmitidos.
  4. Ejecutar un ataque de fuerza bruta en Telnet (Simulado): Usa Hydra para realizar un intento simulado de fuerza bruta contra un servidor Telnet.
  5. Configurar SSH en Linux: Genera claves SSH con ssh-keygen, copia la clave pública al servidor remoto con ssh-copy-id y establece una conexión segura.
  6. Transferencia de archivos con FTP: Usa un cliente FTP como FileZilla para cargar y descargar archivos entre tu máquina local y un servidor remoto.
  7. Probar el modo pasivo de FTP: Configura y ejecuta transferencias de archivos utilizando el modo pasivo y explica cuándo resulta útil.
  8. Habilitar el modo estricto en SSH: Modifica el archivo de configuración /etc/ssh/sshd_config para deshabilitar las contraseñas y habilitar únicamente la autenticación basada en claves.
  9. Mitigar riesgos de ARP Spoofing: Implementa la configuración de entradas ARP estáticas para mitigar el envenenamiento de ARP en una red local.
  10. Simular una captura de tráfico FTP: Usa Wireshark para analizar el tráfico de una transferencia FTP y observa cómo las credenciales se envían en texto plano.

Respuestas a las 10 Preguntas

  1. ¿Qué es el Protocolo de Resolución de Direcciones (ARP) y cuál es su función principal en una red?
    ARP es un protocolo de red que mapea direcciones IP (nivel 3 del modelo OSI) a direcciones MAC (nivel 2) en redes locales. Esto facilita la comunicación entre dispositivos conectados en la misma red.
  2. Explica cómo funciona el proceso de solicitud y respuesta en ARP.
    • Un dispositivo envía una solicitud ARP por broadcast, preguntando «¿Quién tiene la dirección IP X.X.X.X?».
    • El dispositivo con esa dirección IP responde por unicast, indicando su dirección MAC.
    • La tabla ARP del solicitante se actualiza con la dirección MAC recibida.
  3. ¿Cuáles son los riesgos asociados con ARP Spoofing y cómo se pueden mitigar?
    Riesgos: Intercepción de datos, ataques MitM, redirección de tráfico, y envenenamiento de caché ARP.
    Mitigación: Usar ARP estático, herramientas de detección de spoofing, y redes conmutadas con seguridad mejorada como IEEE 802.1X.
  4. ¿Qué diferencia hay entre Telnet y SSH en términos de seguridad?
    Telnet transmite datos en texto plano, incluidas las contraseñas, lo que lo hace vulnerable a sniffing. SSH cifra todo el tráfico, asegurando confidencialidad e integridad de los datos.
  5. Menciona las principales desventajas de usar Telnet para conexiones remotas.
    • Transmisión de datos sin cifrar.
    • Vulnerabilidad a sniffing y ataques MitM.
    • Falta de autenticación robusta.
  6. ¿Cuáles son los modos principales de funcionamiento del protocolo FTP?
    • Modo Activo: El cliente espera conexiones entrantes desde el servidor.
    • Modo Pasivo: El cliente inicia ambas conexiones, útil en redes con firewalls.
  7. ¿Cómo protege SSH las comunicaciones contra ataques de hombre en el medio (MitM)?
    SSH usa autenticación mutua de claves, cifrado de extremo a extremo y hashing para garantizar que los datos no sean alterados ni interceptados.
  8. Describe los pasos básicos para configurar la autenticación por clave pública en SSH.
    • Generar un par de claves con ssh-keygen.
    • Copiar la clave pública al servidor remoto con ssh-copy-id.
    • Configurar el servidor SSH para aceptar autenticación por claves.
  9. ¿Cuáles son los riesgos de usar FTP sin cifrado y qué alternativas más seguras existen?
    Riesgos: Robo de credenciales, sniffing de datos, y ataques MitM.
    Alternativas: SFTP (FTP sobre SSH) y FTPS (FTP sobre SSL/TLS).
  10. ¿Qué técnicas de ataque son comunes en servidores FTP y cómo se pueden prevenir?
    Técnicas: Sniffing de contraseñas, ataques de fuerza bruta, y explotación de vulnerabilidades.
    Prevención: Usar FTPS/SFTP, limitar intentos de inicio de sesión, y mantener el software actualizado.

Respuestas a los 10 Ejercicios

  1. Visualización de la tabla ARP en Linux:
    Al ejecutar arp -a, la salida incluye la dirección IP, la dirección MAC y la interfaz asociada para cada entrada. Ejemplo: 192.168.1.1 00:11:22:33:44:55 eth0
  2. Configurar una entrada ARP estática:
    Comando: sudo arp -s 192.168.1.10 00:11:22:33:44:55.
    Verificación: arp -a mostrará la entrada añadida como estática.
  3. Comparar Telnet y SSH:
    Durante las conexiones, puedes observar con Wireshark que Telnet transmite en texto claro, mientras que SSH encripta los datos.
  4. Ejecutar un ataque de fuerza bruta en Telnet (Simulado):
    Comando: hydra -l admin -P /path/to/passwords.txt telnet://192.168.1.10 Resultado esperado: Credenciales exitosas si las contraseñas coinciden.
  5. Configurar SSH en Linux:
    • Generar claves: ssh-keygen.
    • Copiar clave pública: ssh-copy-id user@remote-server.
    • Conexión: ssh user@remote-server.
  6. Transferencia de archivos con FTP:
    Usar FileZilla para subir y descargar archivos. Ejemplo:
    • Conectar al servidor con usuario y contraseña.
    • Arrastrar archivos entre la máquina local y el servidor.
  7. Probar el modo pasivo de FTP:
    Configurar el cliente FTP en modo pasivo y transferir un archivo grande. Observa cómo se gestiona la conexión de datos.
  8. Habilitar el modo estricto en SSH:
    Editar /etc/ssh/sshd_config para incluir: PasswordAuthentication no Reiniciar el servicio SSH: sudo service ssh restart.
  9. Mitigar riesgos de ARP Spoofing:
    Configurar entradas ARP estáticas para dispositivos críticos en la red. Ejemplo: arp -s 192.168.1.1 00:11:22:33:44:55
  10. Simular una captura de tráfico FTP:
    Usar Wireshark para capturar tráfico en el puerto 21. Observar cómo las credenciales y comandos se transmiten en texto claro.

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!!!