Los puertos de­sem­pe­ñan una función destacada a la hora de que los paquetes de datos en­cue­n­tren el camino para alcanzar los objetivos deseados. En este sentido, funcionan como interfaz entre or­de­na­do­res y servicios o programas del sistema y son usados por los pro­to­co­los de red como TCP y UDP. En co­m­bi­na­ción con la dirección IP, los puertos permiten al sistema operativo no solo saber a qué ordenador ha de enviar el flujo de datos sino también a qué apli­ca­ción ha de entregar los paquetes.

¿Qué es el port scanning?

Los sistemas ope­ra­ti­vos hacen uso de los puertos para poder dirigir los paquetes entrantes o salientes a las apli­ca­cio­nes adecuadas. De este modo, los puertos actúan como in­te­r­fa­ces entre los programas e Internet ge­s­tio­na­das por los sistemas ope­ra­ti­vos. Para que una apli­ca­ción se pueda comunicar a partir de un puerto, primero hay que ha­bi­li­tar­lo, lo que acarrea una pro­ble­má­ti­ca: si la apli­ca­ción cuenta con brechas de seguridad, cada puerto liberado es también un punto de entrada posible para ataques. Para reducir el riesgo de ataques, debes tener co­n­s­ta­n­cia de los puertos abiertos en tu sistema y de las apli­ca­cio­nes que esconde.

Por port scanning se entiende aquel pro­ce­di­mie­n­to que tiene como objetivo analizar los puertos abiertos de un sistema in­fo­r­má­ti­co con la ayuda de he­rra­mie­n­tas es­pe­cia­les. Para poder llevar a cabo dicho escaneo, no es necesario re­gi­s­trar­se en el sistema de destino, sino solo estar conectado a él, por ejemplo, a través de una red local o de Internet. Con ayuda de los port scanners se envían, a modo de prueba, paquetes de datos es­pe­cia­les a los di­fe­re­n­tes puertos y se obtienen las co­rre­s­po­n­die­n­tes re­s­pue­s­tas o mensajes de error que la he­rra­mie­n­ta analiza y evalúa. In­de­pe­n­die­n­te­me­n­te de la fu­n­cio­na­li­dad del programa de port scanning que se use, no solo se pueden obtener datos acerca de cuáles son los puertos abiertos o cerrados, sino también sobre los servicios o apli­ca­cio­nes que utilizan los puertos co­rre­s­po­n­die­n­tes.

El port scanning re­pre­se­n­ta un medio muy eficiente al que los ad­mi­ni­s­tra­do­res de sistemas pueden recurrir para controlar el tráfico de datos de una red. De este modo, se pueden filtrar las posibles de­bi­li­da­des y reducir la su­pe­r­fi­cie de ataque. En algunos casos, también se pueden so­lu­cio­nar problemas de red concretos. Debido a que las he­rra­mie­n­tas no tienen una in­flue­n­cia si­g­ni­fi­ca­ti­va en la capacidad de re­n­di­mie­n­to de los sistemas que se examinan, pueden uti­li­zar­se sin va­ci­la­cio­nes para dichas medidas de seguridad.

También en el ámbito doméstico puede ser de utilidad el método del escáner de puertos, y es que en cuanto se instalan y se usan apli­ca­cio­nes que requieren una conexión a Internet, también se abren puertos au­to­má­ti­ca­me­n­te, siempre que el firewall no lo impida. El escaneo de puertos ayuda a mantener una visión general y muestra los puertos que ya han dejado de ser ne­ce­sa­rios y que, en co­n­se­cue­n­cia, pueden cerrarse para minimizar los riesgos que pueden afectar a la seguridad.

My­De­fe­n­der
Ci­be­r­se­gu­ri­dad completa
  • Escaneos antivirus pe­rió­di­cos
  • Copias de seguridad au­to­má­ti­cas y re­s­tau­ra­cio­nes

¿Cómo funciona el port scanning exac­ta­me­n­te?

Para escanear puertos existen no­r­ma­l­me­n­te di­fe­re­n­tes métodos, la mayoría de los cuales gira en torno al protocolo de conexión TCP. Para co­m­pre­n­der cuáles son los procesos básicos que tienen lugar mediante el port scanning, es de utilidad echar un vistazo a los aspectos generales del es­ta­ble­ci­mie­n­to de la conexión mediante el protocolo TCP:

  • En el marco del proceso de­no­mi­na­do ne­go­cia­ción en tres pasos, el cliente envía, en primer lugar, un paquete SYN (sy­n­ch­ro­ni­ze = “si­n­cro­ni­zar”) al puerto de destino co­rre­s­po­n­die­n­te.
  • Si este consigue llegar hasta una apli­ca­ción, recibe un paquete SYN/ACK combinado (sy­n­ch­ro­ni­ze ac­k­no­w­le­d­ge = “confirmar si­n­cro­ni­za­ción”) que confirma el es­ta­ble­ci­mie­n­to de la conexión.
  • El cliente responde en el tercer y último paso con un paquete ACK (ac­k­no­w­le­d­ge = “confirmar”), por lo que se establece la conexión y ya puede comenzar el in­te­r­ca­m­bio de datos.

