Escáner de puertos

Un escáner de puertos  es una herramienta de software diseñada para encontrar hosts de red que tengan los puertos necesarios abiertos . Estos programas son comúnmente utilizados por los administradores de sistemas para verificar la seguridad de sus redes y por los atacantes para piratear la red. Puede buscar un rango de puertos abiertos en un host o un puerto específico en muchos hosts. Este último es característico de las actividades de una serie de gusanos de red .

El proceso en sí se denomina escaneo de puertos o (en el caso de que se verifiquen muchos hosts) escaneo de red . El escaneo de puertos puede ser el primer paso en un proceso de prevención de infracciones o infracciones al ayudar a identificar objetivos de ataques potenciales. Con la ayuda de las herramientas apropiadas, mediante el envío de paquetes de datos y el análisis de las respuestas, se pueden examinar los servicios que se ejecutan en la máquina ( servidor web , servidor FTP, servidor de correo , etc.), se pueden establecer sus números de versión y el sistema operativo utilizado. .

Protocolo TCP/IP

La pila de protocolos más común en Internet hoy en día es TCP/IP . Los servicios alojados están direccionados por dos identificadores: una dirección IP y un número de puerto . Hay 65536 números de puerto posibles. La mayoría de los servicios utilizan un conjunto limitado de números de puerto (la IANA fija el número de puerto en caso de que el servicio se vuelva lo suficientemente significativo [1] ).

Algunos escáneres de puertos solo buscan los puertos más utilizados o los más vulnerables en un determinado host o conjunto de hosts.

El resultado de un escaneo de puertos generalmente cae en una de tres categorías:

Las vulnerabilidades asociadas con los puertos abiertos se dividen en:

  1. problemas de seguridad y estabilidad asociados a la operación de programas que brindan servicios ,
  2. problemas de seguridad y estabilidad relacionados con el sistema operativo que se ejecuta en el host.

Los puertos cerrados pueden representar un peligro solo en el segundo punto. Los puertos bloqueados, en la actualidad, no suponen un peligro real.

Aspecto técnico

Las técnicas de exploración de puertos se basan en la suposición de que el host es compatible con el "Protocolo de control directo" ( ICMP ) definido en RFC 792 [2] . Si bien esto es cierto en la mayoría de los casos, todavía es posible que un host responda con paquetes extraños, o incluso genere falsos positivos, cuando la pila TCP/IP utilizada no cumple con RFC o se ha modificado.

Tipos de escaneos

Comprobación en línea

En algunos casos, antes de iniciar el escaneo real, es útil verificar si hay un sistema en funcionamiento en la dirección IP de destino. Este problema se puede resolver enviando mensajes ICMP Echo utilizando la utilidad ping , secuenciando todas las direcciones de red o enviando un mensaje Echo a una dirección de difusión.
Al analizar el tráfico y monitorear los mensajes de eco enviados a todos los nodos en un corto período de tiempo, es posible identificar los intentos de escaneo. En lugar de mensajes de eco, se pueden usar segmentos TCP con bit de código RST , respuestas a consultas de DNS inexistentes . Si el escáner recibe un paquete ICMP Destino inalcanzable con el código 1 ( host inalcanzable ) en respuesta, significa que el nodo probado está apagado o no conectado a la red.

Debe tenerse en cuenta que (en la práctica) no recibir una respuesta a las solicitudes no garantiza la inexistencia del host, ya que muchos administradores de sistemas en aras de la "seguridad" acuden a la violación de los estándares de la red.

Escaneo SYN

Este tipo de escaneo es el más popular. En lugar de utilizar las funciones de red del sistema operativo, el escáner de puertos genera paquetes IP y supervisa las respuestas a ellos. Esta técnica a menudo se conoce como exploración de conexión semiabierta porque nunca se abre una conexión TCP/IP completa. El escáner de puertos genera un paquete SYN. Si el puerto en el host de destino está abierto, se enviará un paquete SYN-ACK desde él. El host del escáner responde con un paquete RST, cerrando así la conexión antes de que se complete el proceso de establecimiento de la conexión.

El uso de paquetes de red autogenerados tiene una serie de ventajas, ya que brinda al software de escaneo un control total sobre los paquetes enviados y las respuestas a ellos, los retrasos en las respuestas y permite obtener resultados de escaneo detallados.

Las opiniones sobre el daño potencial a un host escaneado son mixtas. Por un lado, el escaneo SYN tiene la ventaja de que las aplicaciones individuales nunca reciben una conexión entrante (se termina durante la fase de instalación); por otro lado, el envío de un paquete RST durante el establecimiento de la conexión puede causar problemas para algunos dispositivos de red, especialmente como las impresoras de red .

Escaneo TCP

Este método más simple usa las funciones de red del sistema operativo y se usa cuando un escaneo SYN no es factible por una razón u otra. El sistema operativo, si el puerto está abierto, completa el procedimiento de establecimiento de conexión de tres etapas y luego cierra inmediatamente la conexión. De lo contrario, se devuelve un código de error. La ventaja de este método es que no requiere derechos de acceso especiales por parte del usuario. Sin embargo, el uso de las funciones de red del sistema operativo no permite un control de bajo nivel, por lo que este tipo no se usa tanto.

