Usar Nmap para Escanear y Documentar Servicios de Red

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á cómo utilizar Nmap, una poderosa herramienta de escaneo de redes, para descubrir y analizar los servicios que se ejecutan en una red. Nmap es una herramienta crucial para los administradores de redes y los profesionales de seguridad, y se utiliza comúnmente para la detección de redes y la auditoría de seguridad.

Las habilidades que adquirirá incluyen configurar un servidor web básico, utilizar Nmap para escanear y detectar servicios, interpretar los resultados del escaneo y documentar eficazmente sus hallazgos. Este conocimiento es fundamental para la evaluación de la seguridad de la red y se aplica ampliamente en escenarios del mundo real para identificar posibles vulnerabilidades del sistema.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") subgraph Lab Skills nmap/save_output -.-> lab-415932{{"Usar Nmap para Escanear y Documentar Servicios de Red"}} nmap/port_scanning -.-> lab-415932{{"Usar Nmap para Escanear y Documentar Servicios de Red"}} nmap/service_detection -.-> lab-415932{{"Usar Nmap para Escanear y Documentar Servicios de Red"}} wireshark/packet_capture -.-> lab-415932{{"Usar Nmap para Escanear y Documentar Servicios de Red"}} wireshark/packet_analysis -.-> lab-415932{{"Usar Nmap para Escanear y Documentar Servicios de Red"}} end

Configuración de un servidor web

En este paso, vamos a configurar un servidor web básico en su máquina local. ¿Por qué necesitamos hacer esto? Bueno, este servidor web actuará como objetivo para su práctica de escaneo con Nmap más adelante. Nmap es una poderosa herramienta para la exploración de redes y la auditoría de seguridad, y tener un servidor web local para escanear le ayudará a entender cómo funciona en un entorno seguro y controlado.

¿Qué es un servidor web?

Un servidor web es un software que juega un papel crucial en la web. Cuando abre un sitio web en su navegador, es el servidor web el que envía el contenido web, como páginas HTML, imágenes o videos, a su navegador en respuesta a su solicitud. Para este laboratorio, aprovecharemos la funcionalidad incorporada de Python para crear un simple servidor HTTP. HTTP (Protocolo de Transferencia de Hipertexto) es la base de la comunicación de datos en la web, y utilizar el servidor incorporado de Python es una forma rápida y fácil de poner en funcionamiento un servidor web.

Creación de su directorio web y contenido

  1. Primero, necesitamos abrir una terminal. Una terminal es una interfaz basada en texto que le permite interactuar con el sistema operativo de su computadora escribiendo comandos. Una vez que haya abierto la terminal, navegará hasta su directorio de proyecto. Navegar en la terminal significa moverse a través del sistema de archivos de su computadora. Utilice el siguiente comando para ir al directorio de proyecto:

    cd /home/labex/project
  2. Ahora, crearemos un nuevo directorio para el contenido de su servidor web. Un directorio es como una carpeta en su computadora donde puede almacenar archivos. Utilizamos el comando mkdir para crear un nuevo directorio. La bandera -p es importante aquí. Asegura que si los directorios padre (los directorios que contienen el directorio que está creando) no existen, se crearán automáticamente. Ejecute el siguiente comando:

    mkdir -p services
  3. Después de crear el directorio, necesitamos movernos a él. Al igual que abriría una carpeta en su escritorio, usamos el comando cd para entrar al directorio recién creado:

    cd services
  4. A continuación, crearemos un simple archivo HTML. HTML (Lenguaje de Marcado de Hipertexto) es el lenguaje estándar para crear páginas web. Este archivo será servido por su servidor web. El siguiente comando crea un archivo llamado index.html y coloca el texto "Welcome to the mini fortress" dentro de él:

    echo "Welcome to the mini fortress" > index.html
  5. Finalmente, iniciaremos un servidor HTTP de Python en el puerto 8000. Un puerto es como una puerta en su computadora a través de la cual el tráfico de red puede entrar o salir. El puerto 8000 es un puerto comúnmente utilizado para probar servidores web. El siguiente comando utiliza el módulo de servidor HTTP incorporado de Python para iniciar el servidor web:

    python3 -m http.server 8000

    Una vez que ejecute este comando, debería ver una salida similar a:

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

    Esto significa que su servidor web está en funcionamiento y listo para atender solicitudes.