Si se establece el contacto con un puerto cerrado, el cliente recibe en el segundo paso un paquete con el flag RST (reset = “re­s­ta­ble­cer”) como respuesta, por lo que se in­te­rru­m­pe la ne­go­cia­ción.

Puesto que el in­te­r­ca­m­bio de datos con las diversas apli­ca­cio­nes re­su­l­ta­ría, por un lado, muy costoso y, por otro, muy complejo, el port scanning solo está limitado a un sencillo intento de conexión, como ponen de relieve los métodos de escaneo que te pre­se­n­ta­mos a co­n­ti­nua­ción.

TCP SYN

En el caso de TCP SYN se puede hablar de un escaneo medio abierto, ya que este no tiene como objetivo el es­ta­ble­ci­mie­n­to de una conexión TCP completa. En esta modalidad, se pueden enviar paquetes SYN ha­bi­tua­les a cada uno de los puertos con el port scanner, tras lo que se espera una respuesta por parte del host de destino. Si este responde con un paquete SYN/ACK, esto indica que el puerto co­rre­s­po­n­die­n­te está abierto y que es posible es­ta­ble­cer la conexión. Si la respuesta consiste en un paquete RST, esto indicará que el puerto está cerrado. Si el host de destino no ha enviado todavía una respuesta, todo indica que se ha in­te­r­pue­s­to un filtro de paquetes, como, por ejemplo, un firewall.

Los escaneos TCP SYN no son visibles para las apli­ca­cio­nes revisadas y no generan, por lo tanto, datos de registro, de ahí que también reciben el nombre de stealth scans (“escaneos sigilosos”).

TCP connect

Si haces uso de tu port scanner para llevar a cabo un sondeo del tipo connect, en este caso no generas ni envías los paquetes de datos motu proprio, sino que recurres para ello a la llamada al sistema connect. Esta está di­s­po­ni­ble para casi todos los sistemas ope­ra­ti­vos.

Con la co­n­fi­r­ma­ción de que el puerto co­rre­s­po­n­die­n­te está abierto, se considera que la conexión se ha realizado con éxito. Si la conexión falla, el puerto se marca como cerrado.

Si se establece la conexión por completo, en los archivos de registro de las apli­ca­cio­nes con puertos abiertos se ve fá­ci­l­me­n­te si se ha utilizado este método de sondeo, pero no qué programas de filtrado se han utilizado. Sin embargo, si careces de los derechos para enviar paquetes de datos en bruto, el método del TCP connect es una al­te­r­na­ti­va útil al escaneo SYN.

TCP FIN, Xmas y Null

Con estos tres métodos de port scanning también se puede di­fe­re­n­ciar entre los puertos abiertos y los cerrados. Para ello se pueden aplicar los dos pri­n­ci­pios básicos de TCP, re­gi­s­tra­dos en la co­rre­s­po­n­die­n­te RFC 793“):

  1. Un puerto cerrado siempre tiene que responder a los paquetes entrantes que no sean paquetes RST con un paquete RST propio.
  2. El puerto abierto tiene que ignorar todos los paquetes no marcados como SYN, RST o ACK.

Los tres métodos de escaneo an­te­rio­r­me­n­te me­n­cio­na­dos se hacen eco de esta situación a la hora de sondear sistemas de co­n­fo­r­mi­dad con las pu­bli­ca­cio­nes Request For Comment con sus paquetes in­di­vi­dua­les:

  • El escaneo Null no coloca ninguna marca especial.
  • En el FIN, el port scanner envía paquetes FIN (finish= terminar).
  • Los escaneos Xmas combinan las marcas FIN, PSH (push= empujar) y URG (urgent= urgente), por lo que “iluminan” el paquete del mismo modo en que lo hace un árbol de Navidad.

