Considera un sistema de detección de intrusos (IDS)
Hay un puerto de red para cada tipo de tráfico. Algunos puertos corren más riesgo que otros. Estos son los peores culpables y lo que puedes hacer para protegerlos.
Las conexiones de red e Internet del Protocolo de Control de Transmisión/Protocolo de Internet (TCP/IP) se realizan desde una dirección IP a otra. Para mayor comodidad, podemos usar un nombre de sitio web como apañados.es, pero es la dirección IP subyacente la que se usa para enrutar la conexión al servidor web apropiado. Lo mismo también funciona a la inversa. El tráfico de red que llega a tu computadora se ha dirigido hacia tu dirección IP.
Direccionamiento de red
Tu computadora tendrá muchos programas y servicios ejecutándose dentro de ella. Es posible que en tu escritorio tengas abiertos una aplicación de correo electrónico y un navegador. Quizás utilices un cliente de chat como Slack o Microsoft Teams. Si administras máquinas remotas, es posible que estés usando una conexión de shell segura (SSH). Si trabajas desde casa y necesitas conectarte a tu oficina, puedes usar una conexión de Protocolo de escritorio remoto (RDP) o una conexión de Red privada virtual (VPN).
La dirección IP solo identifica la computadora. No puede ser más granular que eso. Pero el verdadero punto final de una conexión de red es la ejecución de una aplicación o servicio. Entonces, ¿Cómo sabe tu computadora a qué aplicación enviar cada paquete de red? La respuesta es usar puertos.
Cuando un mensajero entrega un paquete a un hotel, la dirección postal identifica el edificio. El número de habitación identifica la habitación y el huésped del hotel. La dirección de la calle es como la dirección IP y el número de habitación es como la dirección del puerto. Las aplicaciones y los servicios utilizan puertos numerados específicos. Entonces, el destino real de un paquete de red es un puerto en una dirección IP. Eso es suficiente para identificar la aplicación o servicio en una computadora en particular a la que está destinado el paquete.
Numeración de puertos estándar
Algunos puertos están dedicados a tipos específicos de tráfico. Estos se denominan puertos conocidos. Otros puertos son registrados por aplicaciones y reservados para su uso. Estos son los puertos registrados. Hay un tercer conjunto de puertos que están disponibles para cualquier aplicación. Se solicitan, asignan, utilizan y liberan según las necesidades. Estos se denominan puertos efímeros.
En una conexión se utilizará una combinación de puertos. La conexión de red necesita un puerto en el extremo local de la conexión, en la computadora, para conectarse al extremo remoto de la conexión, por ejemplo, un servidor web. Si el servidor web utiliza el Protocolo Seguro de Transferencia de Hipertexto (HTTPS), el puerto remoto será el puerto 443. Tu computadora usará cualquiera de los puertos efímeros libres para hacer una conexión al puerto 443 en la dirección IP del servidor web.
Hay 65535 puertos TCP/IP (y el mismo número de puertos del Protocolo de Datagramas de Usuario (UDP)).
0 - 1023: puertos conocidos. Estos son asignados a los servicios por la Autoridad de Números Asignados de Internet (IANA). Por ejemplo, SSH usa el puerto 22 de forma predeterminada, los servidores web escuchan conexiones seguras en el puerto 443 y el tráfico del Protocolo simple de transferencia de correo (SMTP) usa el puerto 25.
1024 - 49151: puertos registrados. Las organizaciones pueden hacer solicitudes a la IANA para un puerto que se les registrará y se les asignará para su uso con una aplicación. Aunque estos puertos registrados se denominan semirreservados, deben considerarse reservados. Se denominan semi-reservados porque es posible que ya no sea necesario el registro de un puerto y el puerto se libere para su reutilización. Sin embargo, a pesar de que actualmente no está registrado, el puerto todavía está en la lista de puertos registrados. Se mantiene listo para ser registrado por otra organización. Un ejemplo de puerto registrado es el puerto 3389. Este es el puerto asociado con las conexiones RDP.
49152 - 65535: Puertos efímeros. Estos se utilizan de forma ad-hoc por los programas del cliente. Puede utilizarlos en cualquier aplicación que escribas. Por lo general, se utilizan como el puerto local dentro de la computadora cuando está transmitiendo a un puerto conocido o reservado en otro dispositivo para solicitar y establecer una conexión.
Ningún puerto es intrínsecamente seguro
Cualquier puerto dado no es más seguro o en riesgo que cualquier otro puerto. Un puerto es un puerto. Es el uso que se le da al puerto, y la seguridad con la que se gestiona, lo que determina si un puerto es seguro.
El protocolo que se utiliza para comunicarse a través de un puerto, el servicio o aplicación que consume o genera el tráfico que pasa por el puerto debe tener implementaciones actualizadas y dentro del período de soporte de su fabricante. Deben recibir actualizaciones de seguridad y corrección de errores y estas deben aplicarse de manera oportuna.
A continuación, se muestran algunos puertos comunes y cómo se puede abusar de ellos.
Puerto 21, Protocolo de transferencia de archivos (FTP)
Un puerto FTP inseguro que aloja un servidor FTP es una gran falla de seguridad. Muchos servidores FTP tienen vulnerabilidades que pueden permitir la autenticación anónima, el movimiento lateral dentro de la red, el acceso a técnicas de escalada de privilegios y, debido a que muchos servidores FTP pueden controlarse mediante scripts, un medio para implementar scripts entre sitios.
Los programas de malware como Dark FTP, Ramen y WinCrash han hecho uso de puertos y servicios FTP inseguros.
Puerto 22, canal seguro
Las cuentas de Secure Shell (SSH) configuradas con contraseñas cortas, no únicas, reutilizadas o predecibles son inseguras y pueden verse comprometidas fácilmente por ataques de diccionario de contraseñas. Se han descubierto muchas vulnerabilidades en implementaciones pasadas de servicios SSH y demonios, y aún se están descubriendo. El parche es vital para mantener la seguridad con SSH.
Puerto 23, Telnet
Telnet es un servicio heredado y debe retirarse. No hay justificación para utilizar este medio antiguo e inseguro de comunicación basada en texto. Toda la información que se envía y recibe a través del puerto 23 se envía en texto sin formato. No hay cifrado en absoluto.
Los actores de amenazas pueden escuchar a escondidas cualquier comunicación Telnet y pueden elegir fácilmente las credenciales de autenticación. Pueden realizar ataques de intermediario (man-in-the-middle) inyectando paquetes maliciosos especialmente diseñados en los flujos de texto sin cifrado.
Incluso un atacante remoto no autenticado puede aprovechar una vulnerabilidad de desbordamiento de búfer en el demonio o servicio Telnet y, al crear paquetes maliciosos e inyectarlos en el flujo de texto, ejecutar procesos en el servidor remoto. Esta es una técnica conocida como ejecución de código remota (o arbitraria) (RCE).
Puerto 80, Protocolo de Transferencia de Hipertexto
El puerto 80 se utiliza para el tráfico el no seguro Protocolo de Transferencia de Hipertexto (HTTP). HTTPS prácticamente ha reemplazado a HTTP, pero todavía existe algo de HTTP en la web. Otros puertos que se usan comúnmente con HTTP son los puertos 8080, 8088, 8888. Estos tienden a usarse en servidores HTTP más antiguos y proxies web.
El tráfico web no seguro y los puertos asociados son susceptibles a falsificaciones y secuencias de comandos entre sitios, ataques de desbordamiento de búfer y ataques de inyección SQL.
Puerto 1080, SOCKS Proxies
SOCKS es un protocolo utilizado por los proxies SOCKS para enrutar y reenviar paquetes de red en conexiones TCP a direcciones IP. El puerto 1080 fue uno de los puertos elegidos en un momento para malwares como Mydoom y muchos gusanos y ataques de denegación de servicio.
Puerto 4444, Protocolo de Control de Transporte
Algunos programas de rootkit, puerta trasera y caballo de Troya se abren y utilizan el puerto 4444. Utilizan este puerto para espiar el tráfico y las comunicaciones, para sus propias comunicaciones y para exfiltrar datos de la computadora comprometida. También se utiliza para descargar nuevas cargas útiles maliciosas. Malware como el gusano Blaster y sus variantes usaban el puerto 4444 para establecer puertas traseras.
Puerto 6660 - 6669, Chat de Tetransmisión de Internet
Internet Relay Chat (IRC) se inició en 1988 en Finlandia y aún continúa. Necesitarías tener un caso de negocios sólido para permitir el tráfico de IRC en tu organización en estos días.
Se han descubierto y explotado innumerables vulnerabilidades de IRC a lo largo de los veinte años que lleva en uso. El demonio UnrealIRCD tenía una falla en el 2009 que hizo que la ejecución remota de código fuera un asunto trivial.
Puerto 161, Protocolo de Mensajería de Red Pequeña
Algunos puertos y protocolos pueden brindar a los atacantes mucha información sobre su infraestructura. El puerto 161 UDP es atractivo para los actores de amenazas porque se puede usar para sondear información de los servidores, tanto sobre ellos mismos como sobre el hardware y los usuarios que se encuentran detrás de ellos.
El puerto 161 es utilizado por el Protocolo simple de administración de red que permite a los actores de amenazas solicitar información como hardware de infraestructura, nombres de usuario, nombres de recursos compartidos de red y otra información confidencial que es, para el actor de la amenaza, inteligencia procesable.
Puerto 53, Servicio de Nombres de Dominio
Los actores de amenazas deben considerar la ruta de exfiltración que utilizará su malware para transmitir datos y archivos desde su organización a sus propios servidores.
El puerto 53 se ha utilizado como el puerto de exfiltración elegido porque rara vez se supervisa el tráfico a través del Sistema de nombres de dominio. Los actores de amenazas disfrazarían libremente los datos robados como tráfico DNS y los enviarían a su propio servidor DNS falso. El servidor DNS falso aceptó el tráfico y restauró los datos a su formato original.
Números memorizables
Algunos autores de malware eligen secuencias de números fáciles de recordar o números repetidos para usar como puertos. Los puertos 234, 6789, 1111, 666 y 8888 se han utilizado para esto. La detección de cualquiera de estos números de puerto de aspecto extraño en uso en tu red debería impulsar una investigación más profunda.
El puerto 31337 es otro número de puerto común que puede usar el malware. Ha sido utilizado por al menos 30 variantes de malware, incluidos Back Orifice y Bindshell.
Cómo proteger estos puertos
Todos los puertos deben estar cerrados a menos que exista un caso comercial documentado, revisado y aprobado. Haz lo mismo con los servicios expuestos. Las contraseñas predeterminadas deben cambiarse y reemplazarse por contraseñas sólidas y únicas. Si es posible, se debe utilizar la autenticación de dos factores.
Todos los servicios, protocolos, firmware y aplicaciones aún deben estar dentro de los ciclos de vida de soporte de los fabricantes, y deben estar disponibles para ellos parches de seguridad y corrección de errores.
Supervisa los puertos que están en uso en tu red e investiga cualquier rareza o puertos inexplicablemente abiertos. Comprende cómo se ve el uso normal de tus puertos para poder identificar el comportamiento inusual. Realiza exploraciones de puertos y pruebas de penetración.
Cierra el puerto 23 y deja de usar Telnet. Seriamente. Detenlo.
Los puertos SSH se pueden proteger mediante la autenticación de clave pública y la autenticación de dos factores. También ayudará la configuración de tu red para usar un número de puerto diferente para el tráfico SSH.
Si debes usar IRC, asegúrate de que esté detrás de un firewall y solicita a los usuarios de IRC que utilicen una VPN en su red para conectarse y usarlo. No permitas que el tráfico externo llegue directamente a tu IRC.
Supervisa y filtra el tráfico de DNS. Nada debe salir del puerto 53 salvo solicitudes de DNS genuinas.
Adopta una estrategia de defensa en profundidad y convierte tus defensas en varias capas. Utiliza firewalls basados en host y en red. Considera un sistema de detección de intrusos (IDS) como el gratuito y de código abierto Snort.
Deshabilita los proxies que no configuraste o que ya no necesitas.
Algunas cadenas de retorno SNMP tienen credenciales predeterminadas de texto sin formato. Desactiva esto.
Elimina los encabezados de respuesta HTTP y HTTPS no deseados y desactiva los banners que se incluyen de forma predeterminada en las respuestas de algún hardware de red. Estos brindan innecesariamente información que solo beneficia a los actores de la amenaza.