Escanear Vulnerabilidades con Nmap

NmapNmapBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá a escanear vulnerabilidades utilizando el script vuln de Nmap. Este script ayuda a identificar posibles debilidades de seguridad verificando problemas comunes como credenciales predeterminadas, software desactualizado y mal configuraciones.

Ejecutará el script vuln contra una dirección IP objetivo (utilizando 127.0.0.1 con fines de demostración dentro del entorno de la máquina virtual LabEx), escanear puertos específicos, agregar detalle para obtener una salida más detallada, guardar los resultados en un archivo y luego revisar las vulnerabilidades identificadas en la terminal Xfce, comparándolas con los resultados de la detección de servicios.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/scan_types("Scan Types and Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/verbosity("Verbosity Levels") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/scripting_basics("Scripting Engine Basics") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") subgraph Lab Skills nmap/output_formats -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} nmap/save_output -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} nmap/scan_types -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} nmap/target_specification -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} nmap/verbosity -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} nmap/os_version_detection -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} nmap/service_detection -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} nmap/scripting_basics -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} nmap/script_management -.-> lab-547109{{"Escanear Vulnerabilidades con Nmap"}} end

Ejecutar el script vuln con nmap --script vuln 192.168.1.1

En este paso, usaremos el script vuln de Nmap para escanear una dirección IP objetivo en busca de vulnerabilidades conocidas. El script vuln es una herramienta poderosa que puede ayudar a identificar posibles debilidades de seguridad en un sistema.

Antes de comenzar, repasemos brevemente qué son los scripts de Nmap. Los scripts de Nmap se escriben en el lenguaje de programación Lua y permiten extender la funcionalidad de Nmap. Se pueden utilizar para una variedad de tareas, incluyendo la detección de vulnerabilidades, el descubrimiento de servicios y la reconocimiento de red.

El script vuln es una colección de scripts diseñados para identificar vulnerabilidades comunes. Verifica una amplia gama de problemas, como credenciales predeterminadas, versiones desactualizadas de software y mal configuraciones.

Comencemos escanneando la dirección IP objetivo 192.168.1.1 utilizando el script vuln. Dado que 192.168.1.1 es una dirección IP privada, es improbable que sea directamente accesible desde el entorno de la máquina virtual LabEx. Con fines de demostración, usaremos 127.0.0.1 (localhost) como objetivo. Esto asume que hay un servicio en ejecución en la máquina virtual LabEx que podemos escanear.

Abra su terminal Xfce y ejecute el siguiente comando:

sudo nmap --script vuln 127.0.0.1

Es probable que tenga que usar sudo porque Nmap a menudo requiere privilegios elevados para realizar ciertos escaneos.

Este comando le dice a Nmap que ejecute el script vuln contra la dirección IP 127.0.0.1. Luego, Nmap intentará identificar cualquier vulnerabilidad en el sistema objetivo.

La salida mostrará los resultados del escaneo. Listará cualquier vulnerabilidad que se haya encontrado, junto con una descripción del problema y posibles pasos de corrección.

Salida de ejemplo (la salida real dependerá de los servicios en ejecución en 127.0.0.1):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.

80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds

En este ejemplo, Nmap escanearon los puertos 22 y 80 en 127.0.0.1. El script vulners, que es parte del conjunto de scripts vuln, no pudo encontrar ninguna vulnerabilidad conocida para los servicios en ejecución en esos puertos. Esto no necesariamente significa que el sistema sea completamente seguro, pero sí indica que no hay vulnerabilidades inmediatamente obvias.

Escanear un puerto específico con nmap --script vuln -p 80 127.0.0.1

En el paso anterior, escanneamos todos los puertos en 127.0.0.1 utilizando el script vuln. En este paso, centraremos nuestro escaneo en un puerto específico: el puerto 80. Esto es útil cuando quieres verificar rápidamente un servicio particular en busca de vulnerabilidades sin escanear todo el sistema. El puerto 80 se utiliza comúnmente para el tráfico HTTP (web).

La opción -p en Nmap te permite especificar qué puertos escanear. Puedes especificar un solo puerto, un rango de puertos o una lista separada por comas de puertos.

Para escanear solo el puerto 80 en 127.0.0.1 utilizando el script vuln, ejecuta el siguiente comando en tu terminal Xfce:

sudo nmap --script vuln -p 80 127.0.0.1

Este comando le dice a Nmap que ejecute el script vuln contra el puerto 80 en la dirección IP 127.0.0.1. Luego, Nmap intentará identificar cualquier vulnerabilidad relacionada con el servicio que se está ejecutando en ese puerto.

La salida será similar al paso anterior, pero solo mostrará los resultados para el puerto 80.

Salida de ejemplo (la salida real dependerá de los servicios en ejecución en 127.0.0.1):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds

Como puedes ver, la salida se centra únicamente en el puerto 80. El script vulners nuevamente no pudo encontrar ninguna vulnerabilidad conocida.

Escanear puertos específicos puede reducir significativamente el tiempo que toma realizar un escaneo de vulnerabilidades, especialmente cuando solo estás interesado en un servicio particular.

Agregar detalle con nmap -v --script vuln 192.168.1.1

En este paso, agregaremos detalle a nuestro escaneo de Nmap. El detalle significa que Nmap proporcionará información más detallada sobre el proceso de escaneo. Esto puede ser útil para entender lo que está haciendo Nmap y para solucionar cualquier problema que pueda surgir.

La opción -v en Nmap aumenta el nivel de detalle. Puedes usar -v varias veces para aumentar aún más el detalle (por ejemplo, -vv o -vvv).

Para ejecutar el script vuln contra 127.0.0.1 con detalle, ejecuta el siguiente comando en tu terminal Xfce:

sudo nmap -v --script vuln 127.0.0.1

Este comando le dice a Nmap que ejecute el script vuln contra la dirección IP 127.0.0.1 y que proporcione una salida detallada.

La salida ahora incluirá más información sobre el proceso de escaneo, como los scripts que se están ejecutando, los puertos que se están escaneando y el tiempo que toma completar cada paso.

Salida de ejemplo (la salida real dependerá de los servicios en ejecución en 127.0.0.1 y será mucho más larga que la salida sin detalle):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 151 scripts for scanning.
Initiating Ping Scan at 10:10
Scanning 127.0.0.1 [4 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating SYN Stealth Scan at 10:10
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Completed SYN Stealth Scan at 10:10, 0.06s elapsed (1000 total ports)
Initiating Service scan at 10:10
Scanning 2 services on localhost (127.0.0.1)
Completed Service scan at 10:10, 6.41s elapsed (2 services total)
NSE: Script scanning 127.0.0.1.
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 10:10
Completed NSE at 10:10, 1.13s elapsed.
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2.4 (protocol 2.0)
|_ vulners: Could not find vulnerability results.
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

NSE: Script Post-scanning.
Initiating NSE at 10:10
Completed NSE at 10:10, 0.00s elapsed.
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 7.70 seconds

La salida detallada proporciona una vista mucho más detallada del proceso de escaneo. Puedes ver las diferentes etapas del escaneo, los scripts que se están ejecutando y cualquier error o advertencia que pueda ocurrir.

Guardar los resultados de vulnerabilidades con nmap --script vuln -oN vuln.txt 127.0.0.1

En este paso, aprenderemos a guardar los resultados de nuestro escaneo de vulnerabilidades de Nmap en un archivo. Esto es útil para un análisis posterior, informes o para comparar resultados a lo largo del tiempo.

Nmap ofrece varias opciones para guardar los resultados del escaneo en diferentes formatos. La opción -oN guarda los resultados en un formato legible por humanos "normal". Otras opciones incluyen -oX para el formato XML y -oG para el formato Grepable.

Para guardar los resultados del escaneo del script vuln en un archivo llamado vuln.txt en el formato normal, ejecuta el siguiente comando en tu terminal Xfce:

sudo nmap --script vuln -oN vuln.txt 127.0.0.1

Este comando le dice a Nmap que ejecute el script vuln contra la dirección IP 127.0.0.1 y que guarde los resultados en el archivo vuln.txt utilizando el formato de salida normal. El archivo vuln.txt se creará en tu directorio actual (~/proyecto).

Una vez que se complete el escaneo, puedes ver el contenido del archivo vuln.txt utilizando un editor de texto como nano:

nano vuln.txt

Esto abrirá el archivo vuln.txt en el editor nano, lo que te permitirá revisar los resultados del escaneo. La salida será similar a la que ves en la pantalla al ejecutar Nmap sin la opción -oN.

Contenido de ejemplo de vuln.txt (el contenido real dependerá de los servicios en ejecución en 127.0.0.1):

## Nmap 7.80 scan initiated Tue Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

## Nmap done at Tue Oct 27 10:15:07 2023 -- 1 IP address (1 host up) scanned in 7.00 seconds

También puedes utilizar otros comandos de Linux para ver el archivo, como cat:

cat vuln.txt

Guardar los resultados del escaneo en un archivo es un paso crucial en la evaluación de vulnerabilidades y la prueba de penetración. Te permite documentar tus hallazgos y rastrear los cambios a lo largo del tiempo.

Revisar vulnerabilidades en la terminal Xfce

En este paso, revisaremos los resultados del escaneo de vulnerabilidades directamente en la terminal Xfce. Esto implica examinar la salida del comando nmap --script vuln para identificar posibles vulnerabilidades en el sistema objetivo.

Primero, volvamos a ejecutar el escaneo de vulnerabilidades contra 127.0.0.1. Esto asegurará que tengamos los resultados más actualizados para revisar. Ejecuta el siguiente comando en tu terminal Xfce:

sudo nmap --script vuln 127.0.0.1

Examina detenidamente la salida. El script vuln intenta identificar vulnerabilidades conocidas verificando las versiones y configuraciones de los servicios. Busca cualquier línea que indique posibles vulnerabilidades.

La salida mostrará los puertos abiertos y los servicios que se ejecutan en esos puertos. El script vulners, que es parte del conjunto de scripts vuln, intenta coincidir las versiones de los servicios con vulnerabilidades conocidas.

Salida de ejemplo (la salida real dependerá de los servicios en ejecución en 127.0.0.1):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

Nmap done: 1 IP address (1 host up) scanned in 7.00 seconds

En este ejemplo, el script vulners no pudo encontrar ningún resultado de vulnerabilidad para los servicios SSH y HTTP. Sin embargo, si se hubieran encontrado vulnerabilidades, la salida incluiría detalles sobre las vulnerabilidades específicas y enlaces a recursos relevantes.

Si ves salida que indique posibles vulnerabilidades, investiga esas vulnerabilidades más detenidamente para entender los riesgos y cómo mitigarlos. Puedes usar la información de la versión del servicio (por ejemplo, "Apache/2.4.29 (Ubuntu)") para buscar vulnerabilidades conocidas en esa versión específica del software.

Este paso es crucial para entender la postura de seguridad del sistema objetivo y para identificar posibles áreas de preocupación.

Comparar con la detección de servicios en la terminal Xfce

En este paso, compararemos los resultados del escaneo de vulnerabilidades con la detección estándar de servicios proporcionada por Nmap. Esto nos ayudará a entender si el script vuln está proporcionando información adicional más allá de lo que Nmap detecta normalmente.

Primero, ejecuta un escaneo de detección de servicios estándar de Nmap contra 127.0.0.1. Ejecuta el siguiente comando en tu terminal Xfce:

sudo nmap -sV 127.0.0.1

La opción -sV le dice a Nmap que realice la detección de la versión del servicio. Esto intentará identificar las versiones específicas de los servicios que se ejecutan en los puertos abiertos.

Salida de ejemplo (la salida real dependerá de los servicios en ejecución en 127.0.0.1):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2.4 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.00 seconds

Ahora, compara esta salida con la salida del comando nmap --script vuln 127.0.0.1 que ejecutaste en el paso anterior.

Específicamente, busca lo siguiente:

  • Versiones de servicios: ¿El escaneo -sV identifica las mismas versiones de servicios que el script vuln? El script vuln a menudo se basa en la información de la versión del servicio para identificar posibles vulnerabilidades.
  • Información de vulnerabilidades: ¿El script vuln proporciona alguna información adicional sobre vulnerabilidades que no está presente en la salida del escaneo -sV? El script vuln utiliza la biblioteca vulners para verificar vulnerabilidades conocidas basadas en la versión del servicio.

Al comparar las dos salidas, puedes entender mejor el valor que proporciona el script vuln. En muchos casos, el script vuln identificará posibles vulnerabilidades que no son inmediatamente evidentes en el escaneo estándar de detección de servicios. Esto se debe a que el script vuln está diseñado específicamente para buscar vulnerabilidades conocidas, mientras que el escaneo -sV se centra principalmente en identificar el servicio y su versión.

Esta comparación te ayuda a entender los diferentes niveles de información que puedes obtener de Nmap y cómo usar diferentes scripts y opciones para obtener la evaluación de seguridad más completa.

Resumen

En este laboratorio, exploramos el uso del script vuln de Nmap para escanear vulnerabilidades en un sistema objetivo. Aprendimos cómo ejecutar el script contra una dirección IP específica (utilizando 127.0.0.1 como ejemplo práctico debido al entorno del laboratorio) con el comando nmap --script vuln 127.0.0.1, lo cual a menudo requiere sudo para los privilegios necesarios.

El laboratorio también demostró cómo escanear un puerto específico utilizando nmap --script vuln -p 80 127.0.0.1, aumentar la verbosidad con nmap -v --script vuln 192.168.1.1 y guardar los resultados del escaneo en un archivo utilizando nmap --script vuln -oN vuln.txt 127.0.0.1. Finalmente, el laboratorio incluyó la revisión de los resultados del escaneo de vulnerabilidades y la comparación de ellos con la información de detección de servicios dentro de la terminal Xfce.