Candado digital tridimensional representado en forma de puntos brillantes, rodeado por una interfaz futurista con datos y gráficos, ideal para ilustrar temas de seguridad informática y ciberseguridad.
219
Views

Hoy nos adentraremos en uno de los temas fundamentales de la ciberseguridad, sin el cual ninguna sesión seria de pentesting o auditoría de seguridad de red sería posible: el escaneo de puertos.

Para algunos puede parecer básico, pero la experiencia demuestra que incluso los especialistas experimentados a veces pasan por alto matices o olvidan la complejidad de este proceso.

Este artículo intenta no solo explicar qué es el escaneo de puertos, sino también analizar en profundidad por qué escanear puertos, qué métodos existen, qué herramientas usar y cómo interpretar los resultados obtenidos.

No nos extenderemos, solo la esencia, los detalles técnicos y ejemplos prácticos. ¿Listos para refrescar conocimientos y quizás descubrir algo nuevo? ¡Empecemos!

Diagrama simplificado de una arquitectura de red básica que muestra un router conectado a internet, un servidor, un ordenador de sobremesa y un portátil.
Comprenda fácilmente cómo funciona una red básica.
Tabla de Contenido

¿Qué es un puerto de red? Comprensión fundamental

Antes de profundizar en el escaneo de puertos, recordemos qué es un puerto de red. Imagina un gran centro de oficinas (tu ordenador o servidor con su dirección IP). En este centro hay muchas puertas, cada una de las cuales conduce a una oficina específica donde se ofrece un servicio concreto. Un puerto de red es una de esas “puertas”.

Técnicamente, un puerto es un número de 16 bits (del 0 al 65535) que utilizan los protocolos de transporte (principalmente TCP y UDP) para identificar un proceso o tipo de servicio de red específico al que debe enviarse un mensaje entrante o saliente.

Cuando llegan datos a una dirección IP, el sistema operativo observa el número de puerto para saber a qué aplicación o servicio están destinados esos datos.

  • Puertos 0-1023: Puertos conocidos (Well-known ports). Reservados para servicios estándar (HTTP – puerto 80, HTTPS – 443, FTP – 20/21, SSH – 22, SMTP – 25, etc.). Normalmente se requieren privilegios de superusuario para usarlos.
  • Puertos 1024-49151: Puertos registrados (Registered ports). Pueden ser registrados por los desarrolladores de software para sus aplicaciones.
  • Puertos 49152-65535: Puertos dinámicos o privados (Dynamic/Private ports). Los utilizan las aplicaciones cliente para establecer conexiones de corta duración o para servicios privados.

Comprender este concepto es fundamental, ya que el escaneo de puertos consiste, en esencia, en comprobar la disponibilidad de las “puertas” y determinar qué “servicio” hay detrás.

El escaneo de puertos: Definición detallada y analogías

El escaneo de puertos es el proceso de enviar paquetes especialmente diseñados a puertos específicos de un host de destino (o rango de hosts) para determinar qué puertos están abiertos, cerrados o filtrados por un firewall. Es uno de los primeros y más importantes pasos en la fase de reconocimiento (reconnaissance) durante las pruebas de penetración o auditorías de seguridad.

Ilustración que representa un escaneo de puertos, utilizando la analogía de un edificio con diferentes puertos (números) como puertas. Se muestra la dirección IP 192.168.1.10 en la parte superior del edificio.
El escaneo de puertos es una herramienta fundamental para entender la seguridad de un sistema. ¡Aprende cómo funciona y sus implicaciones!

Si continuamos con la analogía del centro de oficinas, el escaneo de puertos es como si recorrieras todos los pisos y probaras las manijas de todas las puertas para ver cuáles están abiertas, cuáles cerradas y a cuáles simplemente no te deja entrar la seguridad (firewall). Además, al mirar por una puerta abierta, puedes intentar determinar qué “oficina” (servicio) hay allí: contabilidad (posiblemente una base de datos), ventas (servidor web) o un servidor (acceso SSH).

Por lo tanto, el escaneo de puertos no es solo una verificación de “abierto/cerrado”, sino la recopilación de información sobre:

  • Hosts activos en la red.
  • Puertos abiertos en esos hosts.
  • Servicios que funcionan en esos puertos.
  • Versiones de esos servicios (fundamental para buscar vulnerabilidades conocidas).
  • Sistema operativo del host de destino (a menudo se puede determinar por las características de la respuesta de la pila de red).

Comprender qué es el escaneo de puertos permite al especialista en ciberseguridad crear un mapa de la superficie de ataque (attack surface) e identificar posibles puntos de entrada al sistema.

¿Para qué escanear puertos? Objetivos y tareas clave

La pregunta “¿para qué escanear puertos?” tiene muchas respuestas, dependiendo de quién y con qué fin realiza el escaneo. Para un especialista en ciberseguridad es una parte fundamental del trabajo. Veamos las razones principales.

Auditoría de seguridad y evaluación de vulnerabilidades