Estos tres métodos se comportan exac­ta­me­n­te de la misma manera. Los paquetes de prueba que se envían se ocupan de que, a causa de las di­s­po­si­cio­nes de RFC, un puerto cerrado responda con un paquete RST y de que un puerto abierto no muestre ninguna reacción. No obstante, debido a que solo algunos routers tra­n­s­mi­ten mensajes de error cuando se filtra un puerto, también puede darse una ausencia de reacción en el caso de un puerto filtrado. Aunque estos pro­ce­di­mie­n­tos resultan más discretos que los escaneos SYN, tienen la de­s­ve­n­ta­ja de que no funcionan cuando los sistemas no se ciñen exac­ta­me­n­te al protocolo RFC 793. Windows se co­n­s­ti­tui­ría en este caso como el re­pre­se­n­ta­n­te más im­po­r­ta­n­te.

UDP

En los escaneos UDP se envían en­ca­be­za­dos UDP vacíos y sin datos a todos los puertos de destino. Si un servicio responde con un paquete UDP, queda co­n­fi­r­ma­do que el puerto que le pertenece está abierto. Si el router envía al port scanner el mensaje de error “Port un­rea­cha­ble” (Type 3, Code 3), este sabrá que el puerto está cerrado. Otros tipos de mensajes de error informan de que un filtro de paquetes bloquea el puerto. El gran problema que se deriva de escanear puertos con UDP es que requiere mucho tiempo, ya que en numerosos sistemas la tarea de emitir los co­rre­s­po­n­die­n­tes mensajes de error puede tardar mucho tiempo por motivos de seguridad y los puertos abiertos solo responden de forma muy irregular. El núcleo de Linux limita el número de mensajes a, por ejemplo, uno por segundo, lo que significa que se pueden escanear 65 535 puertos en unas 18 horas.

¿Qué tipos de port scanners hay?

Hoy en día existen escáneres muy diversos con fu­n­cio­na­li­da­des muy variadas. Además, la mayoría de estas he­rra­mie­n­tas son gratis (freeware) o de código abierto (open source). En muchos casos se trata de programas de líneas de comandos que también pueden uti­li­zar­se a través de su­pe­r­fi­cies gráficas separadas. Asimismo, la red ofrece numerosas so­lu­cio­nes con las que se pueden escanear puertos di­re­c­ta­me­n­te en el navegador. A nivel funcional, este tipo de servicios está bastante limitado y solo ofrece, por ejemplo, el port scanning de DNStools, la po­si­bi­li­dad de examinar puertos por separado. Por este motivo, se co­n­vie­r­ten en una cómoda opción para realizar un análisis rápido en el ordenador de casa.

Netcat, la veterana de las he­rra­mie­n­tas de red

Netcat, cuya abre­via­tu­ra es nc, fue publicada en 1996 de la mano de un de­sa­rro­lla­dor anónimo bajo el pseu­dó­ni­mo de “Hobbit”. Aunque fue diseñada ori­gi­na­ria­me­n­te para pla­ta­fo­r­mas basadas en UNIX, hoy en día existen diversas opciones de po­r­ta­bi­li­dad para otros sistemas como Windows, pero también se han de­sa­rro­lla­do versiones como GNU Netcat, OpenBSD Netcat, Cryptcat o Netcat6 (también soporta IPv6), que, de manera habitual, pueden im­ple­me­n­tar­se en numerosas di­s­tri­bu­cio­nes de Linux. La versión básica de la he­rra­mie­n­ta de línea de comandos está diseñada, en principio, para enviar o leer datos a través de las co­ne­xio­nes de red mediante pro­to­co­los como TCP o UDP, aunque también puede ser utilizada para llevar a cabo un port scanning simple. Así, por ejemplo, con un comando sencillo como

nc -zv localhost 20-30
bash

se puede comprobar el estado de los puertos co­m­pre­n­di­dos entre los números 20 y 30 en el sistema que se está eje­cu­ta­n­do. El control de los puertos UDP precisa del parámetro adicional –u, pero además puedes in­tro­du­cir los nombres del host o las di­re­c­cio­nes IP de sistemas externos en lugar del localhost.

Análisis completo de la red con Nmap

Network Mapper (Nmap), nacida en 1997, es una he­rra­mie­n­ta fu­n­da­me­n­tal y poderosa que, sobre todo, llama la atención por su función como escáner de puertos. El programa de­sa­rro­lla­do para sistemas unixoides está sujeto a la licencia GPL y desde el año 2000 también está di­s­po­ni­ble para sistemas Windows, aunque con algunas li­mi­ta­cio­nes. De esta manera, el método TCP connect, por ejemplo, conlleva una cantidad de tiempo de­s­pro­po­r­cio­na­da debido a la API de la red de Windows y el escaneo de los puertos del propio sistema solo es posible si se dan ciertos rodeos. No­r­ma­l­me­n­te, Nmap puede manejarse a través de la línea de comandos. Sin embargo, con Zenmap existe una su­pe­r­fi­cie gráfica de alto re­n­di­mie­n­to con la que se puede utilizar la he­rra­mie­n­ta de red de un modo todavía más cómodo.

