Aprende técnicas de especificación de objetivos en Nmap

CybersecurityCybersecurityBeginner
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ás sobre Nmap, una poderosa herramienta de escaneo de redes ampliamente utilizada por profesionales de seguridad. El laboratorio se centra específicamente en las técnicas de especificación de objetivos en Nmap, que son cruciales para definir los hosts y redes a escanear.

Comprender estas técnicas es esencial para una eficaz reconocimiento de redes y evaluación de seguridad. Al final de este laboratorio, serás capaz de utilizar varios métodos para especificar objetivos en Nmap e interpretar los resultados del escaneo de manera efectiva.

Instalación y exploración de Nmap

En este paso, nos aseguraremos de que Nmap esté instalado correctamente en tu sistema y comenzaremos a explorar sus funciones básicas. Nmap, abreviatura de Network Mapper, es una herramienta de código abierto. Se utiliza ampliamente para la detección de redes y la auditoría de seguridad. Con Nmap, puedes averiguar qué dispositivos están conectados a una red y qué servicios ofrecen esos dispositivos. Esto es crucial en ciberseguridad, ya que te ayuda a entender el panorama de la red e identificar posibles riesgos de seguridad.

Primero, necesitamos comprobar si Nmap ya está instalado en tu sistema. Para hacer esto, usaremos la terminal. La terminal es una interfaz basada en texto donde puedes ingresar comandos para interactuar con tu computadora. Abre una terminal y ejecuta el siguiente comando:

nmap --version

Este comando le pide al sistema que muestre la versión de Nmap instalada. Si Nmap está instalado correctamente, verás una salida similar a esta, que incluye la versión de Nmap y la información de compilación:

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1d 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

A continuación, queremos entender cómo especificar objetivos para los escaneos de Nmap. La especificación de objetivos es importante porque le dice a Nmap qué dispositivos o redes quieres escanear. Para aprender sobre esto, echaremos un vistazo a alguna documentación básica de Nmap. Ejecuta el siguiente comando en la terminal:

nmap -h | grep -A 10 "TARGET SPECIFICATION"

Este comando primero utiliza nmap -h para obtener el texto de ayuda de Nmap. Luego, canaliza la salida a grep -A 10 "TARGET SPECIFICATION", que busca la sección "TARGET SPECIFICATION" en el texto de ayuda y muestra las siguientes 10 líneas. Verás una explicación de las diferentes formas de especificar objetivos para los escaneos de Nmap.

Ahora, necesitamos un lugar para almacenar los resultados de nuestros escaneos de Nmap. Crearemos un directorio para este propósito. Un directorio es como una carpeta en tu computadora donde puedes organizar archivos. Ejecuta los siguientes comandos en la terminal:

mkdir -p /home/labex/project/nmap_scans
cd /home/labex/project/nmap_scans

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

Veamos a Nmap en acción ejecutando un escaneo simple en tu máquina local. La máquina local es la computadora que estás usando actualmente. Ejecuta el siguiente comando:

nmap localhost > local_scan.txt

Este comando escanea tu máquina local utilizando Nmap. El símbolo > redirige la salida del escaneo a un archivo llamado local_scan.txt. De esta manera, podemos guardar los resultados del escaneo para un análisis posterior.

Finalmente, echemos un vistazo a los resultados del escaneo. Ejecuta el siguiente comando:

cat local_scan.txt

El comando cat muestra el contenido del archivo local_scan.txt. Verás una lista de puertos que Nmap escaneó en tu máquina local. Junto con los números de puerto, encontrarás información sobre qué puertos están abiertos y qué servicios pueden estar ejecutándose en esos puertos abiertos. Esta información puede ayudarte a entender el estado de seguridad de tu máquina local.

Configuración de un servicio y escaneo de puertos específicos

En este paso, aprenderemos cómo iniciar un servidor web local y luego utilizar una poderosa herramienta llamada Nmap para encontrarlo escaneando puertos específicos. Comprender este proceso es crucial, ya que muestra cómo se puede utilizar Nmap para identificar los servicios que se están ejecutando actualmente en una red o en una máquina.