Esta es probablemente la razón principal para los “sombreros blancos”. El escaneo de puertos permite:

  • Identificar puertos abiertos: Cada puerto abierto es un posible punto de entrada para un atacante. Es necesario asegurarse de que solo estén abiertos los puertos que realmente necesitan los servicios.
  • Detectar servicios no autorizados: A veces, los empleados pueden instalar software que abre puertos sin que lo sepa el departamento de TI (por ejemplo, clientes torrent, servidores de juegos).
  • Determinar las versiones de los servicios en funcionamiento: Conocer la versión del software (por ejemplo, el servidor web Apache 2.4.53 o el servidor SSH OpenSSH 8.2p1) permite comprobar la existencia de vulnerabilidades conocidas (CVE) para esas versiones. Es el primer paso para la gestión de parches y la reducción de riesgos.
  • Comprobar el cumplimiento de las políticas de seguridad: Por ejemplo, una política puede exigir que el acceso mediante SSH solo esté permitido desde determinadas redes o que todos los servidores web utilicen HTTPS.

Detección de hosts y servicios de red (Network Discovery & Service Identification)

Antes de atacar o defender, hay que saber qué hay en la red. El escaneo de puertos ayuda a:

  • Crear un mapa de la red: Determinar qué direcciones IP están activas y qué servicios se ejecutan en ellas.
  • Identificar el tipo de dispositivos: Por el conjunto de puertos abiertos y las versiones de los servicios, a menudo se puede determinar si un host es un servidor web, una base de datos, un controlador de dominio, una impresora o una estación de trabajo.

Pruebas de configuración de firewalls

Los firewalls son la primera línea de defensa. ¿Por qué escanear puertos en este contexto? Para asegurarse de que el firewall está configurado correctamente y bloquea el tráfico no deseado, además de permitir el tráfico legítimo. El escaneo desde diferentes puntos (desde dentro y fuera de la red) permite comprobar las reglas de filtrado.

Diagnóstico y resolución de problemas de red

A veces, los servicios de red dejan de funcionar o se vuelven inaccesibles. El escaneo de puertos puede ayudar a los administradores de sistemas a determinar rápidamente:

  • Si el servicio funciona en el puerto esperado.
  • Si el firewall (local o de red) bloquea el acceso al puerto.
  • Si varios servicios entran en conflicto al intentar utilizar el mismo puerto.

Para los atacantes (“sombreros negros“), la respuesta a la pregunta “¿para qué escanear puertos?” también es obvia: es el primer paso para buscar puntos de entrada vulnerables para la explotación. Por lo tanto, para nosotros, los especialistas en seguridad, comprender sus motivos y métodos también es fundamental.

¿Cómo funciona el escaneo de puertos? Mecanismos simplificados

Para comprender los diferentes tipos de escaneo, es importante conocer los fundamentos del funcionamiento del protocolo TCP, en particular, el mecanismo de establecimiento de la conexión.

Conexión TCP de tres pasos (Three-Way Handshake)

Cuando un cliente quiere establecer una conexión TCP con un servidor (por ejemplo, tu navegador con un servidor web en el puerto 80), se produce el siguiente intercambio de paquetes:

  1. SYN (Synchronize): El cliente envía al servidor un paquete TCP con el flag SYN establecido y un número de secuencia inicial aleatorio (Initial Sequence Number, ISN). Esta es una solicitud para establecer la conexión.
  2. SYN-ACK (Synchronize-Acknowledge): Si el puerto del servidor está abierto y el servicio está listo para aceptar conexiones, el servidor responde con un paquete con los flags SYN y ACK establecidos. El servidor también elige su ISN y confirma el ISN del cliente (aumentándolo en 1).
  3. ACK (Acknowledge): El cliente envía al servidor un paquete con el flag ACK, confirmando el ISN del servidor (aumentándolo en 1). La conexión está establecida y comienza el intercambio de datos.

Si el puerto está cerrado, el servidor suele responder con un paquete con el flag RST (Reset), indicando un rechazo de la conexión. Si el puerto está filtrado por un firewall, el cliente puede no recibir ninguna respuesta o recibir un mensaje ICMP «Destination Unreachable» (“Destino inalcanzable”).

Diagrama que ilustra el proceso de establecimiento de una conexión TCP de tres vías (three-way handshake), mostrando los segmentos SYN, SYN-ACK y ACK intercambiados entre un cliente y un servidor, culminando en el envío de datos.
Entiende el proceso fundamental de comunicación en redes TCP/IP. Este diagrama muestra los pasos esenciales para una conexión segura.

Estados de los puertos: Abierto, Cerrado, Filtrado, No filtrado