Verificación de su servidor web

Para asegurarse de que su servidor web está funcionando correctamente, necesitamos abrir una nueva ventana de terminal. Mantenga la primera ventana de terminal en ejecución porque actualmente está ocupada por el proceso del servidor web. Si la cierra, el servidor web se detendrá.

  1. Abra una nueva ventana de terminal.

  2. Ahora, usaremos el comando curl para acceder a su servidor web. curl es una herramienta de línea de comandos que le permite transferir datos a o desde un servidor. Ejecute el siguiente comando:

    curl http://localhost:8000

    Si todo está funcionando correctamente, debería ver el mensaje: Welcome to the mini fortress

    Esto confirma que su servidor web está en funcionamiento y es accesible.

El servidor web que acaba de configurar seguirá ejecutándose en la primera ventana de terminal. Mantenga esta ventana abierta y el servidor en ejecución para los siguientes pasos. Todos los comandos adicionales deben ejecutarse en la nueva ventana de terminal que acaba de abrir.

Escaneo de servicios con Nmap

En este paso, vamos a utilizar una poderosa herramienta llamada Nmap para escanear y detectar el servicio de servidor web que configuró en el paso anterior. El escaneo de servicios es una parte importante de la ciberseguridad porque nos ayuda a entender qué servicios se están ejecutando en una red y si pueden ser vulnerables a ataques.

Comprensión de Nmap

Nmap, que significa Network Mapper (Mapeador de Redes), es una utilidad gratuita y de código abierto. Se utiliza ampliamente para la detección de redes y la auditoría de seguridad. Nmap funciona enviando paquetes IP sin procesar a los hosts objetivos en una red. Basándose en las respuestas que recibe, puede averiguar varias cosas importantes:

  • En primer lugar, puede decirnos qué hosts están disponibles en la red. Un host puede ser una computadora, un servidor o cualquier dispositivo conectado a la red.
  • En segundo lugar, puede determinar qué servicios ofrecen esos hosts. Los servicios pueden incluir cosas como servidores web, servidores de correo electrónico o servicios de compartición de archivos.
  • En tercer lugar, incluso puede identificar qué sistemas operativos están ejecutando los hosts. Esto es útil porque diferentes sistemas operativos pueden tener diferentes vulnerabilidades de seguridad.
  • Y hay muchas otras características que Nmap puede descubrir sobre los hosts en la red.

