Nmap: escanear puertos para detectar servicios y vulnerabilidades

Este tutorial explica cómo usar Nmap para encontrar servidores y vulnerabilidades detrás de los puertos.

Nmap es una de las herramientas de red más útiles que le permite mapear redes, descubrir hosts, escanear puertos, diagnosticar problemas de red, detectar y explotar vulnerabilidades y más.

Este tutorial se centra en la versión de los servicios y las técnicas de detección de vulnerabilidades. Los lectores que no estén familiarizados con Nmap pueden preferir comenzar leyendo nuestro tutorial básico de Nmap .

Todas las instrucciones de este documento contienen capturas de pantalla, lo que facilita que todos los lectores comprendan cómo se implementan en el terminal.

Escanear puertos para detectar servicios con Nmap

La primera sección de este tutorial explica cómo detectar servicios y su versión de software escuchando en puertos abiertos.

Como se muestra en la primera captura de pantalla, un escaneo regular de Nmap devolverá los puertos abiertos entre los 1,000 más utilizados. De forma predeterminada, Nmap escanea los 1000 puertos más populares.

Los puertos están asociados con protocolos de servicio relacionados. En el siguiente resultado, Nmap encuentra los puertos abiertos 21, 514 y 3128.

nmap 192.168.0.103

El usuario sabe que los puertos 21, 514 y 3128 están abiertos. Por ejemplo, sabe que hay un servidor FTP en el puerto 21. Pero el usuario quiere aprender el software FTP y todos los demás servicios.

Para detectar software y versiones, se puede pasar el indicador -sV (Versión), como se muestra en la siguiente captura de pantalla. En donde puede ver, se detectan Vsftpd 3.0.3 y Squid Proxy 4.13 .

nmap-sV 192.168.0.103

El indicador -A también devuelve versiones de servicio junto con información del sistema operativo.

En el siguiente ejemplo, el indicador -A reveló que el objetivo es un sistema operativo Linux, probablemente 2.6.18 o 2.6.22:

sudo nmap -A nic.ar

La siguiente sección de este tutorial describe las técnicas NSE (Nmap Scripting Engine). Este ejemplo práctico muestra qué indicador –script se implementa para incorporar el script de captura de banner en el escaneo.

El script de captura de banner analiza las respuestas del servicio para darse cuenta de su versión de software.

En el siguiente ejemplo, la secuencia de comandos del banner se ejecuta en el puerto de destino de escaneo 21, lo que revela que el servidor FTP es ProFTPD .

nmap -p 21 –script=bandera 66.97.40.223

Para finalizar esta sección y continuar con los tipos de exploración de vulnerabilidades, el siguiente ejemplo práctico muestra la implementación del indicador -O (Sistema operativo) para adivinar el sistema operativo de destino.

En este caso, Nmap está 93 % seguro de que el objetivo tiene Linux con kernel 4.4.

sudo nmap -O 66.97.40.223

Estas son las técnicas de Nmap más conocidas para la detección de versiones de sistemas operativos y servicios.

Detección de vulnerabilidades con NSE (Nmap Scripting Engine)

Esta sección describe algunas técnicas para detectar vulnerabilidades a través de escaneos Nmap, con la ayuda del NSE (Nmap Scripting Engine), explicado en nuestro tutorial NSE .

El Nmap Scripting Engine es un conjunto de scripts que los usuarios pueden incluir en sus escaneos, diseñado principalmente para detectar y explotar vulnerabilidades. Los usuarios también pueden escribir sus scripts para fines personalizados.

El primer paso para los scripts NSE es actualizar la base de datos, asegurándose de que Nmap esté actualizado con las últimas vulnerabilidades y técnicas.

Para actualizar NSE, ejecute el siguiente comando:

sudo nmap –script-updatedb

Después de actualizar la base de datos, el usuario puede ejecutar varios scripts para encontrar vulnerabilidades. Los scripts están clasificados por categorías que puede ver en https://nmap.org/nsedoc/categories/ .

En el siguiente ejemplo, el indicador –script llama a los scripts de la categoría vuln , buscando alrededor de 150 vulnerabilidades populares.

sudo nmap –script vuln 66.97.40.223 -v

Como puede ver en la siguiente captura de pantalla, Nmap informa que algunas vulnerabilidades se descartan mientras que otras son probables:

El script http-csrf permite a los usuarios escanear sitios web para encontrar vulnerabilidades csrf (Cross Scripting Request Forgery).

sudo nmap –script http-csrf linuxhint.com -v

Como puede ver a continuación, si se indica verbosidad ( -v ), Nmap imprime el resultado de todas las comprobaciones que realiza en el sitio web.

Los usuarios pueden implementar comodines para completar los nombres de los scripts. En el siguiente ejemplo, el usuario agrega todos los scripts relacionados con http o todos los scripts cuyo nombre comienza con «http», independientemente de cómo continúe.

sudo nmap –script «http*» linuxhint.com -v

El motor de secuencias de comandos de Nmap puede apuntar a redes completas para detectar computadoras infectadas con malware. Esta es una gran técnica para que los administradores se acerquen a posibles intrusiones de malware.