Primero, necesitamos navegar a nuestro directorio de proyecto. Aquí es donde configuraremos nuestro simple servidor web. Una vez que estemos en el lugar correcto, iniciaremos un servidor HTTP de Python que escuchará en el puerto 8000. El puerto 8000 es un puerto común utilizado para probar servidores web. Aquí está el comando para hacerlo:

cd /home/labex/project/nmap_scans
python3 -m http.server 8000 &

El & al final del comando es importante. Hace que el servidor se ejecute en segundo plano. Esto significa que puedes continuar utilizando la terminal para otras tareas mientras el servidor está en funcionamiento. Después de ejecutar el comando, deberías ver alguna salida que indique que el servidor se ha iniciado correctamente:

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Ahora que nuestro servidor está en funcionamiento, queremos asegurarnos de que realmente esté escuchando en el puerto 8000. Podemos utilizar el comando lsof, que significa "list open files" (listar archivos abiertos). Este comando nos ayuda a verificar qué procesos están utilizando actualmente un puerto específico. Así es como lo usamos:

lsof -i :8000

Si el servidor está funcionando correctamente, deberías ver una salida similar a esta:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python3 12345 labex   4u  IPv4 123456      0t0  TCP *:8000 (LISTEN)

Esta salida nos dice que Python está escuchando en el puerto 8000, lo que significa que nuestro servidor está funcionando como se esperaba.

A continuación, utilizaremos Nmap para escanear el puerto 8000 en la máquina local. El objetivo es detectar nuestro servidor HTTP. Aquí está el comando:

nmap -p 8000 localhost > http_server_scan.txt

En este comando, la bandera -p se utiliza para especificar qué puerto queremos escanear. En nuestro caso, estamos escaneando el puerto 8000 en el localhost, que es nuestra propia máquina. El símbolo > redirige la salida del escaneo de Nmap a un archivo llamado http_server_scan.txt. De esta manera, podemos revisar fácilmente los resultados más tarde.

Veamos los resultados del escaneo:

cat http_server_scan.txt

Si el escaneo es exitoso, deberías ver una salida similar a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-25 12:34 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE
8000/tcp open  http-alt

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

Esta salida muestra que el puerto 8000 está abierto y ejecutando un servicio HTTP, lo que significa que Nmap pudo detectar nuestro servidor.

Finalmente, intentemos escanear un rango de puertos para ver si hay otros servicios en funcionamiento en nuestra máquina local. Aquí está el comando:

nmap -p 1-1000 localhost > port_range_scan.txt

Este comando le dice a Nmap que escanee todos los puertos del 1 al 1000 en el localhost. Nuevamente, estamos redirigiendo la salida a un archivo llamado port_range_scan.txt.

Examinemos los resultados:

cat port_range_scan.txt

La salida mostrará qué puertos en el rango del 1 al 1000 están abiertos en tu máquina local. Esta es una forma útil de descubrir servicios que quizás no sabías que estaban en funcionamiento.

Especificación Avanzada de Destinos

En este paso, profundizaremos en técnicas más avanzadas de especificación de destinos en Nmap. Nmap es una herramienta poderosa para el reconocimiento de redes, y ofrece diversas formas de especificar múltiples destinos en un solo comando. Esto es extremadamente útil cuando necesitas escanear múltiples hosts o redes a la vez, lo que te ahorra tiempo y esfuerzo.

Comencemos creando un archivo de texto que contenga múltiples direcciones IP que queremos escanear. Incluiremos el localhost (127.0.0.1) y un par de otras direcciones IP locales. El localhost es una dirección IP especial que se refiere al propio dispositivo actual. Al incluirla, podemos probar el proceso de escaneo en nuestra propia máquina.

cd /home/labex/project/nmap_scans
echo "127.0.0.1" > targets.txt
echo "127.0.0.2" >> targets.txt
echo "127.0.0.3" >> targets.txt

En el código anterior, el comando cd cambia el directorio de trabajo actual a /home/labex/project/nmap_scans. El comando echo se utiliza para mostrar texto. El operador > crea un nuevo archivo y escribe el texto en él, mientras que el operador >> agrega el texto a un archivo existente. Así, primero creamos un archivo llamado targets.txt y escribimos 127.0.0.1 en él. Luego, agregamos 127.0.0.2 y 127.0.0.3 al mismo archivo.