Al escanear puertos, según la respuesta (o la ausencia de ella) del host de destino, el puerto puede clasificarse de la siguiente manera (en el ejemplo de Nmap):

  • Open (Abierto): La aplicación acepta activamente conexiones TCP, datagramas UDP o asociaciones SCTP en este puerto. Esto es lo que normalmente se busca. Los puertos abiertos suelen ser objetivos de ataques, por lo que es importante asegurarse de que estén protegidos.
  • Closed (Cerrado): El puerto está disponible (responde a las solicitudes del escáner), pero no hay ninguna aplicación ejecutándose en él. Esto significa que el host recibió y procesó el paquete, pero ningún servicio está escuchando en ese puerto. Los puertos cerrados pueden ser útiles para determinar si el host está activo, así como para determinar el sistema operativo (OS fingerprinting).
  • Filtered (Filtrado): El escáner no puede determinar si el puerto está abierto o cerrado, porque los paquetes están bloqueados por algún dispositivo de filtrado (por ejemplo, un firewall, un router con ACL o software de host). El escáner no recibe respuesta o recibe un mensaje ICMP de error (por ejemplo, tipo 3 código 1, 2, 3, 9, 10 o 13). Estos puertos pueden ralentizar el escaneo, ya que el escáner tiene que esperar a que se agote el tiempo de espera.
  • Unfiltered (No filtrado): Este estado significa que el puerto está disponible, pero el escáner no puede determinar si está abierto o cerrado. Solo el escaneo ACK clasifica los puertos de esta manera. El escaneo de estos puertos con otros métodos (por ejemplo, SYN scan, FIN scan) puede ayudar a determinar su estado real.
  • Open|Filtered: El escáner no puede determinar inequívocamente si el puerto está abierto o filtrado. Esto ocurre en los tipos de escaneo en los que los puertos abiertos no responden (por ejemplo, UDP, IP Protocol, FIN, Null, Xmas scans). La ausencia de respuesta puede significar que el puerto está abierto o que el paquete fue descartado por el firewall.
  • Closed|Filtered: El escáner no puede determinar si el puerto está cerrado o filtrado. Este estado solo se utiliza para el escaneo IP ID Idle.

Tipos principales de escaneo de puertos: El arsenal del especialista

Existen muchas técnicas de escaneo de puertos, cada una con sus características, ventajas e inconvenientes. La elección de un tipo de escaneo concreto depende de los objetivos, las condiciones de la red, el nivel de “secreto” y la configuración del sistema de destino.

TCP Connect Scan (Full Open Scan)

Este es el tipo de escaneo TCP más básico. El escáner intenta establecer una conexión TCP completa con cada puerto que le interesa en el host de destino, utilizando la llamada al sistema connect(). Si la conexión se establece correctamente (se completa la conexión de tres pasos), el puerto se considera abierto. Si el puerto está cerrado, connect() devolverá un error.

  • Ventajas: Sencillez de implementación, no requiere privilegios especiales para ejecutarse (ya que utiliza llamadas al sistema estándar). Es fiable.
  • Inconvenientes: El sistema de destino lo detecta y registra fácilmente, ya que se establece una conexión completa. Es más lento que el escaneo SYN.
  • Opción Nmap: -sT

SYN Scan (Half-Open Scan, Stealth Scan)

Este es el tipo de escaneo más popular. El escáner envía un paquete SYN, como si intentara iniciar una conexión TCP normal.

  • Si el puerto está abierto, el servidor responde con un paquete SYN/ACK. El escáner, al recibir SYN/ACK, entiende que el puerto está abierto e inmediatamente envía un paquete RST para interrumpir la conexión antes de que se establezca completamente. Esto se denomina conexión “semiabierta”.
  • Si el puerto está cerrado, el servidor responde con un paquete RST.
  • Si no hay respuesta o llega un ICMP “destino inalcanzable”, el puerto se considera filtrado.
  • Ventajas: Más “secreto” que el TCP Connect Scan, ya que no se establece una conexión completa y algunos sistemas/IDS antiguos pueden no registrarlo (aunque los IDS modernos sí lo ven perfectamente). Es más rápido, ya que no se pierde tiempo en el establecimiento completo de la conexión y su cierre. Permite distinguir entre los estados abierto, cerrado y filtrado.
  • Inconvenientes: Requiere privilegios de root/administrador para crear sockets “sin procesar” (raw) y enviar paquetes SYN personalizados. Puede ser poco fiable contra algunos firewalls que rastrean el estado de las conexiones (firewalls con estado), pero normalmente funciona bien.
  • Opción Nmap: -sS (se utiliza por defecto si Nmap se ejecuta con privilegios de root)

FIN Scan

Este tipo de escaneo (al igual que Xmas y Null) aprovecha una laguna en el RFC 793 (TCP). Según el RFC, si a un puerto cerrado llega un paquete sin los flags SYN, RST o ACK establecidos, el puerto debe responder con un paquete RST. Si el puerto está abierto, debe ignorar dicho paquete. El escaneo FIN envía un paquete TCP solo con el flag FIN establecido.

  • Respuesta RST => puerto cerrado.
  • Sin respuesta => puerto abierto o filtrado (open|filtered).
  • ICMP inalcanzable => puerto filtrado.
  • Ventajas: Aún más sigiloso, ya que algunos IDS y sistemas de registro pueden no prestar atención a estos paquetes “no estándar”. Puede eludir algunos firewalls sin estado.
  • Inconvenientes: No funciona en sistemas Microsoft Windows (responden RST a cualquier paquete incorrecto, independientemente del estado del puerto). No todos los sistemas similares a UNIX siguen estrictamente el RFC. Requiere privilegios de root.
  • Opción Nmap: -sF

Xmas Scan

Es similar al escaneo FIN, pero envía un paquete con los flags FIN, PSH y URG establecidos (como un árbol de Navidad, “iluminado como un árbol de Navidad”). La lógica de respuesta es la misma que en el escaneo FIN.

  • Respuesta RST => puerto cerrado.
  • Sin respuesta => puerto abierto o filtrado (open|filtered).
  • ICMP inalcanzable => puerto filtrado.
  • Ventajas e inconvenientes: Análogos al escaneo FIN.
  • Opción Nmap: -sX

