Detectar Servicios y Versiones en 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 detectar servicios y sus versiones utilizando Nmap. El laboratorio aborda la detección básica de servicios en el localhost, ajustar la intensidad de la exploración, detectar servicios en puertos específicos, realizar una detección completa, analizar la salida en la terminal Xfce y guardar los resultados en un archivo de texto. Ejecutará comandos como nmap -sV 127.0.0.1 y nmap -sV -oN services.txt 192.168.1.1 para adquirir experiencia práctica con las capacidades de detección de versiones de servicios de Nmap.


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/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/timing_performance("Timing and Performance") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/output_formats -.-> lab-530177{{"Detectar Servicios y Versiones en Nmap"}} nmap/save_output -.-> lab-530177{{"Detectar Servicios y Versiones en Nmap"}} nmap/target_specification -.-> lab-530177{{"Detectar Servicios y Versiones en Nmap"}} nmap/timing_performance -.-> lab-530177{{"Detectar Servicios y Versiones en Nmap"}} nmap/os_version_detection -.-> lab-530177{{"Detectar Servicios y Versiones en Nmap"}} nmap/service_detection -.-> lab-530177{{"Detectar Servicios y Versiones en Nmap"}} end

Ejecutar la detección de servicios con nmap -sV 127.0.0.1

En este paso, realizaremos una exploración básica de detección de servicios utilizando Nmap. La detección de servicios ayuda a identificar las aplicaciones y versiones que se ejecutan en los puertos abiertos de un sistema objetivo. Esta información es crucial para la evaluación de vulnerabilidades y la prueba de penetración.

El comando nmap -sV 127.0.0.1 instruye a Nmap para realizar la detección de versiones de servicios (-sV) en el localhost (127.0.0.1). El localhost es su propia máquina.

Ejecutemos el comando:

  1. Abra la terminal Xfce.

  2. Escriba el siguiente comando y presione Enter:

nmap -sV 127.0.0.1

Debería ver una salida similar a la siguiente:

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).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.52 ((Ubuntu))
111/tcp  open  rpcbind 2-4 (RPC #100000)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Explicación:

  • Starting Nmap...: Indica la versión de Nmap que se está utilizando.
  • Nmap scan report for localhost (127.0.0.1): Muestra el objetivo de la exploración.
  • Host is up: Confirma que el objetivo es alcanzable.
  • Not shown: 997 closed ports: Indica que 997 puertos estaban cerrados y no se mostraron. Nmap solo muestra los puertos abiertos, filtrados o no filtrados por defecto.
  • PORT STATE SERVICE VERSION: Esta sección muestra los puertos abiertos, su estado (abierto), el servicio que se ejecuta en el puerto y la versión del servicio. Por ejemplo, el puerto 22 está abierto y ejecuta la versión 8.9p1 de OpenSSH. El puerto 80 está abierto y ejecuta la versión 2.4.52 de Apache httpd.
  • Service Info: Proporciona información adicional sobre el sistema operativo.
  • Nmap done: Indica que la exploración ha terminado y muestra el tiempo transcurrido.

Esta simple exploración proporciona información valiosa sobre los servicios que se ejecutan en su máquina. En los siguientes pasos, exploraremos opciones más avanzadas para la detección de servicios.

Ajustar la intensidad con nmap -sV --version-intensity 7 192.168.1.1

En este paso, aprenderemos a ajustar la intensidad de la detección de versiones de servicios de Nmap. La opción --version-intensity te permite controlar con qué agresividad Nmap explora la información del servicio. Un nivel de intensidad más alto significa que Nmap intentará más sondas, lo que puede conducir a resultados más precisos, pero también tomará más tiempo.

La opción --version-intensity toma un valor de 0 a 9, donde 0 es el más ligero y 9 es el más agresivo. La intensidad predeterminada es 7.

Importante: Antes de continuar, tenga en cuenta que es posible que la exploración de 192.168.1.1 no funcione directamente en el entorno de la máquina virtual LabEx, ya que es probable que sea una dirección de red interna. Para fines de demostración, usaremos 127.0.0.1 (localhost) en su lugar. En un escenario real, reemplazarías esto con la dirección IP real del objetivo.

Ejecutemos el comando con un nivel de intensidad de 7:

  1. Abra la terminal Xfce.

  2. Escriba el siguiente comando y presione Enter:

nmap -sV --version-intensity 7 127.0.0.1

Debería ver una salida similar a la siguiente (la salida exacta puede variar según los servicios que se ejecuten en su máquina):

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).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.52 ((Ubuntu))
111/tcp  open  rpcbind 2-4 (RPC #100000)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Ahora, probemos un nivel de intensidad más bajo, como 2:

nmap -sV --version-intensity 2 127.0.0.1

Observe la salida. Es posible que note que la exploración se completa más rápido, pero la información de versión puede ser menos detallada o precisa.

Explicación:

  • nmap -sV --version-intensity 7 127.0.0.1: Realiza la detección de versiones de servicios con un nivel de intensidad de 7 en localhost.
  • nmap -sV --version-intensity 2 127.0.0.1: Realiza la detección de versiones de servicios con un nivel de intensidad de 2 en localhost.

Al ajustar la opción --version-intensity, puedes ajustar con precisión el equilibrio entre la velocidad de la exploración y la precisión. En situaciones donde el tiempo es crítico, un nivel de intensidad más bajo puede ser preferible. Para evaluaciones más exhaustivas, se recomienda un nivel de intensidad más alto.

Detectar en puertos específicos con nmap -sV -p 80 192.168.1.1

En este paso, centraremos nuestra exploración de detección de servicios en un puerto específico. Esto es útil cuando ya sabes qué puerto te interesa o cuando quieres reducir el tiempo de exploración solo dirigiéndote a un servicio específico.

La opción -p en Nmap te permite especificar el puerto o los puertos que quieres explorar. En este caso, exploraremos el puerto 80, que se utiliza comúnmente para los servicios HTTP (web).

Importante: Al igual que en el paso anterior, es posible que la exploración de 192.168.1.1 no funcione directamente en el entorno de la máquina virtual LabEx. Usaremos 127.0.0.1 (localhost) en su lugar. Recuerda reemplazar esto con la dirección IP real del objetivo en un escenario real.

Ejecutemos el comando:

  1. Abra la terminal Xfce.

  2. Escriba el siguiente comando y presione Enter:

nmap -sV -p 80 127.0.0.1

Debería ver una salida similar a la siguiente:

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

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))

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