Ahora, echemos un vistazo al archivo que acabamos de crear para asegurarnos de que las direcciones IP se hayan agregado correctamente.

cat targets.txt

El comando cat se utiliza para mostrar el contenido de un archivo. Después de ejecutar este comando, deberías ver la siguiente salida:

127.0.0.1
127.0.0.2
127.0.0.3

A continuación, usaremos la bandera -iL en Nmap para escanear todas las direcciones IP enumeradas en el archivo targets.txt a la vez. La bandera -iL le dice a Nmap que lea los destinos de un archivo.

nmap -iL targets.txt > multiple_targets_scan.txt

Aquí, el comando nmap se utiliza para realizar el escaneo de red. La bandera -iL especifica el archivo que contiene los destinos. El operador > redirige la salida del escaneo a un archivo llamado multiple_targets_scan.txt.

Veamos los resultados del escaneo:

cat multiple_targets_scan.txt

Después de ejecutar este comando, deberías ver los resultados del escaneo de las tres direcciones IP. Ten en cuenta que 127.0.0.1 generalmente mostrará puertos abiertos porque es el localhost y puede haber algunos servicios en funcionamiento en él. Sin embargo, 127.0.0.2 y 127.0.0.3 pueden no responder porque no suelen estar configurados en la mayoría de los sistemas.

Otra forma de especificar múltiples destinos es usar la notación de espacios o la notación CIDR directamente en el comando Nmap.

nmap 127.0.0.1 127.0.0.2 > space_notation_scan.txt

En este comando, usamos espacios para separar las direcciones IP. Esto le dice a Nmap que escanee tanto 127.0.0.1 como 127.0.0.2. La salida del escaneo se redirige a un archivo llamado space_notation_scan.txt.

Veamos los resultados:

cat space_notation_scan.txt

También podemos usar la notación CIDR para escanear un rango de direcciones IP. La notación CIDR (Classless Inter-Domain Routing) es una forma de representar un rango de direcciones IP de manera concisa.

nmap 127.0.0.0/30 > cidr_notation_scan.txt

La notación 127.0.0.0/30 en CIDR representa un rango de direcciones IP desde 127.0.0.0 hasta 127.0.0.3, lo que es un total de 4 direcciones. La salida de este escaneo se redirige a un archivo llamado cidr_notation_scan.txt.

Veamos los resultados:

cat cidr_notation_scan.txt

Finalmente, exploremos cómo excluir destinos específicos de un escaneo. Esto es útil cuando quieres escanear una red pero no quieres incluir ciertos hosts.

nmap 127.0.0.0/30 --exclude 127.0.0.3 > exclude_scan.txt

En este comando, usamos la bandera --exclude para decirle a Nmap que omita la dirección IP 127.0.0.3 cuando escanee el rango 127.0.0.0/30. La salida del escaneo se redirige a un archivo llamado exclude_scan.txt.

Veamos los resultados:

cat exclude_scan.txt

Deberías ver los resultados del escaneo de 127.0.0.0, 127.0.0.1 y 127.0.0.2, pero no de 127.0.0.3.

Estas técnicas avanzadas de especificación de destinos te permiten controlar con precisión qué hosts escaneará Nmap, lo que hace que tu reconocimiento de red sea más eficiente y dirigido.

Resumen

En este laboratorio, has aprendido cómo utilizar Nmap para el reconocimiento de redes, centrándote en las técnicas de especificación de objetivos. Primero, instalaste Nmap y exploraste sus funciones básicas realizando escaneos simples en tu máquina local. Luego, configuraste un servidor HTTP local y utilizaste Nmap para encontrarlo escaneando puertos específicos.

Estas habilidades son esenciales para los administradores de redes y los profesionales de seguridad para descubrir y evaluar dispositivos de red. Dominar la especificación de objetivos en Nmap te permite escanear eficientemente redes de cualquier escala y complejidad, apuntando a hosts y servicios específicos relacionados con tu tarea. Siempre utiliza Nmap de manera responsable y solo en redes autorizadas para evitar problemas legales y éticos.