Null Scan

Envía un paquete TCP sin flags establecidos. La lógica de respuesta es la misma que en los escaneos FIN y Xmas.

  • Respuesta RST => puerto cerrado.
  • Sin respuesta => puerto abierto o filtrado (open|filtered).
  • ICMP inalcanzable => puerto filtrado.
  • Ventajas e inconvenientes: Análogos al escaneo FIN.
  • Opción Nmap: -sN

UDP Scan

El escaneo de puertos UDP es más complejo y lento que el escaneo TCP, ya que UDP es un protocolo sin establecimiento de conexión. No existe un análogo a SYN/ACK. Normalmente, se envía un datagrama UDP vacío (o específico del protocolo, si se conoce) a un puerto UDP.

  • Si se recibe una respuesta (cualquier paquete UDP) => puerto abierto.
  • Si se recibe una respuesta ICMP “puerto inalcanzable” (tipo 3, código 3) => puerto cerrado.
  • Si se recibe otra respuesta ICMP (tipo 3, códigos 1, 2, 9, 10 o 13) => puerto filtrado.
  • Si no hay respuesta después de varios intentos => el puerto se considera abierto|filtrado (open|filtered). Esta es la situación más frecuente, ya que muchos hosts se adhieren al RFC y no responden a los paquetes UDP que llegan a un puerto abierto, o el firewall bloquea la respuesta.
  • Ventajas: Permite detectar servicios UDP (DNS, SNMP, DHCP, VPN (IPsec/IKE), etc.), que pueden ser vulnerables.
  • Inconvenientes: Muy lento debido a la necesidad de esperar tiempos de espera. A menudo da como resultado open|filtered, lo que requiere una investigación adicional. Puede provocar el disparo de sistemas de limitación de la velocidad de envío de mensajes ICMP en algunos hosts.
  • Opción Nmap: -sU

ACK Scan

Este tipo de escaneo envía paquetes TCP solo con el flag ACK establecido. No se utiliza para determinar los puertos abiertos (ya que los puertos abiertos y cerrados responden de la misma manera: con un paquete RST). Su objetivo principal es determinar las reglas del firewall, es decir, averiguar si el firewall es con estado o sin estado, y qué puertos están filtrados.

  • Si se recibe una respuesta RST => el puerto no está filtrado (unfiltered), es decir, el paquete llegó al host.
  • Si no hay respuesta o se recibe un ICMP “destino inalcanzable” => el puerto está filtrado (filtered).
  • Ventajas: Es bueno para el mapeo de conjuntos de reglas de firewall. Puede ayudar a determinar si el destino utiliza un firewall con estado.
  • Inconvenientes: No determina si el puerto está abierto o cerrado.
  • Opción Nmap: -sA

Window Scan

Es muy similar al escaneo ACK, pero a veces puede determinar los puertos abiertos en algunos sistemas debido a una anomalía en la implementación de la pila TCP, que consiste en el tamaño de la ventana TCP en el paquete RST de respuesta. Si el tamaño de la ventana en la respuesta RST es positivo, el puerto se considera abierto; si es cero, se considera cerrado.

  • Ventajas: A veces puede detectar puertos abiertos donde el escaneo ACK no lo hace.
  • Inconvenientes: No es fiable, ya que no todos los sistemas se comportan de forma predecible. A menudo, los puertos se marcan como cerrados, incluso si están abiertos. Método obsoleto.
  • Opción Nmap: -sW

RPC Scan

Se utiliza en combinación con otros tipos de escaneo (por ejemplo, TCP Connect Scan) para detectar servicios RPC (Remote Procedure Call) y determinar sus programas y versiones. Nmap envía un comando RPC NULL a todos los puertos TCP/UDP abiertos detectados que puedan pertenecer al portmapper RPC.

  • Opción Nmap: -sR (normalmente se utiliza junto con -sV)

Detección de versiones (Version Detection)

Una vez detectados los puertos abiertos, es fundamental determinar qué aplicaciones y sus versiones están escuchando en esos puertos. Nmap utiliza para ello una base de datos de firmas (nmap-service-probes), enviando diferentes solicitudes al puerto abierto y analizando las respuestas.

  • Opción Nmap: -sV

Detección del sistema operativo (OS Detection)

Nmap puede intentar determinar el sistema operativo del host de destino basándose en las características de su pila TCP/IP (por ejemplo, los valores iniciales de TTL, el tamaño de la ventana TCP, las respuestas a paquetes de “sondeo” específicos). Se utiliza una base de datos de firmas de sistemas operativos (nmap-os-db).

  • Opción Nmap: -O

Idle Scan (Zombie Scan): El nivel experto

Este es un método de escaneo muy avanzado y realmente “sigiloso”, que permite escanear un objetivo sin enviarle directamente ningún paquete desde su dirección IP. En su lugar, se utiliza un “host zombie” (idle host): una máquina en la red que no está activa (no genera mucho tráfico) y tiene una secuencia IP ID predecible en los encabezados de los paquetes IP.

