¿Qué es el escaneo de puertos?
En redes informáticas, un “puerto” es un concepto abstracto que se utiliza para identificar el punto de acceso de red de un proceso o servicio específico que se ejecuta en un ordenador. Cada puerto tiene un número único, que va del 0 al 65535; este número permite al ordenador saber a qué aplicación debe enviar los datos recibidos.
Puedes imaginar un ordenador como un gran edificio, y los puertos como los números de las puertas de sus distintas habitaciones. Algunos “números de puerta” comunes son: el servicio web HTTP suele usar el puerto 80, las páginas web seguras HTTPS usan el puerto 443, y el servicio de correo electrónico SMTP usa el puerto 25. Cuando un paquete de datos llega al ordenador, el sistema lo “entrega” con precisión al servicio o aplicación correspondiente según el número de puerto.
¿Qué es el escaneo de puertos?
El escaneo de puertos consiste en enviar paquetes de datos específicos a distintos puertos de una máquina objetivo y, a partir de las respuestas recibidas, determinar qué puertos están abiertos o cerrados. Es como si alguien llamara puerta por puerta desde fuera de un edificio para saber, según si alguien responde o no, qué habitaciones están ocupadas y cuáles están vacías.
El escaneo de puertos en sí mismo es una técnica neutral: los administradores de red la utilizan para comprobar vulnerabilidades de seguridad del sistema, los profesionales de pruebas de penetración la usan para evaluar la capacidad de defensa de un sistema, y los atacantes pueden utilizarla para buscar puntos de entrada para una intrusión.
¿Cómo puede un sitio web realizar un escaneo de puertos en el navegador?
Puede parecer extraño: ¿cómo puede una página web normal escanear los puertos de tu ordenador? La explicación está en ciertos mecanismos de funcionamiento del navegador.
Método de escaneo basado en tiempo
Las primeras técnicas de escaneo de puertos desde el navegador se basaban en “ataques de temporización”. Cuando una página web realiza una solicitud a un puerto mediante XMLHttpRequest o fetch:
Si el puerto está cerrado, el navegador recibe de inmediato una respuesta de “conexión rechazada” y la solicitud falla rápidamente
Si el puerto está abierto, el navegador espera la respuesta del servidor, lo que tarda más tiempo
Midiendo el tiempo de respuesta de la solicitud, el sitio web puede deducir qué puertos están abiertos. Sin embargo, este método se ve bastante afectado por las fluctuaciones de la red y tiene una precisión limitada.
Método de escaneo basado en iframe
Más tarde, los investigadores descubrieron una técnica más fiable, dirigida principalmente al navegador Chrome. Cuando Chrome intenta conectarse a un puerto cerrado, el navegador cambia la dirección de la página a chrome-error://chromewebdata/. Aprovechando esta característica:
El sitio web crea un iframe oculto y carga la dirección objetivo, por ejemplo http://127.0.0.1:8080
Si el puerto está cerrado, el evento onload del iframe se activa dos veces, porque la URL ha cambiado
Si el puerto está abierto, el evento onload solo se activa una vez
Contando cuántas veces se activa el evento onload, el sitio web puede determinar con precisión si el puerto está abierto.
Método de escaneo basado en WebSocket
Algunas herramientas también utilizan conexiones WebSocket para detectar el estado de los puertos: una conexión exitosa significa que el puerto está abierto, mientras que un fallo de conexión indica que el puerto está cerrado.
¿Por qué un sitio web querría escanear tus puertos?
1. Antifraude y detección de bots
Muchos sitios web grandes, incluidos algunos sitios de servicios gubernamentales y plataformas de comercio electrónico, utilizan el escaneo de puertos para detectar si el usuario es una persona real. Por ejemplo, algunos sistemas antibots intentan conectarse a 127.0.0.1:8888, que es el puerto proxy predeterminado de herramientas de pruebas de seguridad como Burp Suite. Si se detecta que ese puerto está abierto, el sistema puede sospechar que el visitante es un investigador de seguridad o un script automatizado, y activar verificaciones adicionales.
2. Seguimiento mediante huella digital del usuario
Las investigaciones muestran que los resultados del escaneo de puertos basado en navegador son lo suficientemente únicos como para utilizarse como medio de seguimiento de usuarios. Al detectar los puertos locales abiertos, un sitio web puede inferir qué software está ejecutando el usuario; por ejemplo, que los puertos 80 o 443 estén abiertos puede significar que el usuario está ejecutando un servidor web, mientras que el puerto 25 abierto puede indicar que hay un servidor de correo en funcionamiento. Las combinaciones de software instaladas por distintos usuarios varían enormemente, lo que constituye una “huella digital de software” única.
Más preocupante aún, algunos estudios muestran que incluso escaneando solo durante un segundo, la huella de puertos generada puede tener un alto grado de unicidad. Cuando los resultados del escaneo de puertos se combinan con otras técnicas de huella digital, como la huella Canvas o la huella WebGL, la capacidad de seguimiento aumenta aún más.
3. Detección de dispositivos de la red interna
La mayoría de los navegadores permiten de forma predeterminada que los sitios web públicos realicen solicitudes a direcciones IP privadas, como 127.0.0.1 o 192.168.x.x. Esto significa que un sitio web malicioso no solo puede escanear los puertos locales de tu ordenador, sino también los puertos de dispositivos de tu red interna, como el router de tu casa, televisores inteligentes o cámaras IP, en busca de dispositivos potencialmente vulnerables para atacarlos.
¿Cómo protegerse del escaneo de puertos desde el navegador?
1. Usar extensiones del navegador
uBlock Origin: en la sección “Privacidad” de la configuración, basta con marcar la opción “Bloquear intrusiones externas en la red interna” para que surta efecto
NoScript: ofrece una opción para bloquear el acceso a la red local
Algunos complementos de protección especializados también pueden impedir que los sitios web escaneen los puertos locales
2. Usar navegadores con protección integrada
Algunos navegadores ya incorporan funciones de protección contra el escaneo de puertos. Por ejemplo, ciertos navegadores bloquean activamente scripts de escaneo maliciosos conocidos y restringen el acceso de sitios web públicos a recursos locales. Navegadores como Chrome también están implementando gradualmente la especificación de “Acceso a redes privadas”, que exige que los sitios web obtengan primero el permiso del usuario antes de acceder a recursos locales.
3. Usar navegadores antidetección
Para los usuarios con mayores necesidades de privacidad, los navegadores antidetección ofrecen una solución de protección más completa. Este tipo de herramientas puede simular distintos estados de puertos, impidiendo que los sitios web obtengan resultados reales del escaneo de puertos y protegiendo eficazmente la privacidad de la huella digital de tu dispositivo.
Resumen
El escaneo de puertos es una técnica que puede utilizarse tanto para auditorías de seguridad legítimas como, potencialmente, para invadir la privacidad. Comprender cómo funciona y cuáles son sus riesgos potenciales es el primer paso para proteger tu seguridad en la red. Como dice un viejo refrán del ámbito de la seguridad: “Solo si sabes dónde están abiertas tus ‘puertas’, sabrás cuál debes cerrar.”