Los scripts de malware disponibles se pueden encontrar en https://nmap.org/nsedoc/categories/malware.html .

Detectar vulnerabilidades con Nmap y Vulscan

Vulscan es un conjunto adicional de scripts para NSE, que no está incluido en Nmap de forma predeterminada.

Vulscans se explica detalladamente en el tutorial de Nmap Vulscan , pero esta sección ofrece una breve revisión, instalación e instrucciones básicas.

Vulscan es un script de Nmap Scripting Engine para ayudar en las tareas de detección de vulnerabilidades,

Para obtenerlo, clone Vulscan usando el comando git , como se muestra a continuación:

clon de git https://github.com/scipag/vulscan

Cree un enlace suave al directorio de scripts de NSE ejecutando el siguiente comando:

sudo ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan

Ahora, Vulscan está disponible para ser llamado por el indicador –script para ejecutar verificaciones de vulnerabilidad adicionales.

La sintaxis es la siguiente:

nmap -sV –script=vulscan/vulscan.nse <Objetivo>

En el siguiente ejemplo, vulscan se lanza contra linuxhint.com .

Cuando Vulscan detecta un posible agujero de seguridad, ejecuta todos los scripts relacionados.

nmap -sV –script=vulscan/vulscan.nse linuxhint.com

Vulscan es una excelente adición para los usuarios de Nmap, especialmente aquellos acostumbrados al motor de secuencias de comandos de Nmap. Le recomendamos que continúe leyendo nuestro tutorial de Vulscan mencionado en la introducción de esta sección.

Vulnerables

Use el siguiente comando para clonar Nmap-vulners en su directorio de scripts NSE:

clon de sudo git https://github.com/vulnersCom/nmap-vulners.git /usr/share/nmap/scripts/vulners

Ejecute Nmap con vulners usando la siguiente sintaxis:

sudo nmap –script vulners/vulners.nse <Objetivo>

Acerca de NSE (motor de secuencias de comandos Nmap)

El NSE (Nmap Scripting Engine) se encuentra entre las funciones de Nmap más requeridas.

Es una colección de scripts para automatizar y personalizar tareas de escaneo. Los scripts se pueden ejecutar antes, durante o después del análisis.

Si bien Nmap ofrece diversas categorías de secuencias de comandos, los usuarios también pueden escribir sus propias secuencias de comandos en el idioma Lua.

Además, los scripts NSE se pueden usar para la explotación de vulnerabilidades para la detección de servicios y vulnerabilidades o incluso para ataques de fuerza bruta.

Los scripts se dividen en las siguientes categorías: auth , broadcast , default , discovery , dos , exploit , malware , intrusive , fuzzer , external , safe , version y vuln , la categoría utilizada en el primer ejemplo de uso en la sección NSE.

Los dispositivos virtuales metasploitables son un excelente recurso para probar las capacidades de NSE. Los scripts también se pueden incluir en escaneos masivos dirigidos a múltiples redes.

Los scripts del NSE se clasifican según criterios específicos basados ​​en el momento de la ejecución del script, el propósito del script y la funcionalidad.

La primera clasificación basada en el tiempo de ejecución incluye cuatro tipos de scripts:

  • Scripts de reglas previas: estos se ejecutan antes de cualquier fase de exploración de Nmap, por ejemplo, los scripts utilizados para generar nuevos objetivos.
  • Scripts de host: los scripts de host se ejecutan en el proceso de escaneo.
  • Scripts de servicio: estos scripts se ejecutan después de escanear cada lote de objetivos, como scripts de host.
  • Scripts de posregla: los scripts de posregla se ejecutan después del proceso de escaneo; estos scripts pueden aprovechar las vulnerabilidades descubiertas en el proceso de exploración.

La segunda clasificación se basa en la seguridad y los propósitos del script.

El propósito y la seguridad definen la categoría del guión. Las categorías se enumeraron anteriormente en este documento.

Conclusión

Nmap es extremadamente potente y flexible. En otros tutoriales sobre escaneo de puertos Nmap, no se reveló el descubrimiento de host. El contenido anterior muestra que cualquier usuario, independientemente del nivel de conocimiento, puede introducirse en la seguridad de TI y ejecutar tareas importantes, como escaneos de vulnerabilidades. Todas las instrucciones anteriores son válidas para todas las distribuciones de Linux y probablemente también para la herramienta de línea de comandos de Windows.

Nmap es el escáner de puertos vivo más antiguo, desarrollado inicialmente por Fyodor Vaskovich en 1997 para descubrir servicios y mapear redes. Escrito inicialmente en C, se reescribió a C++ y la comunidad de código abierto lo mejoró mucho en su segundo lanzamiento de 1998. Continúa agregando funciones y mejoras en la actualidad.

Es probablemente el motor de escaneo más utilizado para fines de diagnóstico y seguridad, el mercado ofrece muchas alternativas, pero las características de Nmap y los esfuerzos detrás de su comunidad aún no son igualados.

Gracias por leer este tutorial de Nmap que explica cómo escanear puertos para encontrar servicios y vulnerabilidades. Siga siguiéndonos para obtener más contenido profesional de seguridad de TI y Linux.