Mecanismo (simplificado):

  1. El atacante encuentra un “host zombie” adecuado.
  2. El atacante envía un paquete de sondeo (por ejemplo, SYN/ACK) al host zombie y recuerda su IP ID actual.
  3. El atacante envía un paquete SYN al puerto de destino de la víctima, pero con la dirección IP de origen sustituida por la dirección IP del host zombie.
  4. Si el puerto de la víctima está abierto, la víctima enviará un paquete SYN/ACK al host zombie (ya que la dirección IP de origen se sustituyó). El host zombie, al recibir un SYN/ACK inesperado, responderá con un paquete RST, incrementando su IP ID.
  5. Si el puerto de la víctima está cerrado, la víctima enviará un paquete RST al host zombie. El host zombie no responderá al RST y su IP ID no cambiará.
  6. El atacante vuelve a sondear el IP ID del host zombie.
  7. Si el IP ID aumentó en 2 (una vez por el sondeo del atacante, una vez por la respuesta de la víctima a SYN/ACK, que el zombie “rechazó” con un RST), entonces el puerto de la víctima está abierto.
  8. Si el IP ID aumentó en 1 (solo por el sondeo del atacante), entonces el puerto de la víctima está cerrado.
  • Ventajas: Máxima discreción, ya que la dirección IP real del atacante no aparece en los registros de la víctima.
  • Inconvenientes: Es difícil encontrar un host zombie adecuado. No siempre es fiable debido a las condiciones de la red o la actividad del zombie. Requiere privilegios de root. Más lento que otros métodos.
  • Opción Nmap: -sI
Diagrama de secuencia que ilustra un ataque de denegación de servicio (DoS) utilizando un ordenador zombie para sondear un puerto y determinar si está abierto o cerrado. Se muestra el proceso de falsificación de paquetes SYN.
Descubre cómo los hackers utilizan ordenadores zombies para realizar ataques DoS y obtener información sobre la disponibilidad de puertos.

Herramientas para el escaneo de puertos: Descripción general y aplicación práctica

Existen muchas herramientas para el escaneo de puertos, desde sencillas utilidades de línea de comandos hasta potentes combinaciones con interfaz gráfica. Veamos las más populares y eficaces.

Nmap (Network Mapper): El rey de los escáneres

Nmap, creado por Gordon Lyon (Fyodor), es, sin exagerar, el estándar de facto en el mundo del escaneo de puertos y el reconocimiento de redes. Es una herramienta gratuita y de código abierto, increíblemente potente y flexible. Admite todos los tipos de escaneo descritos anteriormente y muchas otras funciones, incluida la determinación del sistema operativo, las versiones de los servicios, la ejecución de scripts NSE (Nmap Scripting Engine) para automatizar tareas y buscar vulnerabilidades.

Descargar Nmap: https://nmap.org/download.html

Instalación de Nmap

  • Linux (Debian/Ubuntu):
sudo apt update
sudo apt install nmap
  • Linux (Fedora/CentOS/RHEL):
sudo dnf install nmap # o yum para versiones antiguas
  • Windows: Descarga el instalador (.exe) del sitio web oficial y sigue las instrucciones. Nmap para Windows se proporciona con Npcap para capturar y enviar paquetes sin procesar.
  • macOS:
brew install nmap # Si tienes instalado Homebrew

O descarga el .dmg del sitio web oficial.

Comandos básicos de Nmap

  • Escaneo de un solo host (por defecto SYN scan, si hay root, sino TCP Connect):
nmap scanme.nmap.org
  • Escaneo de varios hosts:
nmap 192.168.1.1 192.168.1.5 scanme.nmap.org
  • Escaneo de un rango de direcciones IP:
nmap 192.168.1.1-254
  • Escaneo de toda la subred (notación CIDR):
nmap 192.168.1.0/24
  • Escaneo desde un archivo con una lista de hosts:
nmap -iL list_of_hosts.txt
  • Escaneo de puertos específicos:
nmap -p 80,443,22 192.168.1.1
  • Escaneo de un rango de puertos:
nmap -p 1-1000 192.168.1.1
  • Escaneo de los 65535 puertos (puede ser largo):
nmap -p- 192.168.1.1
  • Escaneo de los puertos más populares (Nmap los elige de su lista):
nmap --top-ports 100 192.168.1.1
  • Escaneo rápido (menos puertos que por defecto):
nmap -F 192.168.1.1

Técnicas avanzadas de escaneo con Nmap

  • Selección del tipo de escaneo:
sudo nmap -sS 192.168.1.1  # SYN scan (por defecto con root)
nmap -sT 192.168.1.1  # TCP Connect scan
sudo nmap -sU 192.168.1.1  # UDP scan
sudo nmap -sF 192.168.1.1  # FIN scan
sudo nmap -sA 192.168.1.1  # ACK scan
  • Determinación de las versiones de los servicios y el sistema operativo:
sudo nmap -sV -O 192.168.1.1
  • Escaneo agresivo (incluye -O, -sV, –traceroute y ejecución de scripts de la categoría default):
sudo nmap -A 192.168.1.1
  • Control de la velocidad de escaneo (-T0: paranoico, muy lento; -T5: loco, muy rápido):
sudo nmap -T4 192.168.1.1 # Agresivo, pero no loco
  • Ejecución de scripts NSE:
sudo nmap --script default 192.168.1.1 # Scripts por defecto
sudo nmap --script vuln 192.168.1.1   # Scripts para buscar vulnerabilidades
sudo nmap --script "http-*" 192.168.1.1 # Todos los scripts HTTP
  • Salida de resultados en diferentes formatos:
sudo nmap -oN normal_output.txt 192.168.1.1    # Formato normal
sudo nmap -oX xml_output.xml 192.168.1.1      # Formato XML
sudo nmap -oG grepable_output.gnmap 192.168.1.1 # Formato Grepable
sudo nmap -oA all_formats_basename 192.168.1.1 # Los tres formatos
  • Desactivación de la resolución DNS (puede acelerar el escaneo de grandes redes):
sudo nmap -n 192.168.1.0/24
  • Desactivación del escaneo de ping (útil si los hosts bloquean ICMP):
sudo nmap -Pn 192.168.1.1 # Considerar el host activo y escanear los puertos

Esto es solo una pequeña parte de las posibilidades de Nmap. Se recomienda encarecidamente consultar la documentación oficial (man nmap o Nmap Reference Guide).

Masscan: Para el escaneo ultrarrápido de grandes redes

Masscan es un escáner de puertos asíncrono desarrollado por Robert Graham. Su principal ventaja es su increíble velocidad. Puede escanear todo Internet en un solo puerto en pocos minutos (si se dispone del ancho de banda y los recursos necesarios). Masscan alcanza esa velocidad enviando paquetes de forma asíncrona y utilizando su propia pila TCP/IP, en lugar de la del sistema.

Descargar Masscan: https://github.com/robertdavidgraham/masscan

Instalación de Masscan

  • Linux (Debian/Ubuntu):
sudo apt install gcc git libpcap-dev
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
sudo make install
  • macOS (con Homebrew):
brew install masscan

Ejemplos de uso de Masscan

  • Escaneo del puerto 80 en la subred 192.168.1.0/24 a una velocidad de 1000 paquetes por segundo:
sudo masscan 192.168.1.0/24 -p80 --rate 1000
  • Escaneo de varios puertos:
sudo masscan 192.168.1.0/24 -p22,80,443 --rate 1000
  • Escaneo de un rango de puertos y salida a un archivo:
sudo masscan 10.0.0.0/8 -p1-1000 --rate 100000 -oL output.txt

Importante: Masscan es una herramienta muy “ruidosa”. Utilízala con precaución y solo en las redes donde tengas permiso. Debido a su alta velocidad, puede causar problemas en algunas redes o dispositivos, y también es fácilmente detectable por los IDS/IPS.

Netcat (nc): Navaja suiza para tareas de red

Netcat (o nc) es una utilidad universal de línea de comandos para leer y escribir datos a través de conexiones de red utilizando TCP o UDP. Aunque no es un escáner de puertos especializado, se puede utilizar para comprobar rápidamente puertos individuales.

  • Comprobación de un puerto TCP (si se establece la conexión, el puerto está abierto):
nc -v -z -w 1 scanme.nmap.org 80 # -v (verbose), -z (modo cero-E/S, escaneo), -w (tiempo de espera)
  • Comprobación de un puerto UDP (más complicado, ya que UDP no da confirmación):
nc -v -u -z -w 1 scanme.nmap.org 53 # -u (modo UDP)

Netcat es útil para comprobaciones manuales y scripts, pero para el escaneo a gran escala de puertos es mejor utilizar Nmap o Masscan.

Escáneres de puertos online

Existen muchos sitios web que ofrecen servicios de escaneo de puertos online. Pueden ser útiles para comprobar rápidamente la disponibilidad de tus propias direcciones IP externas desde Internet. Ejemplos: Pentest-Tools, HackerTarget, DNSChecker, etc.

  • Ventajas: No requieren la instalación de software, son accesibles desde cualquier navegador.
  • Inconvenientes: Funcionalidad limitada en comparación con Nmap, no se pueden escanear redes internas, los resultados pueden no ser tan precisos, siempre existe la cuestión de la confianza en un servicio externo.

Interpretación de los resultados del escaneo: ¿Qué sigue?

Obtener una lista de puertos abiertos es solo el comienzo. Es importante interpretar correctamente los resultados y comprender qué hacer con ellos.

  • Análisis de los puertos abiertos: Cada puerto abierto debe estar justificado. Si ves un puerto abierto que no debería estarlo según las políticas de seguridad o los requisitos funcionales, es un problema potencial. Por ejemplo, un Telnet abierto (puerto 23) o FTP (puerto 21) en un servidor externo suele ser malo.
  • Identificación de servicios y versiones (-sV en Nmap): Conocer la versión exacta del servicio (por ejemplo, Apache 2.4.53, OpenSSH 7.9p1, Microsoft IIS 10.0) permite buscar vulnerabilidades conocidas (CVE) para esas versiones. Utiliza bases de datos de vulnerabilidades (por ejemplo, CVE Mitre, Exploit-DB, Vulners).
  • Determinación del sistema operativo (-O en Nmap): Conocer el sistema operativo ayuda a comprender qué exploits pueden ser aplicables, qué configuraciones estándar y vulnerabilidades pueden existir.
  • Comparación con la configuración conocida: Compara los resultados del escaneo con la configuración esperada de la red. Cualquier discrepancia requiere una investigación.
  • Investigación adicional: Para cada puerto abierto interesante, se puede realizar una investigación más profunda:
    • Servicios web (HTTP/HTTPS): Intenta conectarte con un navegador, utiliza herramientas para analizar aplicaciones web (Nikto, OWASP ZAP, Burp Suite).
    • SSH/FTP/Telnet: Intenta con credenciales estándar o débiles (si está permitido en el contexto de la prueba de penetración).
    • Bases de datos (MySQL, PostgreSQL, MSSQL): Intenta conectarte con un cliente de base de datos, comprueba el acceso anónimo o las contraseñas débiles.
    • Ejecución de scripts NSE (Nmap Scripting Engine): Para muchos servicios existen scripts NSE que pueden comprobar automáticamente la existencia de vulnerabilidades conocidas, recopilar información adicional (por ejemplo, smb-enum-shares.nse para SMB, http-title.nse para obtener el título de una página web).
  • Informes: Los resultados del escaneo deben documentarse, especialmente si forman parte de una auditoría o prueba de penetración. El informe debe indicar los puertos abiertos detectados, los servicios, las versiones, las posibles vulnerabilidades y las recomendaciones para solucionarlas.