La principal desventaja de este método es una gran cantidad de conexiones abiertas y terminadas inmediatamente, lo que crea una carga en el sistema escaneado y facilita la detección de la actividad del escáner de puertos.

Escaneo UDP

También es posible escanear usando paquetes UDP , aunque tiene una serie de peculiaridades. No existe un concepto de conexión para UDP ni un equivalente para el paquete TCP SYN. Sin embargo, si envía un paquete UDP a un puerto cerrado, el sistema responderá con un mensaje ICMP de "puerto no disponible". La ausencia de dicho mensaje se interpreta como una señal de que el puerto está abierto. Sin embargo, si el puerto está bloqueado por un firewall , el método indicará incorrectamente que el puerto está abierto. Si los mensajes de puerto ICMP inalcanzable están bloqueados, todos los puertos aparecerán abiertos. Además, se puede establecer un límite en la frecuencia de uso de paquetes ICMP, lo que también afecta los resultados proporcionados por el método.

Un enfoque alternativo es enviar paquetes UDP específicos de la aplicación antes de recibir una respuesta de la capa de la aplicación. Por ejemplo, enviar una consulta DNS al puerto 53 dará como resultado una respuesta si hay un servidor DNS en la dirección solicitada. El problema en este caso es que existe un paquete de "prueba" correspondiente para cada uno de los puertos. En algunos casos, un servicio puede estar presente pero configurado para no responder a paquetes de "sonda" conocidos.

También es posible un enfoque híbrido, combinando los dos métodos anteriores. Por ejemplo, un escaneo podría comenzar enviando un paquete UDP para buscar una respuesta ICMP de "puerto no disponible", y luego los puertos con un resultado ambiguo de "abierto o bloqueado" podrían volver a escanearse en busca de respuestas específicas de la aplicación.

Escaneo ACK

Este escaneo se usa para determinar si un puerto determinado está siendo filtrado o no, y es especialmente efectivo para detectar la presencia de firewalls y conocer sus reglas. El filtrado de paquetes simple permitirá el paso de paquetes con el bit ACK establecido (utilizado para conexiones ya establecidas), mientras que los cortafuegos más sofisticados no lo harán.

Escaneo FIN

Algunos servidores pueden rastrear un intento de escaneo SYN en sus puertos. Por ejemplo, un intento de escaneo SYN puede reconocerse por la llegada de paquetes SYN "falsos" en puertos cerrados del servidor protegido y, si se sondean varios puertos, el servidor cierra la conexión para protegerse contra el escaneo.

Escanear con paquetes FIN le permite eludir dichas protecciones. Según RFC 793 , un paquete FIN que llega a un puerto cerrado debe ser respondido por el servidor con un paquete RST. Los paquetes FIN para abrir puertos DEBEN ser ignorados por el servidor. Por esta diferencia, se hace posible distinguir un puerto cerrado de uno abierto.

No todos los sistemas operativos siguen esta recomendación RFC 793 . Por ejemplo, la reacción de Windows de la familia 95/98/NT a un paquete FIN entrante no difiere para un puerto abierto y uno cerrado.

Otros tipos de escaneos

Y otra forma es enviar segmentos con indicadores FIN (no más datos del remitente), PSH (función de inserción), URG (campo de puntero urgente significativo), o incluso con un campo de bits de código vacío. Si el puerto está cerrado, se devolverá un segmento con el indicador RST como respuesta ; si no hay respuesta, entonces el puerto está abierto (ya que dicho segmento simplemente se ignora).

Velocidad de trabajo

La velocidad de escaneo depende de factores como la cantidad de puertos verificados, la propensión de los sistemas escaneados a las respuestas ICMP, el método de escaneo elegido, la cantidad de hosts verificados y su propensión a responder a las solicitudes, así como qué tan preocupada está la parte escaneadora con la invisibilidad de sus actividades. Para evitar ser descubierto, el escáner de puertos puede alargar el envío de mensajes en el tiempo. Por otro lado, si se verifica una gran cantidad de hosts, se pueden escanear en paralelo para que la carga en cada host específico sea muy baja.

Protección de exploración de puertos

La mayoría de los firewalls pueden proteger contra escaneos de puertos. El cortafuegos puede abrir todos los puertos del sistema para evitar que el escáner muestre los puertos. Este método funciona en la mayoría de los casos, pero no protege contra las nuevas técnicas de escaneo de puertos, como el escaneo de puertos ICMP y el escaneo NULL.

Algunos ISP implementan filtros de paquetes o proxies abiertos que evitan la actividad de escaneo de puertos de salida.

Límites morales y legales

Muchos ISP prohíben explícitamente a los usuarios realizar escaneos de puertos. Normalmente, esta prohibición está incluida en las reglas del servicio, que el cliente debe aceptar al conectarse.

El Código Penal de la Federación de Rusia establece la responsabilidad penal por los siguientes delitos [3] :

Software

Véase también

Notas

  1. Lista de puertos de la IANA Archivado el 2 de agosto de 2002 en Wayback Machine . 
  2. RFC 792  - Protocolo de mensajes de control de Internet  ]
  3. Código Penal de la Federación Rusa . Capítulo 28. Delitos en el ámbito de la información informática.
  4. http://www.insecure.org  (ing.) Archivado el 10 de junio de 2021 en Wayback Machine , el sitio de los desarrolladores del programa Nmap .

Enlaces