Ejecución de un escaneo básico de servicios

  1. Antes de comenzar el escaneo, debemos asegurarnos de que estamos en el directorio del proyecto. El directorio del proyecto es donde se almacenan todos los archivos relevantes para este experimento. Para navegar al directorio del proyecto, usamos el comando cd en la terminal.

    cd /home/labex/project
  2. Ahora, vamos a ejecutar un escaneo de servicios de Nmap en nuestro servidor web local. El servidor web local se está ejecutando en nuestra propia máquina, y usaremos Nmap para averiguar qué servicio se está ejecutando en el puerto 8000.

    sudo nmap -sV localhost -p 8000

    Analicemos este comando para entender qué hace cada parte:

    • sudo: Se utiliza para ejecutar el comando con privilegios de administrador. Algunas operaciones en el sistema requieren derechos de administrador, y Nmap puede necesitar estos derechos para realizar un escaneo adecuado.
    • nmap: Esta es la herramienta de mapeo de red de la que hemos estado hablando. Es el comando principal que usamos para realizar el escaneo.
    • -sV: Esta opción habilita la detección de versiones. Ayuda a Nmap a identificar qué servicio específico se está ejecutando en el puerto objetivo.
    • localhost: Este es el objetivo que queremos escanear. En este caso, es nuestra máquina local.
    • -p 8000: Esta opción especifica que queremos escanear el puerto 8000. Los puertos son como puertas en una computadora, y diferentes servicios utilizan diferentes puertos para comunicarse.

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

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:00 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000094s latency).
    
    PORT     STATE SERVICE VERSION
    8000/tcp open  http    Python/3.10 http.server
    
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 6.31 seconds

    La salida muestra que Nmap ha detectado un servicio HTTP en ejecución en el puerto 8000. Específicamente, ha identificado el servicio como un servidor HTTP de Python 3.10.

  3. Para mantener un registro de los resultados del escaneo para un análisis posterior, guardaremos la salida en un archivo. De esta manera, podemos consultar los resultados más tarde y buscar posibles problemas de seguridad.

    sudo nmap -sV localhost -p 8000 > /home/labex/project/nmap_service_detection.txt

    Este comando ejecuta el mismo escaneo de Nmap que antes, pero en lugar de mostrar la salida en la terminal, redirige la salida a un archivo llamado nmap_service_detection.txt.

  4. Ahora, veamos el contenido del archivo guardado para asegurarnos de que los resultados están allí. Usamos el comando cat para mostrar el contenido de un archivo en la terminal.

    cat /home/labex/project/nmap_service_detection.txt

    El contenido que vea debe coincidir con la salida que vio anteriormente cuando ejecutó el comando de Nmap directamente.

Comprensión de la salida de Nmap

Echemos un vistazo más de cerca a la salida de su escaneo de Nmap para entender qué significa cada parte:

  • Starting Nmap 7.80: Esta línea indica la versión de Nmap que se está utilizando. Diferentes versiones de Nmap pueden tener diferentes características y capacidades.
  • Host is up: Esto muestra que el objetivo (en este caso, nuestra máquina local) está respondiendo a las solicitudes de red. Si el host estuviera apagado, Nmap no podría obtener ninguna información de él.
  • PORT: Esta columna enumera el número de puerto que se ha escaneado. En nuestro caso, es el puerto 8000.
  • STATE: Esto muestra el estado del puerto. Puede estar abierto, cerrado o filtrado. Un puerto abierto significa que un servicio está escuchando en ese puerto y aceptando conexiones.
  • SERVICE: Esto identifica el servicio que se está ejecutando en el puerto. En nuestra salida, es un servicio HTTP.
  • VERSION: Esto muestra detalles sobre la versión del servicio. Aquí, nos dice que el servicio HTTP es un servidor HTTP de Python 3.10.

Esta información es crucial para las evaluaciones de seguridad. Al saber qué servicios están expuestos en una red, podemos verificar si tienen alguna vulnerabilidad conocida. Si estos servicios no están adecuadamente protegidos, los atacantes podrían explotarlos potencialmente.

Documentación de sus hallazgos

En este paso, nos centraremos en documentar la información de los servicios que ha descubierto utilizando Nmap. La documentación es como un mapa en el mundo del trabajo de seguridad. Es crucial porque le permite registrar todos los detalles importantes que encuentra durante sus escaneos. Este registro se puede consultar más tarde para el análisis, para ver cómo han cambiado las cosas con el tiempo o para cumplir con ciertos requisitos de cumplimiento.

La importancia de la documentación

En las evaluaciones de seguridad profesionales y las auditorías de redes, la documentación detallada desempeña varios roles clave:

  • Instantánea de sistemas y servicios: Crea un registro de qué sistemas y servicios estaban presentes en un momento específico. Esto es útil para entender el estado de su red en un momento dado.
  • Seguimiento de cambios: Le ayuda a realizar un seguimiento de cualquier cambio en la infraestructura de la red. Al comparar la documentación de diferentes momentos, puede detectar fácilmente nuevos servicios, sistemas eliminados u otras alteraciones.
  • Evidencia de cumplimiento: Proporciona evidencia de que ha realizado verificaciones de seguridad adecuadas, lo que a menudo es requerido por diversas normativas y estándares.
  • Planificación de mejoras: Sirve como referencia al planificar mejoras de seguridad. Puede consultar los hallazgos documentados para identificar áreas que necesitan atención.