Aspectos legales y éticos del escaneo de puertos

¡ESTE ES UN ASPECTO MUY IMPORTANTE! El escaneo de puertos de redes ajenas sin el permiso explícito y por escrito del propietario es ilegal en muchas jurisdicciones y puede considerarse como un intento de acceso no autorizado o una violación de la seguridad informática. Esto puede tener consecuencias legales, desde multas hasta penas de prisión.

Siempre:

  • Obtenga permiso por escrito: Antes de escanear cualquier sistema o red que no le pertenezca, asegúrese de tener un permiso claro e inequívoco por escrito del propietario. Este permiso debe especificar el alcance (área de escaneo), el tiempo de ejecución del trabajo y las personas de contacto.
  • Respete las reglas del “sombrero blanco”: Su objetivo es ayudar a mejorar la seguridad, no causar daño.
  • No se salga del alcance: Si se le ha permitido escanear solo ciertas direcciones IP o puertos, no se salga de esos límites.
  • Sea cuidadoso: Algunos tipos de escaneo (especialmente los agresivos o en sistemas inestables) pueden causar fallos en el funcionamiento de los servicios. Si no está seguro, consulte con el propietario del sistema.

Incluso si su objetivo es simplemente “ver” qué está abierto, sin mala intención, esto aún puede ser interpretado como una acción hostil. Para entrenar, utilice recursos creados específicamente para esto, como scanme.nmap.org, zero.webappsecurity.com, o despliegue sus propios laboratorios virtuales (por ejemplo, con Metasploitable, DVWA).

Protección contra el Escaneo de Puertos No Deseado

Es prácticamente imposible prevenir completamente el escaneo de puertos, ya que es una parte fundamental del funcionamiento de la red. Sin embargo, se puede dificultar significativamente la tarea de los atacantes y detectar a tiempo la actividad sospechosa.

Cortafuegos (Firewalls) y Sistemas de Detección/Prevención de Intrusos (IDS/IPS)

  • Cortafuegos: Configure los cortafuegos (de red y de host) para bloquear todas las conexiones entrantes a los puertos que no deben estar disponibles desde el exterior. Utilice el principio de privilegio mínimo: solo permita lo que sea necesario. Los cortafuegos con estado son más efectivos, ya que rastrean el estado de las conexiones.
  • IDS/IPS: Los sistemas de detección (IDS) y prevención (IPS) de intrusiones pueden identificar varios tipos de escaneo de puertos por sus firmas características y anomalías en el tráfico. El IPS puede bloquear automáticamente las direcciones IP desde las que se realiza el escaneo. Ejemplos: Snort, Suricata, OSSEC.

Port Knocking

Este es un método para ocultar puertos, en el que un puerto en el cortafuegos solo se abre después de que se envíen “golpes” (intentos de conexión) a una secuencia específica de puertos cerrados. Por ejemplo, para abrir el puerto SSH 22, primero hay que “golpear” en los puertos 1001, luego 2002, luego 3003. Solo después de la secuencia correcta, el cortafuegos abrirá temporalmente el puerto 22 para la dirección IP que “golpeó”.

Ventajas: Oculta eficazmente los puertos del escaneo normal.

Desventajas: Dificulta el acceso legítimo, puede ser vulnerable a ataques de “hombre en el medio” o análisis de tráfico si se intercepta la secuencia.

Honeypots (Cebo)

Un honeypot es un sistema cebo que simula un host o servicio vulnerable. Cualquier actividad en el honeypot se considera sospechosa por definición. Ayudan a detectar el escaneo y los ataques en etapas tempranas, y también a recopilar información sobre los métodos y herramientas de los atacantes. Ejemplos: Dionaea, Cowrie, Honeyd.

Análisis de Registros y Monitoreo

El análisis regular de los registros de los cortafuegos, servidores e IDS/IPS ayuda a identificar los intentos de escaneo. Utilice sistemas SIEM (Security Information and Event Management) para la recopilación y análisis centralizados de registros, así como para la configuración de notificaciones sobre actividad sospechosa.

Técnicas y Métodos Avanzados para Evitar la Detección