Explicación:

  • nmap -sV -p 80 127.0.0.1: Realiza la detección de versiones de servicios (-sV) en el puerto 80 (-p 80) del localhost (127.0.0.1).
  • La salida muestra que el puerto 80 está abierto y ejecutando la versión 2.4.52 de Apache httpd.
  • Observe que el tiempo de exploración es significativamente más corto en comparación con las exploraciones anteriores, ya que solo estamos explorando un solo puerto.

También puedes especificar un rango de puertos utilizando la opción -p. Por ejemplo, para explorar los puertos 80, 443 y 8080, usarías el siguiente comando:

nmap -sV -p 80,443,8080 127.0.0.1

Esto te permite dirigirte a múltiples puertos específicos en una sola exploración.

Utilizar la detección completa con nmap -sV --version-all 127.0.0.1

En este paso, utilizaremos la opción --version-all de Nmap para realizar la detección de versiones de servicios tan completa como sea posible. Esta opción instruye a Nmap que intente cada sonda de detección de versiones en cada puerto abierto. Es la configuración más agresiva y puede proporcionar los resultados más precisos, pero también tarda más tiempo en completarse.

Ejecutemos el comando:

  1. Abra la terminal Xfce.

  2. Escriba el siguiente comando y presione Enter:

nmap -sV --version-all 127.0.0.1