Tanto el inventor de Nmap, Gordon Lyon, como el equipo de de­sa­rro­lla­do­res de dicha he­rra­mie­n­ta, de­sa­rro­llan el programa y sus funciones para escanear puertos de manera continua, lo que se convierte en el motivo principal que explica la gran cantidad de ca­ra­c­te­rí­s­ti­cas que la ide­n­ti­fi­can. Las técnicas como el OS fi­n­ge­r­pri­n­ti­ng (el re­co­no­ci­mie­n­to de host de destino por parte del sistema operativo) y la lectura de los servicios ocultos tras un puerto co­n­vie­r­ten a Nmap en una de las so­lu­cio­nes de port scanning más populares. En los métodos de escaneo di­s­po­ni­bles que te mostramos en la tabla que aparece a co­n­ti­nua­ción se pone de ma­ni­fie­s­to su gran di­ve­r­si­dad:

Método de escaneo de puertos Comando de Nmap De­s­cri­p­ción
TCP Connect nmap -sT host La opción clásica para aquellos que no son ad­mi­ni­s­tra­do­res
TCP Syn nmap -sS host Método de co­m­pro­ba­ción para ad­mi­ni­s­tra­do­res rápido y que pasa des­ape­r­ci­bi­do
TCP FIN/XMAS/Null nmap -sF host nmap -sX host nmap -sN host Métodos capaces de evitar firewalls
TCP Ping nmap -sP host Este no es un método de escaneo clásico y su función es ayudar a comprobar la ac­ce­si­bi­li­dad de un host
TCP ACK nmap -sA host Verifica puertos filtrados, pero no ofrece una di­fe­re­n­cia­ción entre puertos abiertos y cerrados
TCP Window nmap -sW host Co­m­pa­ra­ble con el escaneo, puede verificar algunos puertos abiertos y cerrados
TCP Maimon nmap -sM host Co­m­bi­na­ción entre FIN y ACK
TCP Idle nmap -sI Zombie-host Este es el método para escanear puertos más discreto y complejo, pero también el más lento, se ejecuta en un tercer ordenador, de­no­mi­na­do zombie
UDP nmap -sU host Método de escaneo para los puertos UDP sin conexión
SCTP Init nmap -sY host Escaneo de puertos con SCTP una al­te­r­na­ti­va a TCP y UDP
Protocolo IP nmap -sO host No permite escanear puertos, sino que comprueba cuáles son los pro­to­co­los basados en di­re­c­cio­nes IP so­po­r­ta­dos en el sistema de destino

En la página web oficial de Nmap puedes descargar tanto Nmap como la interfaz Zenmap Nmap para el sistema operativo deseado. Para ello, puedes acceder tanto a la versión actual (stable) como a la versión beta (de­ve­lo­p­me­nt).

El control de los puertos no siempre se realiza de manera legal. Si se concluye en última instancia con un intento de ataque al apro­ve­char, por ejemplo, una brecha de seguridad, se puede incurrir en actos punibles.

Algo menos clara parece la situación legal cuando, por ejemplo, se paraliza un sistema in­fo­r­má­ti­co debido a un port scanning intensivo. Ya que los métodos de control pueden suponer una gran carga para el sistema de destino debido a la alta fre­cue­n­cia de pe­ti­cio­nes de conexión, se puede producir el bloqueo del sistema. Es posible, incluso, que los re­s­po­n­sa­bles del sistema de destino se den cuenta de la so­bre­ca­r­ga antes del fallo general y lo co­n­si­de­ren como un intento de ataque. En este caso, no se puede descartar la po­si­bi­li­dad de tener que hacer frente a las co­n­se­cue­n­cias legales.

En caso de provocar una so­bre­ca­r­ga en el sistema externo de manera in­te­n­cio­na­da, se hablaría de los famosos ataques DoS y DDoS, que casi con total seguridad pueden incurrir en un pro­ce­sa­mie­n­to penal.

De la in­fo­r­ma­ción an­te­rio­r­me­n­te expuesta se deduce que es co­n­ve­nie­n­te ase­gu­rar­se de que se tiene la au­to­ri­za­ción para realizar el de­no­mi­na­do escaneo de puertos en el sistema co­rre­s­po­n­die­n­te. También es aco­n­se­ja­ble usar esta técnica úni­ca­me­n­te por motivos de seguridad y no por pura cu­rio­si­dad. Las medidas mostradas para poner en marcha el port scanning ponen de relieve la im­po­r­ta­n­cia de no perder de vista los puertos tanto del propio sistema o del ordenador de red como de los servicios a los que se puede acceder a través de ellos.

Ir al menú principal