Los atacantes (y los pentesters) buscan constantemente formas de hacer que el escaneo de puertos sea menos visible para los IDS/IPS y los cortafuegos. Estas son algunas de ellas (muchas ya se mencionaron en el contexto de Nmap):

  • Escaneo lento (Slow Scans): El uso de las opciones de Nmap -T0 (Paranoid) o -T1 (Sneaky), o la configuración manual de los parámetros de tiempo (--max-rtt-timeout, --scan-delay) para extender el escaneo durante un período de tiempo prolongado y evitar que se activen los valores umbral del IDS.
  • Fragmentación de paquetes (Packet Fragmentation): El envío de paquetes de sondeo como varios fragmentos IP pequeños. Algunos IDS/cortafuegos antiguos pueden tener dificultades para ensamblar y analizar correctamente estos paquetes. Nmap: -f (fragmenta paquetes en 8 bytes o menos), --mtu (establece su propio MTU).
  • Uso de direcciones IP falsas (Decoys): Nmap permite especificar direcciones IP de origen ficticias (-D RND:10 o -D decoy1,decoy2,ME), para confundir los registros y ocultar la dirección IP real del escáner entre muchas falsas. ME indica la IP real.
  • Especificación del puerto de origen (Source Port Spoofing): Algunos cortafuegos pueden estar configurados para confiar en el tráfico de ciertos puertos de origen (por ejemplo, 53 — DNS, 20 — datos FTP). Nmap: --source-port o -g.
  • Idle Scan (-sI): Como ya se discutió, este es el método más oculto, ya que la víctima no ve la dirección IP del atacante.
  • Evasión basada en TTL (TTL Evasion): El envío de paquetes con un TTL tal que “mueran” inmediatamente después de pasar por un dispositivo de red específico (por ejemplo, IDS), pero antes de llegar al objetivo. O viceversa, para llegar al objetivo, pero no al IDS. Es difícil de implementar en la práctica.
  • Uso de IPv6: No todos los sistemas de monitoreo y protección están igualmente bien configurados para IPv6, lo que puede dar al atacante una ventaja.
  • Cifrado y tunelización: El uso de VPN, Tor o túneles SSH para enmascarar el origen del escaneo.

Es importante entender que los IDS/IPS y los cortafuegos modernos son cada vez más inteligentes, y muchas de estas técnicas pueden ser detectadas. Sin embargo, el conocimiento de estos métodos es necesario tanto para el atacante como para el defensor.

Cita sobre el tema

“Si conoces al enemigo y te conoces a ti mismo, no tienes que temer el resultado de cien batallas. Si te conoces a ti mismo pero no al enemigo, por cada victoria obtenida también sufrirás una derrota. Si no conoces ni al enemigo ni a ti mismo, sucumbirás en cada batalla.”

Sun Tzu, El Arte de la Guerra

Aunque Sun Tzu hablaba de la guerra, sus palabras se aplican perfectamente a la ciberseguridad. El escaneo de puertos es una de las formas de “conocer al enemigo” (o “conocerse a sí mismo”, si se escanean sus propios sistemas).

Conclusiones

Hemos realizado una inmersión profunda en el mundo del escaneo de puertos. Hemos comprendido que el escaneo de puertos no es simplemente un ping o una verificación de la disponibilidad del host, sino un proceso complejo de reconocimiento, dirigido a la identificación de servicios activos y posibles puntos de entrada al sistema.

También hemos discutido detalladamente por qué escanear puertos: desde la auditoría de seguridad y la búsqueda de vulnerabilidades hasta el diagnóstico de problemas de red y las pruebas de cortafuegos.

Hemos aprendido:

  • Los fundamentos de los puertos de red y su clasificación.
  • El mecanismo de tres vías de saludo TCP y cómo se utiliza (o se evita) en diferentes tipos de escaneo.
  • Muchos tipos de escaneo: desde el escaneo TCP Connect básico y el popular SYN Scan hasta los más sofisticados FIN, Xmas, Null, ACK e incluso el exótico Idle Scan.
  • Herramientas clave, como Nmap (nuestra fiel navaja suiza), Masscan (para carreras de velocidad) y Netcat (para verificaciones rápidas). Hemos revisado su instalación y comandos básicos.
  • Cómo interpretar los resultados del escaneo y qué hacer con la información obtenida.
  • La importancia crítica de los aspectos legales y éticos del escaneo.
  • Los métodos principales de protección contra el escaneo no deseado y, a la inversa, las técnicas avanzadas para llevarlo a cabo con el fin de eludir los sistemas de detección.

Escanear puertos es una habilidad que debe estar en el arsenal de todo especialista en ciberseguridad. Es el punto de partida para muchas otras acciones, ya sea pentesting, forense o protección de infraestructura.

Espero que este artículo haya ayudado a sistematizar el conocimiento, refrescar detalles olvidados o incluso aprender algo nuevo. Recuerda que la teoría sin práctica está muerta, así que no olvides perfeccionar tus habilidades (¡en entornos permitidos y seguros, por supuesto!). ¡Mucha suerte en tus investigaciones de red!

Angel Mentor https://cybermentor.net

Angel Mentor es un profesional certificado en ciberseguridad cuya misión en CyberMentor.net es simplificar el complejo mundo de la seguridad digital. Con experiencia práctica en el campo, te guía desde la protección de tus dispositivos y tu privacidad hasta el avance de tu carrera profesional en ciberseguridad.

Todos los Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *