ciberseguridad
penetration testing
El escaneo de puertos es un proceso mediante el cual, a través de herramientas especializadas, se analizan los puertos de un sistema informático. Al escanear puertos se puede obtener información como los puertos que están abiertos, los que están cerrados o aquellos que están protegidos con cortafuegos.
Este procedimiento se puede usar con distintas finalidades. Por ejemplo, los administradores de sistemas lo emplean para conocer los servicios que está ofreciendo la máquina o para analizar el estado de los puertos y detectar y subsanar posibles vulnerabilidades.
Sin embargo, como veremos más adelante, el escaneo de puertos abiertos también se puede usar con fines poco éticos. Del mismo modo que los administradores de redes lo pueden usar para detectar y corregir vulnerabilidades, los ciberdelincuentes lo pueden usar para explotar dichas brechas de seguridad.
A continuación vemos las técnicas más habituales para realizar un scan de puertos.
connect()
. Si se logra establecer conexión, quiere decir que el puerto está abierto; si no se consigue conectar, significa que el puerto está cerrado.No, el escaneo de puertos no siempre es legal. El port scanning se puede utilizar para fines legítimos. Por ejemplo, para que los administradores de redes y sistemas comprueben el estado de los puertos, las conexiones y los programas o aplicaciones que está ofreciendo el equipo. También se puede usar como un método para el análisis de vulnerabilidades y brechas de seguridad. Los administradores pueden escanear los puertos para crear un mapa de las conexiones y detectar posibles fallos o vulnerabilidades. Por ello, se puede decir que el escaneo de puertos es totalmente legal, siempre y cuando se tenga permiso para acceder al equipo y se realice con fines legítimos.
Sin embargo, también puede ser usado con objetivos poco éticos. Muchos atacantes emplean este tipo de técnicas para aprovecharse de esos fallos de seguridad. Al final, los puertos abiertos pueden funcionar como una puerta de entrada a un equipo, para luego realizar otras actividades maliciosas, como ataques de denegación de servicio.
Al hilo del punto anterior, cabe decir que los ataques de escaneo de puertos son uno de los métodos más empleados por los crackers para descubrir vulnerabilidades en un sistema. De hecho, lo primero que hará un cibercriminal antes de lanzar su ataque será un portscan, lo que le permitirá saber información como la arquitectura de la red, los servicios que ofrecemos en nuestros equipos y, por supuesto, buscar agujeros o brechas de seguridad en los mismos. Dicho de otro modo, cada puerto abierto es una potencial puerta de entrada al equipo, por lo que es necesario tomar ciertas medidas de seguridad.
Una de ellas es no abrir más puertos de los necesarios, Normalmente, los equipos ya vienen con una serie de puertos abiertos predeterminados para poder ofrecer los servicios y funciones básicas. También es aconsejable el uso de firewall o filtradores de paquetes, los cuáles funcionan como una barrera que protege al equipo de intrusos. Otra recomendación es mantener siempre los equipos y sistemas actualizados a su última versión, ya que los desarrolladores suelen crear parches que subsanan posibles vulnerabilidades.
Por último, está la opción de usar herramientas como PortScanDetector, que permite detectar cuándo se está realizando un rastreo de nuestros puertos. Básicamente, avisa a los administradores en aquellos casos en los que han sido consultados más de 10 puertos, lo cual puede indicar que un hacker está intentando acceder al equipo.
El escaneo de puertos y servicios es una práctica común en pruebas de penetración y evaluaciones de seguridad para identificar servicios activos, puertos abiertos y posibles vulnerabilidades en un sistema. Aquí hay pasos generales y algunas herramientas comunes utilizadas para realizar este tipo de escaneo:
Nmap: Herramienta versátil de escaneo de puertos y mapeo de redes.
Ejemplo de Uso:
1nmap -p 1-1000 192.168.1.1
Masscan: Escáner de puertos de alto rendimiento.
Ejemplo de Uso:
1masscan -p1-65535 192.168.1.1
Unicornscan: Herramienta de escaneo de red y puertos con enfoque en velocidad y eficiencia.
Ejemplo de Uso:
1unicornscan -mU -Iv 192.168.1.1:a
Hping3: Herramienta avanzada de envío de paquetes, útil para escaneo de puertos.
Ejemplo de Uso:
1hping3 -S -p 80 192.168.1.1
Netcat (nc): Herramienta de utilidad de red que puede utilizarse para escanear puertos.
Ejemplo de Uso:
1nc -zv 192.168.1.1 1-100
Es fundamental recordar que el escaneo de puertos y servicios debe llevarse a cabo de manera ética y legal, con el consentimiento explícito del propietario del sistema o la red objetivo.
Nmap es una utilidad completamente gratuita y de código abierto, nos permite descubrir redes y host, así como realizar auditoría de seguridad. Este programa es compatible con sistemas operativos Linux, Windows y también macOS, pero en todos ellos se utiliza a través de la línea de comandos, aunque tenemos la posibilidad de instalar ZenMap que es la utilidad gráfica de Nmap para hacer los escaneos de puertos a través de la interfaz gráfica de usuario. Si no quieres pelearte con comandos a través de consola, esta interfaz gráfica de usuario te podría ser útil para los primeros pasos con este gran programa, no obstante, cuando tengas más experiencia seguramente ejecutes todas las órdenes directamente desde terminal.
Nmap nos permite detectar hosts de una red local, y también a través de Internet, de esta forma, podremos saber si dichos hosts (ordenadores, servidores, routers, switches, dispositivos IoT) están actualmente conectados a Internet o a la red local. Esta herramienta también permite realizar un escaneo de puertos a los diferentes hosts, ver qué servicios tenemos activos en dichos hosts gracias a que nos dirá el estado de sus puertos, podremos saber qué sistema operativo está utilizando un determinado equipo, e incluso podremos automatizar diferentes pruebas de pentesting para comprobar la seguridad de los equipos.
Nmap tiene diferentes tipos de escaneo de puertos, pueden ser a través de segmentos TCP, datagramas UDP o paquetes ICMP, además, permite realizar escaneos de forma oculta para que sean difíciles de detectar por los firewalls. Por supuesto, podremos hacer escaneo de puertos sobre ciertos puertos en concreto, entre rangos de puertos, rangos de direcciones IP, posibilidad de usar paquetes TCP null, FIN, Xmas y ACK además de SYN, para localizar los puertos TCP abiertos.
Otras características que nos brinda esta herramienta, es la posibilidad de hacer un completo inventario de red, e incluso comprobar si un determinado host o servicio sigue levantado y funcionando. Este programa fue diseñado para escanear una gran cantidad de hosts, por tanto, si necesitas escanear múltiples objetivos no tendrás problemas. Este programe es muy flexible, incorpora decenas de técnicas avanzadas para escanear hosts y puertos, además, también permite realizar auditorías a través de NSE (Nmap Search Engine), por lo que es realmente potente.
👉 Nmap tiene varios estados en los puertos que aparecerán cuando hagamos un escaneo de puertos. Es fundamental saber qué significa cada estado de Nmap, porque con cualquier escaneo de puertos, nos devolverá diferentes estados.
Como has podido ver, Nmap es una herramienta muy versátil. Esta se puede utilizar para gran variedad de tareas, sobre todo relacionadas con la seguridad de la información. Pero también nos permite realizar administración de redes. Algunos de los usos más comunes para Nmap son:
Como hemos visto, con nmap tenemos una herramienta especializada en analizar los puertos de los sistemas informáticos, obteniendo información sobre si están abiertos, cerrados o protegidos con cortafuegos. Esto se puede hacer con multitud de finalidades, como saber qué servicios se están ofreciendo desde un equipo por los administradores o por seguridad, buscando solventar algún problema que pueda llegar en forma de vulnerabilidad.
Pero esto también se puede utilizar con fines maliciosos. Igual que los Administradores pueden analizarlos para buscar posibles vulnerabilidades, un atacante puede hacerlo por exactamente lo mismo, pero con la intención de aprovecharse de ello para infiltrarse en la red aprovechando una brecha en la seguridad.
Nmap es una herramienta que se considera altamente efectiva. Esto se debe a una combinación de funcionalidad y características avanzadas, que hace de esta solución una de las mejores que podemos encontrarnos. Esta cuenta con la capacidad de realizar escaneos de vulnerabilidades, para identificar posibles debilidades en las configuraciones de los sistemas de seguridad. Por lo cual, de no ser efectiva, no sería una herramienta tan conocida. Por lo cual podríamos decir, que la propia fama de Nmap es un buen identificativo para la calidad que puede proporcionarnos en una gran variedad de situaciones diferentes.
Por otro lado, más allá de su eficacia en identificación de dispositivos, servicios y vulnerabilidades, está su capacidad para trabajar con diferentes protocolos de red. Entre otros, TCP, UDP, ICMP e IP. Todo lo cual, se puede integrar con otras herramientas de seguridad y análisis. Pueden ser herramientas como Metasploit o incluso Wireshark. Lo cual hace de Nmap una herramienta muy versátil para todo tipo de sistemas.
En cambio, no estamos ante una solución que sea perfecta, ni que represente una medida de seguridad ante problemas. A pesar de que es muy efectiva y poderosa, requiere de cierto conocimiento por parte de los usuarios que la utilicen. Así como la disposición de las habilidades necesarias para darle uso con todas las garantías, y aprovechando su rendimiento y funciones al máximo. También debemos pensar que muchos dispositivos pueden contar con algún tipo de protección contra los escaneos de las aplicaciones como Nmap, o pueden incluso ser complicados de detectar. Pero en estos casos, ya no sería un problema de la eficiencia de Nmap ni de sus funciones, sino de las medidas de protección establecidas en esos dispositivos. En todo caso, si buscamos una solución efectiva, fiable y con buena trayectoria, Nmap es una de las mejores soluciones actualmente.
Como puedes ver, con NMAP estamos ante una herramienta de código abierto, por lo cual tiene una alta capacidad de personalización. Lo cual la lleva a ser una solución altamente adaptable a las necesidades de cada usuario, en todo tipo de escenarios. Pero esto es algo que no se realiza a la ligera, sino que hay algunos factores que destacan por encima de otros. Empezando por las opciones de escaneo, donde la gama de opciones es muy amplia. Esta permite gestionar muchos parámetros y opciones avanzadas, que modifican por completo el funcionamiento de NMAP. El escaneo personalizado, permite disponer de información muy valiosa, y de todo tipo al realizar análisis de puertos, por ejemplo.
Por otro lado, están los scripts NSE (Nmap Scripting Engine). Esta es una de las características más potentes de NMAP, la cual permite ejecutar scripts muy personalizados durante el tiempo de escaneo. Al poder crear los scripts por nuestra parte, pueden ser todo lo complejos que sea necesario. Y como tal nos da ese añadido en personalización, el cual no tendríamos sin esta sección de NMAP. Todo se hace buscando la salida personalizada de datos, donde se pueden establecer muchos parámetros. Desde el formato de salida, generar informes HTML, y los resultados que vamos a necesitar que incluya el análisis que se realiza en la red.
Por último, NMAP cuenta con una gran capacidad de integración con otras herramientas. Una de las características más llamativas, es el poder establecer NMAP como entrada para otras herramientas de seguridad que utilicemos, o incluso para detección de intrusos. Lo cual, de nuevo, se puede combinar con los scripts que mencionamos previamente. Una vez que hemos visto las principales características de Nmap, y el estado de los puertos que tenemos disponibles, vamos a instalarlo y utilizarlo.
Lo primero que tenemos que hacer para utilizar este programa tan potente, es descargarlo y posteriormente instalarlo. En la sección de descargas de Nmap podés encontrar todos los enlaces, binarios y código fuente para su instalación en sistemas operativos Windows, Linux y MacOS. Este programa, actualmente lo tenemos disponible en todos los repositorios de los sistemas operativos basados en Linux, por lo que su instalación es realmente sencilla. En Kali Linux ya viene instalado, pero si en tu Linux no esta instalado simplemente ejecutando la orden de instalación seguido de «nmap», instalaras el programa sin dificultades.
1sudo apt install nmap
Nmap es un programa muy avanzado y complejo, con decenas de comandos y ataques que vamos a poder realizar, con el objetivo de descubrir todos los hosts que tengamos en una red local doméstica o profesional, además, también es capaz de detectar hosts en Internet, es decir, vamos a poder escanear uno a uno cualquier dirección IP de Internet e incluso subredes que sean públicas.
Una vez que hemos descubierto que el host está online, se le puede realizar un escaneo rápido de puertos y comprobar si tiene un firewall filtrando todos los paquetes, o bien tenemos un puerto abierto para poder explotar alguna vulnerabilidad. Nmap permite utilizar tanto direcciones IPv4 privadas y públicas, como también direcciones IPv6, con el objetivo de poder escanear los puertos de cualquier host.
A continuación, veremos algunos ejemplos de cómo se utiliza Nmap a nivel usuario, y también con comandos algo más avanzados, y es que este programa nos permitirá descubrir con cierta exactitud qué sistema operativo está utilizando el host remoto, ideal para obtener la máxima información posible.
Si quieres realizar un escaneo rápido de puertos a un determinado host, debemos teclear el siguiente comando. Este comando básico se encargará de escanear los principales puertos a la dirección IP privada o pública definida, un detalle muy importante es que no escaneará todos los puertos, sino los más utilizados habitualmente.
1nmap [ip]
Por ejemplo, si queremos realizar un escaneo rápido de los principales puertos a un host con dirección IP 192.168.1.1, la orden sería la siguiente:
1nmap 192.168.1.1
El programa nos devolverá los puertos que se encuentran abiertos en el equipo objetivo.
En el caso de querer escanear todos y cada uno de los puertos tendremos que recurrir al siguiente comando y poner un rango desde el puerto 1 hasta el 65535, de esta forma estaremos comprobando si todos y cada uno de los puertos están abiertos, cerrados o filtrados.
En lugar de realizar un escaneo de todos los puertos, podemos establecer un rango de puertos a comprobar. Para ello ejecutaremos:
1nmap -p [rango] [ip]
Si queremos realizar un escaneo de puertos desde el 20 TCP hasta el 200 TCP en la dirección IP 192.168.1.1, basta con ejecutar la siguiente orden:
1nmap -p 20-200 192.168.1.1
El programa nos indicará dentro de ese rango qué puertos están abiertos.
Dependiendo de la latencia de la conexión entre nuestro equipo y el host remoto, y también el número de puertos a analizar, este proceso podría durar desde varios segundos hasta unos 10 minutos aproximadamente.
Podemos indicar a Nmap que detecte el sistema operativo. Esto lo realiza enviando paquetes y analizando la forma en que los devuelve, siendo en cada sistema totalmente diferente. Junto a esto, realizará una exploración de puertos y de los servicios en busca de vulnerabilidades. Asimismo, el escaneo devolverá información útil. Para ello debemos ejecutar:
1nmap -A -v [ip]
Si queremos realizar este escaneo a la dirección IP 192.168.1.1 podemos ejecutar la siguiente orden:
1nmap -A -v 192.168.1.1
Esta prueba de detección del sistema operativo no es del todo fiable porque depende de muchos parámetros, en algunos casos la exactitud es muy buena, sobre todo en diferenciar si es Windows o Linux, pero dentro del mundo Linux es realmente complicado conocer qué sistema operativo es en concreto.
Este programa es realmente completo, hasta el momento hemos utilizado los comandos básicos para descubrir hosts y también para ver si tiene los puertos abiertos, sin embargo, esto no se queda así, y tenemos un gran listado de comandos para exprimir al máximo esta herramienta.
Direcciones o rangos IP, nombres de sistemas, redes, etc.
En la mayoría de ocasiones, cuando los usuarios están empezando a utilizar esta herramienta, lo más probable es que intenten la resolución de la mayoría de problemas con el tipo de escaneo SYN porque es uno de los más versátiles. Pero, a medida que avanzan y conocen la herramienta en profundidad, se darán cuenta de que ampliarán su abanico de soluciones y aquí abajo explicamos un poco algunos de los comandos que resultan más útiles al momento de analizar puertos.
Detección de servicios y versiones:
Evasión de Firewalls/IDS
Parámetros de nivel de detalle y depuración
Otras opciones
Opciones interactivas
Scripts
Formatos de salida
💡 Principalmente estos son los comandos de que dispone Nmap. Antes de terminar, debemos decir que Nmap dispone de multitud de opciones con las que poder realizar completos análisis de redes. Podemos consultar todas las opciones disponibles tecleando:
1nmap --help
Nmap es sin duda una herramienta muy sencilla y completa para realizar auditorías de redes, pero esto no acaba aquí, también tenemos disponible Nmap NSE para realizar pentesting avanzados.
Otras técnicas de escaneo
Como hemos visto, nmap ofrece muchos parámetros para realizar un escaneo más a medida, pero actualmente existen otros métodos para realizar esta tarea los cuales pueden ser interesantes. Cada uno de ellos tiene sus propias características, y pueden variar en efectividad.
Gracias a estas técnicas de escaneo avanzadas, pordemos determinar si los puertos están abiertos o cerrados.
Nmap Search Engine o también conocido como Nmap NSE, es una gran base de datos con miles de scripts que nos permitirá automatizar la realización de pentesting a sistemas y redes. El primer paso de cualquier pentesting es realizar un escaneo de puertos, una vez realizado este escaneo de puertos, podremos intentar explotar vulnerabilidades en los servicios que hay funcionando detrás de un determinado puerto, por ejemplo, podríamos atacar servidores web, servidores Samba, FTP, servidores SSH, servidores DNS, comprobar si los diferentes servicios tienen vulnerabilidades conocidas o directamente intentar autenticarnos en ellos, si es que tienen autenticación como en el FTP o SSH.
NMAP NSE es un conjunto de scripts que nos permitirá automatizar muchas acciones, como realizar ataques de fuerza bruta a servidores Samba, con el objetivo de intentar acceder a ellos y hacernos con el control, aunque también podríamos atacarlo para realizarle un ataque de denegación de servicio y que el servicio no esté disponible. Lo mismo podríamos hacer con los servidores FTP, servidores SSH y mucho más, sobre todo, los servidores web que deben tener un puerto abierto en el firewall son los que más se deben proteger para evitar o mitigar los ataques que nos puedan realizar.
Por ejemplo, si queremos realizar un ataque de fuerza bruta, basado en un listado de usuarios (con un archivo que se llame usuarios.txt) y con un listado de contraseñas a probar (con un archivo que se llame claves.txt) a un servidor SSH de un determinado equipo que tiene la IP 192.168.25.01, podemos poner el siguiente comando:
1nmap -p 22 --script ssh-brute --script-args userdb=usarios.txt,passdb=claves.txt --script-args ssh-brute.timeout=4s 192.168.25.01
Si queremos saber si un servidor FTP tiene habilitado la autenticación anónima, podremos hacerlo fácilmente poniendo la siguiente orden:
1nmap -sV -sC -p21 192.168.25.01
Si queremos realizar un ataque de fuerza bruta a un servidor FTP a un servidor con la IP 99.99.99.99, podemos poner el siguiente comando:
1nmap -p 21 --script ftp-brute 192.168.25.01
Disponemos de una grandísima cantidad de scripts dentro de Nmap NSE con el objetivo de comprobar la seguridad de decenas de servicios, porque no solamente tendremos los típicos de servidores Samba, FTP, SSH y más, sino que también podremos atacar de forma muy concreta un servidor web con cabeceras HTTP especiales para ver si hay vulnerabilidades, por supuesto, tendremos scripts específicos que nos permitirá explotar vulnerabilidades al PHP de los servidores web, por supuesto, también podremos explotar vulnerabilidades a los diferentes servidores Samba, FTP y SSH, es decir, vulnerabilidades conocidas que ya han sido solucionadas, pero que es posible que todavía el objetivo las tenga operativas. Por este motivo es tan importante actualizar cuanto antes todos los servicios que tengamos expuestos a Internet, y también servicios que tengamos expuestos a la red local, porque con un malware podría explotar una vulnerabilidad y convertirse el ataque de penetración en un ataque de ransomware para cifrar todos los archivos y carpetas.
Recomiendo visitar la web oficial de uso de NSE donde encontrás todos los scripts que hay actualmente en esta gran base de datos, además, tendrás ejemplos de cómo utilizarlos.
Zenmap es una herramienta gratuita que podemos utilizar para escanear los puertos. Podemos saber cuáles tenemos abiertos, para evitar problemas a la hora de usar algunos programas o acceder a un servidor. Se trata de la interfaz gráfica del popular programa de código abierto Nmap, que permite hacer un escaneo de puertos completo de cualquier equipo conectado. Hay que indicar que esta herramienta, que es totalmente gratuita, está disponible para diferentes sistemas operativos como Microsoft Windows, Linux o macOS. Permite a los usuarios ejecutar diferentes tipos de análisis de puertos. Es ideal tanto para usuarios menos experimentados como también para los más avanzados.
Para comenzar a utilizar Zenmap lo primero que tenemos que hacer es descargarlo. Podemos hacerlo desde la página oficial de Nmap. Allí encontraremos las diferentes versiones, según el sistema operativo que estemos utilizando. El proceso de instalación es sencillo, rápido e intuitivo. En unos segundos lo tendremos listo para utilizar.
Cuando lo hayamos instalado simplemente tendremos que ejecutarlo. Nos encontraremos con una imagen como la de arriba. Podemos elegir un escaneo de puertos a fondo, escaneo rápido, puertos TCP, UDP, etc. Con Zenmap podemos ver qué puertos hay abiertos en cualquier dispositivo. En el apartado de Objetivo tenemos que poner la dirección IP que corresponde a ese equipo para, posteriormente, realizar el escaneo para que muestre cuáles están abiertos. Por tanto lo primero que tenemos que hacer es saber cuál es la dirección IP de nuestro equipo.
En Windows este proceso es muy sencillo. Simplemente tenemos que ir a Inicio, ejecutamos el Símbolo del sistema y posteriormente ipconfig. Nos mostrará una serie de información entre las que podemos ver la puerta de enlace predeterminada (generalmente 192.168.1.1) así como la dirección IP de ese equipo. Cuando sepamos cuál es la dirección tendremos que ponerla en el apartado de Objetivo, en Zenmap. Posteriormente tendremos que elegir el tipo de escaneo que queremos realizar, como podría ser por ejemplo un escaneo completo de todos los puertos TCP.
En Zenmap, en la parte de arriba, encontraremos diferentes pestañas. Veremos Salida Nmap, Puertos/Servidores, Topología, Detalles del servidor y Escaneos. Todos ellos nos aporta información, así como poder elegir el tipo de servicio en la parte de la izquierda. Cuando le damos a Puertos/Servidores nos aparecerá una recopilación de todos los puertos abiertos y filtrados que hay en ese host. Hay que tener en cuenta que nos aparecerán más o menos puertos en función del tipo de escaneo que hayamos realizado.
Si pinchamos en Escaneos nos aparecerán todos los escaneos que hemos realizado. Los podemos guardar para poder analizar los datos en otra ocasión, así como también eliminarlos y que no aparezcan ahí.
Esto lo podemos hacer con cualquier otro equipo que tengamos conectado a la red. Por ejemplo, podemos comprobar también los puertos abiertos y hacer un escaneo a nuestro teléfono móvil. Únicamente vamos a necesitar conocer cuál es la dirección IP. Eso sí, hay que tener en cuenta que este proceso puede tardar más o menos según el tipo de dispositivo.
En definitiva, Zenmap es un programa interesante con el que podemos hacer escaneos de puertos. Lo podemos usar en Windows, que es el sistema operativo más utilizado en equipos de escritorio, así como en Linux y macOS. Su uso es sencillo e intuitivo y podremos tener un mayor control sobre qué puertos tenemos abiertos, especialmente cuando necesitamos conocer si un equipo va a funcionar correctamente al hacer uso de alguna aplicación que requiera de ciertos puertos abiertos.
Muchas empresas deciden implementar estos sistemas para tener un poco más de control sobre sus redes. Pero esto es algo que se debe estudiar de forma detenida, y siguiendo unos pasos para que todo el proceso sea totalmente eficiente. Estos pasos son:
👉 Como podemos ver, Nmap es una herramienta tremendamente útil, que nos puede dar muchas facilidades a la hora de gestionar redes.