Un escáner de puertos es una aplicación diseñada para sondear un servidor o host en busca de puertos abiertos . Los administradores pueden utilizar una aplicación de este tipo para verificar las políticas de seguridad de sus redes y los atacantes para identificar los servicios de red que se ejecutan en un host y explotar las vulnerabilidades.
Un escaneo de puertos o escaneo de puertos es un proceso que envía solicitudes de clientes a un rango de direcciones de puertos de servidor en un host, con el objetivo de encontrar un puerto activo; Este no es un proceso nefasto en sí mismo. [1] La mayoría de los usos de un escaneo de puertos no son ataques, sino más bien simples sondas para determinar los servicios disponibles en una máquina remota.
El barrido de puertos consiste en escanear varios hosts en busca de un puerto de escucha específico. Este último se utiliza normalmente para buscar un servicio específico; por ejemplo, un gusano informático basado en SQL puede realizar un barrido de puertos en busca de hosts que escuchen en el puerto TCP 1433. [2]
El diseño y funcionamiento de Internet se basa en el Internet Protocol Suite , comúnmente también llamado TCP/IP . En este sistema, se hace referencia a los servicios de red mediante dos componentes: una dirección de host y un número de puerto. Hay 65535 números de puerto distintos y utilizables, numerados del 1 al 65535. (El puerto cero no es un número de puerto utilizable). La mayoría de los servicios utilizan uno o, como máximo, un rango limitado de números de puerto.
Algunos escáneres de puertos escanean sólo los números de puerto más comunes, o los puertos más comúnmente asociados con servicios vulnerables, en un host determinado.
El resultado de un escaneo de un puerto generalmente se generaliza en una de tres categorías:
Los puertos abiertos presentan dos vulnerabilidades de las que los administradores deben tener cuidado:
Los puertos filtrados no suelen presentar vulnerabilidades.
Todas las formas de escaneo de puertos se basan en la suposición de que el host de destino cumple con RFC . Aunque este es el caso la mayor parte del tiempo, todavía existe la posibilidad de que un host envíe paquetes extraños o incluso genere falsos positivos cuando la pila TCP/IP del host no es compatible con RFC o ha sido alterada. Esto es especialmente cierto para técnicas de escaneo menos comunes que dependen del sistema operativo (escaneo FIN, por ejemplo). [3] El método de toma de huellas digitales de la pila TCP/IP también se basa en estos tipos de diferentes respuestas de red a partir de un estímulo específico para adivinar el tipo de sistema operativo que está ejecutando el host.
Los escáneres de puertos más simples utilizan las funciones de red del sistema operativo y generalmente son la siguiente opción cuando SYN no es una opción factible (se describe a continuación). Nmap llama a este modo connect scan, llamado así por la llamada al sistema Unix connect(). Si un puerto está abierto, el sistema operativo completa el protocolo de enlace de tres vías TCP y el escáner de puertos cierra inmediatamente la conexión para evitar realizar un ataque de denegación de servicio . [3] De lo contrario, se devuelve un código de error. Este modo de escaneo tiene la ventaja de que el usuario no requiere privilegios especiales. Sin embargo, el uso de las funciones de red del sistema operativo impide el control de bajo nivel, por lo que este tipo de análisis es menos común. Este método es "ruidoso", especialmente si se trata de un " barrido de puertos ": los servicios pueden registrar la dirección IP del remitente y los sistemas de detección de intrusiones pueden generar una alarma.
El escaneo SYN es otra forma de escaneo TCP. En lugar de utilizar las funciones de red del sistema operativo, el escáner de puertos genera él mismo paquetes IP sin procesar y monitorea las respuestas. Este tipo de análisis también se conoce como "análisis medio abierto", porque en realidad nunca abre una conexión TCP completa. El escáner de puertos genera un paquete SYN. Si el puerto de destino está abierto, responderá con un paquete SYN-ACK. El host del escáner responde con un paquete RST, cerrando la conexión antes de que se complete el protocolo de enlace. [3] Si el puerto está cerrado pero sin filtrar, el objetivo responderá instantáneamente con un paquete RST.
El uso de redes sin formato tiene varias ventajas, ya que le brinda al escáner un control total de los paquetes enviados y el tiempo de espera de las respuestas, y permite generar informes detallados de las respuestas. Existe un debate sobre qué análisis es menos intrusivo para el host de destino. El escaneo SYN tiene la ventaja de que los servicios individuales nunca reciben una conexión. Sin embargo, el RST durante el protocolo de enlace puede causar problemas en algunas pilas de red, en particular en dispositivos simples como impresoras. No hay argumentos concluyentes en ninguno de los dos sentidos.
El escaneo UDP también es posible, aunque existen desafíos técnicos. UDP es un protocolo sin conexión, por lo que no existe un equivalente a un paquete TCP SYN. Sin embargo, si se envía un paquete UDP a un puerto que no está abierto, el sistema responderá con un mensaje de puerto ICMP inalcanzable. La mayoría de los escáneres de puertos UDP utilizan este método de escaneo y utilizan la ausencia de respuesta para inferir que un puerto está abierto. Sin embargo, si un puerto está bloqueado por un firewall , este método informará falsamente que el puerto está abierto. Si el mensaje de puerto inalcanzable está bloqueado, todos los puertos aparecerán abiertos. Este método también se ve afectado por la limitación de velocidad ICMP . [4]
Un enfoque alternativo es enviar paquetes UDP específicos de la aplicación, con la esperanza de generar una respuesta de la capa de aplicación. Por ejemplo, enviar una consulta DNS al puerto 53 generará una respuesta, si hay un servidor DNS presente. Este método es mucho más fiable para identificar puertos abiertos. Sin embargo, se limita a escanear puertos para los cuales hay disponible un paquete de sonda específico de la aplicación. Algunas herramientas (por ejemplo, Nmap , Unionscan [5] ) generalmente tienen sondas para menos de 20 servicios UDP, mientras que algunas herramientas comerciales tienen hasta 70. En algunos casos, un servicio puede estar escuchando en el puerto, pero configurado para no responder. al paquete de sonda particular.
El escaneo ACK es uno de los tipos de escaneo más inusuales, ya que no determina exactamente si el puerto está abierto o cerrado, sino si el puerto está filtrado o no. Esto es especialmente bueno cuando se intenta investigar la existencia de un firewall y sus conjuntos de reglas. El filtrado de paquetes simple permitirá conexiones establecidas (paquetes con el bit ACK establecido), mientras que un firewall con estado más sofisticado podría no hacerlo. [6]
Rara vez se utiliza debido a su naturaleza obsoleta, el escaneo de ventanas es bastante poco confiable para determinar si un puerto está abierto o cerrado. Genera el mismo paquete que un escaneo ACK, pero verifica si el campo de la ventana del paquete se ha modificado. Cuando el paquete llega a su destino, un error de diseño intenta crear un tamaño de ventana para el paquete si el puerto está abierto, marcando el campo de ventana del paquete con unos antes de que regrese al remitente. El uso de esta técnica de escaneo con sistemas que ya no admiten esta implementación devuelve 0 para el campo de ventana, etiquetando los puertos abiertos como cerrados. [7]
Dado que los escaneos SYN no son lo suficientemente subrepticios, los firewalls, en general, escanean y bloquean paquetes en forma de paquetes SYN. [3] Los paquetes FIN pueden eludir los firewalls sin modificaciones. Los puertos cerrados responden a un paquete FIN con el paquete RST apropiado, mientras que los puertos abiertos ignoran el paquete disponible. Este es un comportamiento típico debido a la naturaleza de TCP y, en cierto modo, es una caída inevitable. [8]
Existen algunos tipos de exploración más inusuales. Estos tienen varias limitaciones y no se utilizan ampliamente. Nmap soporta la mayoría de estos. [6]
Muchos proveedores de servicios de Internet restringen la capacidad de sus clientes para realizar escaneos de puertos a destinos fuera de sus redes domésticas. Esto suele estar cubierto en los términos de servicio o en la política de uso aceptable que el cliente debe aceptar. [9] [10] Algunos ISP implementan filtros de paquetes o servidores proxy transparentes que evitan solicitudes de servicio salientes a ciertos puertos. Por ejemplo, si un ISP proporciona un proxy HTTP transparente en el puerto 80, los escaneos de puertos de cualquier dirección parecerán tener el puerto 80 abierto, independientemente de la configuración real del host de destino.
La información recopilada mediante un escaneo de puertos tiene muchos usos legítimos, incluido el inventario de red y la verificación de la seguridad de una red. Sin embargo, el escaneo de puertos también puede usarse para comprometer la seguridad. Muchos exploits se basan en escaneos de puertos para encontrar puertos abiertos y enviar patrones de datos específicos en un intento de desencadenar una condición conocida como desbordamiento del búfer . Tal comportamiento puede comprometer la seguridad de una red y de las computadoras que contiene, lo que resulta en la pérdida o exposición de información confidencial y la capacidad de realizar el trabajo. [3]
El nivel de amenaza causado por un escaneo de puerto puede variar mucho según el método utilizado para escanear, el tipo de puerto escaneado, su número, el valor del host objetivo y el administrador que monitorea el host. Pero un escaneo de puertos a menudo se considera un primer paso para un ataque y, por lo tanto, se toma en serio porque puede revelar mucha información confidencial sobre el host. [11] A pesar de esto, la probabilidad de que solo se realice un escaneo de puerto seguido de un ataque real es pequeña. La probabilidad de un ataque es mucho mayor cuando el escaneo de puertos está asociado con un escaneo de vulnerabilidades . [12]
Debido a la arquitectura inherentemente abierta y descentralizada de Internet, los legisladores han luchado desde su creación para definir límites legales que permitan un procesamiento efectivo de los ciberdelincuentes . Los casos relacionados con actividades de escaneo de puertos son un ejemplo de las dificultades encontradas a la hora de juzgar las infracciones. Aunque estos casos son raros, la mayoría de las veces el proceso legal implica demostrar que existió la intención de cometer un robo o un acceso no autorizado, en lugar de simplemente realizar un escaneo de puertos.
En junio de 2003, las autoridades israelíes acusaron al israelí Avi Mizrahi del delito de intentar acceder no autorizado a material informático. Había escaneado el sitio web del Mossad . Fue absuelto de todos los cargos el 29 de febrero de 2004. El juez dictaminó que este tipo de acciones no deben desalentarse cuando se realizan de manera positiva. [13]
Un importante banco finlandés acusó a un finlandés de 17 años de intento de robo de ordenador. El 9 de abril de 2003, el Tribunal Supremo de Finlandia lo condenó por el cargo y le ordenó pagar 12.000 dólares estadounidenses por los gastos del análisis forense realizado por el banco. En 1998, escaneó el puerto de la red bancaria en un intento de acceder a la red cerrada, pero no lo logró. [14]
En 2006, el Parlamento del Reino Unido votó una enmienda a la Ley de uso indebido de ordenadores de 1990, según la cual es culpable de delito quien "fabrica, adapta, suministra u ofrece suministrar cualquier artículo sabiendo que está diseñado o adaptado para su uso en el curso de o en conexión con un delito bajo la sección 1 o 3 [de la CMA]". [15] Sin embargo, el área de efecto de esta enmienda es confusa y, como tal, ampliamente criticada por los expertos en seguridad. [16]
Alemania, con el Strafgesetzbuch § 202a,b,c, también tiene una ley similar, y el Consejo de la Unión Europea ha emitido un comunicado de prensa afirmando que planea aprobar una ley similar también, aunque más precisa. [17]
En diciembre de 1999, Scott Moulton fue arrestado por el FBI y acusado de intento de invasión de computadoras bajo la Ley de Protección de Sistemas Informáticos de Georgia y la Ley de Abuso y Fraude Informático de Estados Unidos . En ese momento, su empresa de servicios de TI tenía un contrato vigente con el condado de Cherokee de Georgia para mantener y mejorar la seguridad del centro 911. Realizó varios escaneos de puertos en los servidores del condado de Cherokee para verificar su seguridad y finalmente escaneó el puerto de un servidor web monitoreado por otra compañía de TI, provocando una pelea que terminó en un tribunal. Fue absuelto en 2000, y el juez Thomas Thrash falló en Moulton v. VC3 ( ND Ga. 2000) [18] que no hubo daños que afectaran la integridad y disponibilidad de la red. [19]