Creación de un archivo de documentación

Primero, debe asegurarse de que está en el directorio del proyecto. Aquí es donde crearemos y almacenaremos nuestro archivo de documentación. Para hacer esto, use el comando cd, que significa "cambiar de directorio".

cd /home/labex/project

Paso 2: Crear un nuevo archivo

Ahora, crearemos un nuevo archivo para documentar nuestros hallazgos. Usaremos el comando touch. Si el archivo no existe, touch creará un archivo vacío con el nombre especificado.

touch nmap_findings.txt

Paso 3: Agregar un encabezado descriptivo

A continuación, agregaremos un encabezado descriptivo a nuestro archivo de documentación. Este encabezado dará algo de contexto a los resultados del escaneo que vamos a agregar. Usaremos el comando echo para imprimir el texto y el operador >> para anexarlo al archivo. El operador >> es importante porque agrega el texto al final del archivo sin sobrescribir lo que ya está allí.

echo "Nmap has detected the following service running on localhost, port 8000:" >> nmap_findings.txt

Paso 4: Agregar los resultados detallados del escaneo

Ahora, agregaremos los resultados detallados del escaneo de Nmap a nuestra documentación. Volveremos a ejecutar el escaneo de Nmap y usaremos el operador >> para anexar los resultados a nuestro archivo.

nmap -sV localhost -p 8000 >> nmap_findings.txt

Paso 5: Revisar su documentación

Finalmente, revisemos la documentación completada. Usaremos el comando cat, que significa "concatenar", para mostrar el contenido del archivo.

cat nmap_findings.txt

Su archivo ahora debe contener un encabezado y los resultados completos del escaneo de Nmap, similar a:

Nmap has detected the following service running on localhost, port 8000:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-01 12:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).

PORT     STATE SERVICE VERSION
8000/tcp open  http    Python/3.10 http.server

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

Mejores prácticas para la documentación de seguridad

Al documentar hallazgos de seguridad en escenarios del mundo real, hay varios elementos importantes que debe considerar incluir:

  1. Fecha y hora de la evaluación: Esto le ayuda a realizar un seguimiento de cuándo se realizó el escaneo, lo que es útil para entender la cronología de los cambios en su red.
  2. Herramientas utilizadas (incluyendo números de versión): Saber qué herramientas se utilizaron y sus versiones es importante para la reproducibilidad y para entender las capacidades del escaneo.
  3. Alcance de la evaluación: Defina claramente qué se probó. Esto podría incluir direcciones IP específicas, puertos o sistemas.
  4. Hallazgos detallados con evidencia: Proporcione tantos detalles como sea posible sobre los hallazgos, junto con cualquier evidencia para respaldarlos.
  5. Posibles implicaciones de seguridad: Analice los hallazgos e identifique cualquier riesgo o vulnerabilidad de seguridad potencial.
  6. Recomendaciones para mejoras: Basado en los hallazgos, sugiera pasos para mejorar la seguridad de la red.

Para este laboratorio, hemos creado un documento simple con los resultados del escaneo, pero en contextos profesionales, la documentación suele ser más completa.

Resumen

En este laboratorio, has aprendido habilidades esenciales para la detección y documentación de servicios de red utilizando Nmap. Estas habilidades son la base de las prácticas de evaluación de seguridad de red utilizadas por profesionales en todo el mundo.

Las principales lecciones aprendidas incluyen configurar un servidor web básico, utilizar Nmap para detectar servicios en ejecución, interpretar los resultados del escaneo y documentar los hallazgos. Estas habilidades son aplicables en escenarios del mundo real, como la inventariación de redes, las evaluaciones de seguridad, la administración de sistemas y la verificación de cumplimiento. A medida que avances en redes y seguridad, Nmap será una herramienta invaluable. Considera explorar las características avanzadas de Nmap para mejorar tus capacidades de detección de redes.