Debería ver una salida similar a la siguiente (la salida exacta puede variar según los servicios que se ejecuten en su máquina):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http    Apache httpd 2.4.52 ((Ubuntu))
111/tcp  open  rpcbind 2-4 (RPC #100000)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Explicación:

  • nmap -sV --version-all 127.0.0.1: Realiza la detección de versiones de servicios (-sV) con la opción --version-all en localhost (127.0.0.1).
  • La salida muestra los puertos abiertos y las versiones de servicios detectadas.
  • Observe que el tiempo de exploración es más largo en comparación con las exploraciones anteriores, ya que Nmap está intentando cada sonda posible.

Consideraciones importantes:

  • Utilizar --version-all puede aumentar significativamente el tiempo de exploración.
  • En algunos casos, puede no proporcionar resultados significativamente más precisos que el nivel de intensidad predeterminado.
  • Tenga en cuenta el impacto potencial en el sistema objetivo, ya que esta exploración agresiva puede generar más tráfico.

Esta opción es más útil cuando necesita la información más precisa posible de las versiones de servicios y está dispuesto a aceptar un tiempo de exploración más largo.

Analizar la salida en la terminal Xfce

En este paso, aprenderemos a analizar la salida de las exploraciones de Nmap directamente en la terminal Xfce. Comprender la salida es crucial para identificar posibles vulnerabilidades y obtener información sobre el sistema objetivo.

Supongamos que ya has ejecutado uno de los comandos de Nmap anteriores, por ejemplo:

nmap -sV 127.0.0.1

La salida se mostrará directamente en la terminal. Analicemos los elementos clave de la salida:

  • Starting Nmap...: Esta línea indica la versión de Nmap y la hora en que comenzó la exploración.
  • Nmap scan report for...: Esta línea muestra la dirección IP o el nombre de host objetivo.
  • Host is up...: Esto indica si el host objetivo es alcanzable.
  • PORT STATE SERVICE VERSION: Esta es la tabla principal que contiene los resultados de la exploración.
    • PORT: El número de puerto.
    • STATE: El estado del puerto (por ejemplo, open, closed, filtered).
    • SERVICE: El servicio detectado que se ejecuta en el puerto (por ejemplo, http, ssh, smtp).
    • VERSION: La versión del servicio detectado (por ejemplo, Apache httpd 2.4.52, OpenSSH 8.9p1).
  • Service detection performed...: Esta línea indica que se realizó la detección de versiones de servicios.
  • Nmap done...: Esta línea muestra la duración de la exploración y el número de hosts explorados.

Análisis de la salida:

  1. Puertos abiertos: Identifica los puertos abiertos. Estos son los puertos que están activamente escuchando conexiones y son puntos de entrada potenciales para los atacantes.
  2. Servicios: Determina los servicios que se ejecutan en los puertos abiertos. Conocer los servicios te permite investigar posibles vulnerabilidades asociadas a esos servicios.
  3. Versiones: Identifica las versiones de los servicios. Las versiones antiguas de software a menudo tienen vulnerabilidades conocidas que se pueden explotar.

Ejemplo:

Si la salida muestra que el puerto 22 está abierto y ejecutando OpenSSH 7.6p1, puedes investigar las vulnerabilidades conocidas para esa versión específica de OpenSSH.

Uso de grep para filtrar la salida:

Puedes usar el comando grep para filtrar la salida de Nmap y centrarte en información específica. Por ejemplo, para encontrar todas las líneas que contengan la palabra "open", puedes enviar la salida de Nmap a grep:

Primero, ejecuta el comando nmap nuevamente:

nmap -sV 127.0.0.1

Luego, envía la salida a grep. Dado que la salida del comando anterior ya está en la terminal, no podemos enviar la salida directamente. Sin embargo, podemos usar grep para buscar la salida del comando en el historial de la terminal.

history | grep "nmap -sV 127.0.0.1" | tail -n 1 | xargs -L 1 bash -c 'eval $(echo $1 | sed "s/^[ ]*[0-9]*[ ]*//")'

Este comando primero encuentra la línea en el historial que contiene el comando nmap, luego extrae el comando en sí y, finalmente, lo ejecuta. La salida del comando nmap se mostrará luego en la terminal.

Ahora, usemos grep para filtrar la salida. Dado que no podemos enviar directamente la salida del comando anterior, tendremos que ejecutar el comando nmap nuevamente y enviar su salida a grep.

nmap -sV 127.0.0.1 | grep "open"

Esto mostrará solo las líneas que contienen la palabra "open", lo que facilita la identificación de los puertos abiertos.

Analizar la salida en la terminal es una habilidad fundamental para los administradores de redes y profesionales de seguridad. Te permite evaluar rápidamente la postura de seguridad de un sistema y identificar posibles vulnerabilidades.

Guardar los resultados con nmap -sV -oN services.txt 192.168.1.1

En este paso, aprenderemos a guardar los resultados de una exploración de Nmap en un archivo para su posterior análisis o informe. Nmap ofrece varios formatos de salida, y usaremos el formato de salida "normal" (-oN) en este ejemplo.

  1. Abra la terminal Xfce.

  2. Escriba el siguiente comando y presione Enter:

nmap -sV -oN services.txt 192.168.1.1

Este comando realiza una exploración de detección de versiones de servicios (-sV) en la dirección IP objetivo 192.168.1.1 y guarda la salida en el formato "normal" (-oN) en un archivo llamado services.txt en su directorio actual (~/project).

Explicación:

  • nmap -sV: Realiza la detección de versiones de servicios.
  • -oN services.txt: Especifica que la salida debe guardarse en el formato "normal" en un archivo llamado services.txt.
  • 192.168.1.1: La dirección IP objetivo. Nota: Si no tiene un host en 192.168.1.1, puede usar 127.0.0.1 en su lugar.

Después de que se complete la exploración, puede ver el contenido del archivo services.txt usando el comando cat:

cat services.txt

Esto mostrará los resultados de la exploración de Nmap en la terminal.

Alternativamente, puede abrir el archivo services.txt con un editor de texto como nano:

nano services.txt

Esto le permite explorar los resultados de manera más estructurada.

Comprendiendo el Formato de Salida:

El formato de salida "normal" está diseñado para ser legible por humanos y proporciona un resumen conciso de los resultados de la exploración. Incluye información sobre el host objetivo, los puertos abiertos, los servicios detectados y sus versiones.

Otros Formatos de Salida:

Nmap admite varios otros formatos de salida, incluyendo:

  • -oX: Formato de salida XML, adecuado para ser analizado por otras herramientas.
  • -oS: Formato de salida para Script Kiddie (para divertirse).
  • -oG: Formato de salida grepable, diseñado para ser fácilmente analizado con grep y otras herramientas de línea de comandos.

Guardar los resultados de la exploración es esencial para documentar sus hallazgos, compartirlos con otros y rastrear los cambios con el tiempo.

Resumen

En esta práctica, los participantes aprenden a usar Nmap para la detección de servicios y versiones. Comienzan con una exploración básica de detección de servicios en el localhost usando el comando nmap -sV 127.0.0.1. También aprenden a ajustar la intensidad de la exploración, detectar servicios en puertos específicos y realizar una exploración completa. Además, analizan la salida en la terminal Xfce y guardan los resultados en un archivo de texto usando la opción -oN.