Aprende la Instalación y el Uso Básico de Nmap

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá sobre la instalación y el uso básico de Nmap, una poderosa herramienta de escaneo de redes y auditoría de seguridad. Nmap, también conocido como Network Mapper, es una utilidad de código abierto ampliamente utilizada por administradores de sistemas y expertos en seguridad para encontrar hosts, servicios y vulnerabilidades en una red.

Este laboratorio lo guiará a través del proceso de instalación de Nmap, la configuración de un servicio local para el escaneo y la realización de escaneos básicos para comprender las capacidades de Nmap.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel intermedio con una tasa de finalización del 60%. Ha recibido una tasa de reseñas positivas del 98% por parte de los estudiantes.

Instalando Nmap

En este paso, lo guiaremos a través del proceso de instalación de Nmap en su sistema Ubuntu Linux. Nmap es una poderosa herramienta de escaneo de redes que se utiliza ampliamente en ciberseguridad para tareas como la detección de redes y la auditoría de seguridad. Está disponible en los repositorios predeterminados de Ubuntu, lo que significa que el proceso de instalación es bastante sencillo.

Primero, debe abrir su terminal. La terminal es una interfaz basada en texto que le permite interactuar con su sistema ingresando comandos. Por defecto, debe estar en el directorio /home/labex/project. Si no está en este directorio, puede navegar hasta allí utilizando el siguiente comando. Este comando cambia su directorio de trabajo actual a /home/labex/project.

cd /home/labex/project
Terminal con la instalación de Nmap

Ahora que está en el directorio correcto, es hora de actualizar la lista de paquetes e instalar Nmap. La lista de paquetes contiene información sobre todo el software disponible en los repositorios de Ubuntu. Actualizarla asegura que está obteniendo la última versión de Nmap.

sudo apt update
sudo apt install nmap -y

El comando sudo se utiliza para ejecutar comandos con privilegios administrativos. Dado que la instalación de software requiere acceso administrativo, debe utilizar sudo. La opción -y se utiliza con el comando apt install. Responde automáticamente "sí" a cualquier solicitud durante el proceso de instalación, por lo que no tiene que confirmar manualmente cada paso.

Después de que la instalación se complete, es importante verificar que Nmap se haya instalado correctamente. Puede hacer esto comprobando su versión. La opción --version del comando nmap muestra la información de la versión de Nmap.

nmap --version

Debería ver una salida similar a esta (tenga en cuenta que su versión puede ser diferente):

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

Esta salida confirma que Nmap está instalado en su sistema. También proporciona información sobre la versión de Nmap y las opciones de compilación utilizadas, lo cual puede ser útil para solucionar problemas o entender las capacidades de su instalación de Nmap.

Configuración de un Servicio Local para Escaneo

Antes de comenzar a usar Nmap para escanear, es esencial tener un servicio objetivo en ejecución. De esta manera, podemos probar las capacidades de escaneo de Nmap de manera efectiva. En este paso, configuraremos un servidor HTTP simple utilizando el módulo http.server integrado de Python. El módulo http.server de Python es una herramienta conveniente que nos permite iniciar rápidamente un servidor HTTP sin la necesidad de configuraciones complejas.

Primero, creemos un nuevo directorio para nuestro servidor HTTP. Un directorio es como una carpeta en su computadora donde podemos almacenar todos los archivos relacionados con nuestro servidor.

mkdir -p /home/labex/project/http-server
cd /home/labex/project/http-server

El comando mkdir -p crea un directorio llamado http-server en la ruta especificada. La opción -p asegura que si algún directorio intermedio no existe, también se creará. El comando cd luego cambia nuestro directorio de trabajo actual al directorio http-server recién creado.

Ahora, creemos un archivo HTML simple que nuestro servidor servirá. HTML es el lenguaje de marcado estándar para crear páginas web.

echo "<html><body><h1>Welcome to the Nmap Lab</h1></body></html>" > index.html

Este comando usa el comando echo para imprimir el código HTML en la terminal y luego redirige esa salida a un archivo llamado index.html. Entonces, hemos creado un archivo con una estructura HTML básica y un mensaje de bienvenida.

A continuación, iniciaremos el servidor HTTP de Python.

python3 -m http.server 8000

Este comando usa el intérprete python3 para ejecutar el módulo http.server como un script. La opción -m le dice a Python que ejecute el módulo como un script. Especificamos el puerto 8000, lo que significa que nuestro servidor escuchará las solicitudes entrantes en este puerto.

Open a new terminal tab or window to continue

Importante: Abra una nueva pestaña o ventana de terminal para continuar. Mantenga el servidor HTTP en ejecución en esta terminal y use la nueva terminal para todos los comandos Nmap posteriores en este laboratorio. Esto asegura que el servidor HTTP permanezca activo mientras realiza los escaneos.

Para verificar que el servidor se está ejecutando, puede usar el comando curl en la nueva terminal. curl es una herramienta de línea de comandos que se utiliza para transferir datos desde o hacia un servidor.

curl http://localhost:8000

Cuando ejecuta este comando, curl envía una solicitud al servidor HTTP que se ejecuta en localhost (que se refiere a su propia computadora) en el puerto 8000. Si el servidor se está ejecutando correctamente, debería ver el contenido HTML que creamos anteriormente.

127.0.0.1 - - [13/Sep/2024 15:24:21] "GET / HTTP/1.1" 200 -
<html>
  <body>
    <h1>Welcome to the Nmap Lab</h1>
  </body>
</html>

Esta salida muestra que el servidor recibió la solicitud, la procesó con éxito (indicado por el código de estado 200) y devolvió el contenido HTML del archivo index.html.

Escaneo básico con Nmap

Ahora que hemos instalado Nmap con éxito y configurado un servicio local, es hora de comenzar a realizar algunos escaneos básicos. Esto le ayudará a entender cómo funciona Nmap y qué tipo de información puede proporcionar.

Primero, realizaremos un simple escaneo TCP connect en nuestro servidor HTTP local. Un escaneo TCP connect es un tipo fundamental de escaneo en Nmap. Intenta establecer una conexión TCP completa al puerto de destino. Si la conexión es exitosa, significa que el puerto está abierto.

Aquí está el comando para realizar este escaneo:

nmap -sT -p 8000 localhost

Desglosemos este comando:

  • -sT es una opción que especifica un escaneo TCP connect. Esto le dice a Nmap que use el método TCP connect para verificar el estado de los puertos.
  • -p 8000 indica que queremos que Nmap escanee solo el puerto 8000. Puede cambiar este número para escanear otros puertos si es necesario.
  • localhost es el objetivo de nuestro escaneo. Se refiere a la máquina local donde se está ejecutando el servicio.

Después de ejecutar este comando, debería ver una salida similar a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE
8000/tcp open  http-alt

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

Esta salida muestra que el puerto 8000 está abierto y está ejecutando un servicio HTTP. La columna STATE indica el estado del puerto, y en este caso, es open. La columna SERVICE da una idea de qué tipo de servicio podría estar ejecutándose en ese puerto.

Ahora, realicemos un escaneo más detallado. A veces, solo saber que un puerto está abierto no es suficiente. Podríamos querer saber más sobre el servicio que se está ejecutando en ese puerto, como su versión.

Aquí está el comando para un escaneo más detallado:

nmap -sV -p 8000 localhost

La opción -sV se utiliza para decirle a Nmap que explore los puertos abiertos para determinar la información del servicio/versión. Esto significa que Nmap intentará averiguar qué software específico y versión se está ejecutando en el puerto abierto.

Después de ejecutar este comando, debería ver una salida similar a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:27 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned): ::1

PORT     STATE SERVICE VERSION
8000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)

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

Esta salida proporciona información más detallada sobre el servicio que se está ejecutando en el puerto 8000. Nos dice que es un SimpleHTTPServer de Python e incluso nos da el número de versión.

Puede ver las solicitudes de Nmap en los registros de la terminal donde inició el servidor HTTP de Python. Esto puede ser útil para la depuración o un análisis más profundo.

Escaneo de múltiples puertos

En escenarios del mundo real, a menudo es necesario escanear múltiples puertos o incluso rangos completos de puertos. Exploremos cómo hacer esto con Nmap.

Cuando se trata de escaneo de redes, es posible que desees verificar múltiples puertos a la vez. Esto es útil porque diferentes servicios se ejecutan en diferentes puertos, y al escanear múltiples puertos, puedes obtener una visión integral de los servicios disponibles en un objetivo.

Primero, escaniemos los 1000 puertos más comunes en localhost. Localhost se refiere al dispositivo actual en el que estás trabajando, representado por la dirección IP 127.0.0.1. Escanear los 1000 puertos más comunes es una forma rápida de obtener una visión general de los servicios que se ejecutan en tu máquina local.

nmap localhost

Después de ejecutar este comando, verás una salida similar a la siguiente:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-09-13 15:29 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00016s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8000/tcp open  http-alt

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

Este comando, sin ninguna especificación de puerto, escaneará los 1000 puertos más comunes. Deberías ver una lista de puertos abiertos, cerrados y filtrados. La salida muestra el número de puerto, su estado (abierto, cerrado o filtrado) y el servicio asociado.

Ahora, escaniemos todos los 65535 puertos. En el protocolo TCP/IP, hay un total de 65535 puertos disponibles. Escanear todos ellos puede darte una imagen completa de los servicios que se ejecutan en el objetivo, pero lleva más tiempo.

nmap -p- localhost

La opción -p- le dice a Nmap que escanee todos los puertos del 1 al 65535. Este escaneo tomará más tiempo en completarse porque tiene que verificar cada puerto.

Finalmente, escaniemos un rango específico de puertos. A veces, es posible que tengas una idea de en qué puertos podría estar ejecutándose un servicio en particular, y solo quieras escanear esos puertos.

nmap -p 1-1000 localhost

Este comando escanea los puertos del 1 al 1000. Al especificar un rango de puertos, puedes centrar tu escaneo en los puertos que son más relevantes para tus necesidades.

Formatos de salida y guardado de resultados

Nmap ofrece una variedad de formatos de salida, cada uno adaptado a diferentes necesidades. Comprender estos formatos y cómo guardar los resultados del escaneo es crucial para un análisis posterior y el intercambio de tus hallazgos. En este paso, echaremos un vistazo más detallado a algunos de estos formatos y aprenderemos cómo guardar los resultados del escaneo de manera efectiva.

Primero, realicemos un escaneo y guardemos la salida en formato normal. El formato normal es un formato de texto legible por humanos que presenta los resultados del escaneo de manera clara y directa. Para guardar la salida en este formato, utilizamos el siguiente comando:

nmap -oN normal_output.txt localhost

En este comando, la opción -oN se utiliza para instruir a Nmap que guarde la salida en formato normal. El normal_output.txt es el nombre del archivo donde se almacenarán los resultados. El localhost es el objetivo que estamos escaneando, que se refiere a la propia máquina local.

Ahora, guardemos la salida en formato XML. XML (eXtensible Markup Language, Lenguaje de Marcado Extensible) es un formato ampliamente utilizado para el almacenamiento y el intercambio de datos. Tiene un formato estructurado que puede ser fácilmente analizado por scripts o importado a otras herramientas para su posterior procesamiento. Para guardar la salida en formato XML, utilizamos el siguiente comando:

nmap -oX xml_output.xml localhost

Aquí, la opción -oX le dice a Nmap que guarde la salida en formato XML. El xml_output.xml es el archivo donde se guardarán los resultados en formato XML.

Finalmente, guardemos la salida en formato grepable. El formato grepable está diseñado para ser fácilmente analizado por herramientas como grep, que es una potente utilidad de búsqueda de texto en sistemas similares a Unix. Este formato es útil cuando quieres buscar rápidamente información específica en los resultados del escaneo. Para guardar la salida en formato grepable, utilizamos el siguiente comando:

nmap -oG grepable_output.txt localhost

La opción -oG se utiliza para guardar la salida en formato grepable, y el grepable_output.txt es el archivo donde se almacenarán los resultados.

Después de guardar los resultados en diferentes formatos, es posible que desees ver el contenido de estos archivos. Puedes utilizar el comando cat para mostrar el contenido de un archivo de texto. Por ejemplo, para ver el archivo de salida en formato normal, puedes utilizar el siguiente comando:

cat normal_output.txt

Esto imprimirá el contenido del archivo normal_output.txt en la terminal, lo que te permitirá ver los resultados del escaneo.

Resumen

En este laboratorio, has aprendido los conceptos básicos de Nmap, una poderosa herramienta de escaneo de redes y auditoría de seguridad. Primero, instalaste Nmap en un sistema Ubuntu Linux y verificaste su instalación. Luego, configuraste un servidor HTTP local como objetivo para los escaneos, mostrando cómo crear un servicio simple para pruebas.

También exploraste diversas técnicas de escaneo, desde los escaneos básicos de puertos hasta la detección detallada de versiones de servicios. Aprendiste a escanear puertos específicos, rangos y todos los 65535 puertos de un sistema, lo cual es crucial para comprender la red y encontrar posibles vulnerabilidades. Finalmente, aprendiste sobre las opciones de salida de Nmap, como guardar los resultados en formato de texto normal, XML y grepable, que son esenciales para la documentación y el análisis posterior.

Este laboratorio te ha proporcionado experiencia práctica en el uso de Nmap, sentando las bases para un escaneo de redes y auditoría de seguridad más avanzados. Recuerda utilizar Nmap de manera responsable y con la autorización adecuada.