Aprende técnicas de detección de sistema operativo y versión con 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á los fundamentos del reconocimiento de redes utilizando Nmap, con un enfoque en las técnicas de detección de sistemas operativos (SO) y versiones. Estas habilidades son cruciales para los profesionales de ciberseguridad, ya que ayudan a identificar posibles vulnerabilidades al determinar los sistemas operativos y servicios que se ejecutan en los sistemas objetivo.

Nmap, una herramienta de código abierto para la detección de redes y auditoría de seguridad, es el centro de este laboratorio. Al dominar sus capacidades de detección de SO y versiones, puede recopilar información crítica sobre los dispositivos de red, un primer paso clave para protegerlos de posibles amenazas. A lo largo del laboratorio, configurará un entorno de prueba, realizará análisis básicos y avanzados y combinará técnicas para un análisis integral de la red.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cybersecurity(("Cybersecurity")) -.-> cybersecurity/NmapGroup(["Nmap"]) nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) cybersecurity/NmapGroup -.-> cybersecurity/nmap_installation("Nmap Installation and Setup") cybersecurity/NmapGroup -.-> cybersecurity/nmap_port_scanning("Nmap Port Scanning Methods") cybersecurity/NmapGroup -.-> cybersecurity/nmap_target_specification("Nmap Target Specification") cybersecurity/NmapGroup -.-> cybersecurity/nmap_os_version_detection("Nmap OS and Version Detection") nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") subgraph Lab Skills cybersecurity/nmap_installation -.-> lab-415925{{"Aprende técnicas de detección de sistema operativo y versión con Nmap"}} cybersecurity/nmap_port_scanning -.-> lab-415925{{"Aprende técnicas de detección de sistema operativo y versión con Nmap"}} cybersecurity/nmap_target_specification -.-> lab-415925{{"Aprende técnicas de detección de sistema operativo y versión con Nmap"}} cybersecurity/nmap_os_version_detection -.-> lab-415925{{"Aprende técnicas de detección de sistema operativo y versión con Nmap"}} nmap/installation -.-> lab-415925{{"Aprende técnicas de detección de sistema operativo y versión con Nmap"}} nmap/port_scanning -.-> lab-415925{{"Aprende técnicas de detección de sistema operativo y versión con Nmap"}} nmap/target_specification -.-> lab-415925{{"Aprende técnicas de detección de sistema operativo y versión con Nmap"}} nmap/os_version_detection -.-> lab-415925{{"Aprende técnicas de detección de sistema operativo y versión con Nmap"}} end

Configuración de tu entorno

En este paso, prepararemos nuestro entorno de prueba. ¿Por qué necesitamos hacer esto? Bueno, para practicar el uso efectivo de Nmap, necesitamos un objetivo para escanear. Al crear un servidor simple, podemos simular un objetivo del mundo real en un entorno controlado. De esta manera, podemos practicar de forma segura y comprender las capacidades de detección de SO y versiones de Nmap.

Comprensión del entorno de prueba

Antes de comenzar a escanear con Nmap, debemos tener un objetivo. Imagina que es como una búsqueda del tesoro; debes saber dónde buscar. Utilizaremos la utilidad netcat para crear un servidor simple en tu máquina local. Este servidor escuchará en un puerto específico y actuará como nuestro sistema objetivo para todos los análisis de Nmap que vamos a realizar.

Creación de un servidor de prueba

Primero, debemos asegurarnos de estar en el directorio correcto para nuestro trabajo de laboratorio. Esto es importante porque ayuda a mantener nuestros archivos organizados. Ejecuta el siguiente comando en tu terminal:

cd /home/labex/project

Ahora, vamos a crear un servidor simple utilizando netcat. Este servidor escuchará en el puerto 4444. Abre una terminal y ejecuta el siguiente comando:

nc -lvp 4444 -k

Desglosemos este comando:

  • nc es el comando para netcat. Netcat es una utilidad de red versátil que se puede utilizar para crear servidores y clientes.
  • -l le dice a netcat que entre en modo de escucha. En este modo, netcat actúa como un servidor, esperando conexiones entrantes.
  • -v habilita la salida detallada. Esto significa que netcat mostrará información más detallada sobre lo que está haciendo, lo cual es útil para la depuración.
  • -p 4444 especifica el puerto en el que el servidor escuchará. Los puertos son como puertas de una computadora; diferentes servicios utilizan diferentes puertos.
  • -k mantiene el servidor en ejecución incluso después de que un cliente se desconecte. Esto asegura que nuestro servidor permanezca activo y listo para más conexiones.

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

Listening on 0.0.0.0 4444

Esta salida indica que el servidor ahora está en funcionamiento y escuchando conexiones en el puerto 4444. Mantén esta ventana de terminal abierta porque necesitaremos que este servidor esté en ejecución para los siguientes pasos.

Verificación del servidor

Para asegurarnos de que nuestro servidor está funcionando correctamente, debemos comprobar si realmente está escuchando en el puerto 4444. Abre una nueva ventana de terminal y ejecuta el siguiente comando:

lsof -i:4444

El comando lsof significa "list open files" (listar archivos abiertos). En el contexto de la red, puede mostrar qué procesos están utilizando qué puertos de red. Al ejecutar lsof -i:4444, le estamos pidiendo que nos muestre qué proceso está escuchando en el puerto 4444. Deberías ver una entrada para nc en la salida. Esto confirma que nuestro servidor está operativo y listo para los análisis de Nmap.

Ahora que nuestro entorno de prueba está configurado, podemos pasar al siguiente paso, donde realizaremos nuestro primer análisis de detección de SO con Nmap.

Realización de una detección básica de sistema operativo

En este paso, aprenderemos sobre la capacidad de Nmap para detectar sistemas operativos y realizaremos nuestro primer análisis básico de detección de sistema operativo. Comprender cómo Nmap identifica los sistemas operativos que se ejecutan en los hosts objetivos es crucial para cualquier persona interesada en la seguridad de redes. Nos permite obtener información sobre los sistemas con los que estamos trabajando, lo cual se puede utilizar para diversas tareas relacionadas con la seguridad.

¿Qué es la detección de sistema operativo de Nmap?

La detección de sistema operativo de Nmap es una función poderosa que intenta averiguar el sistema operativo que se ejecuta en un dispositivo objetivo. Cuando trabajas en el campo de la ciberseguridad, conocer el sistema operativo de un objetivo puede brindarte mucha información sobre sus posibles vulnerabilidades y cómo protegerlo.

Así es cómo funciona: Nmap envía paquetes especialmente diseñados al objetivo. Estos paquetes están diseñados de tal manera que las respuestas que reciben tendrán sutiles diferencias dependiendo de cómo el sistema operativo implemente la pila TCP/IP del objetivo. Por ejemplo, diferentes sistemas operativos manejan los encabezados de paquetes, los números de secuencia y otros aspectos de la comunicación de red de manera única.

La detección de sistema operativo es extremadamente útil para los profesionales de seguridad. He aquí por qué:

  • Identificar sistemas potencialmente vulnerables: Diferentes sistemas operativos tienen diferentes vulnerabilidades de seguridad. Al conocer el sistema operativo, puedes buscar rápidamente las vulnerabilidades conocidas y tomar las medidas adecuadas.
  • Adaptar las medidas de seguridad a sistemas operativos específicos: Cada sistema operativo tiene sus propios mecanismos de seguridad y mejores prácticas. Una vez que conoces el sistema operativo, puedes implementar medidas de seguridad que sean más efectivas para ese sistema en particular.
  • Verificar que los sistemas estén ejecutando el sistema operativo esperado: En una organización, es posible que esperes que ciertos sistemas ejecuten sistemas operativos específicos. La detección de sistema operativo te ayuda a confirmar que este es el caso, lo cual es importante para mantener un entorno de red seguro y coherente.

Ejecución de un análisis básico de detección de sistema operativo

Suponiendo que nuestro servidor todavía esté en funcionamiento desde el paso anterior, ahora abriremos una nueva ventana de terminal. La terminal es una herramienta poderosa que nos permite interactuar con el sistema operativo utilizando comandos. Una vez que la terminal esté abierta, debemos navegar hasta nuestro directorio de proyecto. Aquí es donde se almacenarán todos los archivos y análisis relacionados con nuestro proyecto.

cd /home/labex/project

Ahora, vamos a realizar un análisis básico de detección de sistema operativo en nuestro servidor local. Utilizaremos la opción -O con Nmap. Esta opción habilita la función de detección de sistema operativo.

sudo nmap -O localhost -p 4444 > scan_results/basic_os_scan.txt

Desglosemos este comando para entender lo que hace cada parte:

  • sudo: Esto significa "superuser do" (ejecutar como superusuario). La detección de sistema operativo necesita acceso a sockets sin procesar, que es una forma de bajo nivel de interactuar con la red. Las cuentas de usuario normales generalmente no tienen este permiso, por lo que usamos sudo para ejecutar el comando con privilegios administrativos.
  • nmap: Este es el comando para ejecutar la herramienta Network Mapper. Nmap es una herramienta bien conocida y ampliamente utilizada para la exploración de redes y la auditoría de seguridad.
  • -O: Esta opción habilita la detección de sistema operativo. Cuando Nmap se ejecuta con esta opción, intentará determinar el sistema operativo del objetivo.
  • localhost: Este es nuestro objetivo. Se refiere a la máquina local, lo que significa que estamos escaneando nuestra propia computadora.
  • -p 4444: Esto especifica el puerto a escanear. En nuestro caso, nuestro servidor netcat se está ejecutando en el puerto 4444, por lo que queremos escanear este puerto específico.
  • > scan_results/basic_os_scan.txt: Esto redirige la salida del análisis de Nmap a un archivo llamado basic_os_scan.txt en el directorio scan_results. De esta manera, podemos guardar los resultados para su posterior análisis.

Análisis de los resultados

Ahora que hemos ejecutado el análisis y guardado los resultados en un archivo, examinemos los resultados del análisis. Utilizaremos el comando cat, que se utiliza para mostrar el contenido de un archivo en la terminal.

cat scan_results/basic_os_scan.txt

Deberías ver una salida similar a esta:

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

PORT     STATE SERVICE
4444/tcp open  krb524

Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops

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

Echemos un vistazo más de cerca a algunas partes clave de la salida:

  • Estado del puerto: El puerto que especificamos (4444) se muestra como abierto. Esto significa que el servidor netcat que se ejecuta en este puerto está aceptando conexiones entrantes.
  • Mensaje de advertencia: Hay una advertencia sobre la confiabilidad de la detección de sistema operativo. Esta es una información importante que necesitamos entender.
  • Identificación del sistema operativo: Nmap ha identificado que el sistema está ejecutando Linux. Esto nos da una idea general del sistema operativo del objetivo.
  • Detalles del sistema operativo: La sección de detalles del sistema operativo proporciona información más específica sobre el sistema operativo detectado, como la versión del kernel.

Comprensión del mensaje de advertencia

Es posible que hayas notado la advertencia: "OSScan results may be unreliable because we could not find at least 1 open and 1 closed port."

Esta advertencia es significativa. La detección de sistema operativo de Nmap funciona mejor cuando puede analizar las respuestas de puertos abiertos y cerrados. Diferentes sistemas operativos manejan los puertos abiertos y cerrados de manera diferente. Por ejemplo, pueden responder a solicitudes de conexión o sondeos de paquetes de manera única dependiendo de si el puerto está abierto o cerrado. En nuestro análisis, solo especificamos un puerto (4444) y está abierto. Entonces, Nmap nos está diciendo que sus resultados pueden no ser completamente confiables.

En el siguiente paso, exploraremos opciones de detección de sistema operativo más avanzadas para mejorar la precisión de nuestros análisis.

Opciones avanzadas de detección de sistema operativo

En este paso, exploraremos opciones más avanzadas de detección de sistema operativo en Nmap. La detección de sistema operativo es una parte crucial del análisis de redes, ya que nos ayuda a entender qué sistemas operativos se están ejecutando en las máquinas objetivo. Al utilizar estas opciones avanzadas, podemos mejorar la precisión y confiabilidad de nuestros análisis. A partir de lo que aprendimos en el paso anterior, utilizaremos banderas adicionales de Nmap para mejorar nuestras capacidades de detección de sistema operativo.

Mejora de la precisión de la detección de sistema operativo

Para mejorar la precisión de la detección de sistema operativo, necesitamos dar dos pasos importantes. Primero, debemos escanear múltiples puertos. Esto se debe a que diferentes puertos pueden proporcionar pistas diferentes sobre el sistema operativo. Al escanear múltiples puertos, nos aseguramos de que Nmap encuentre tanto puertos abiertos como cerrados. Los puertos abiertos pueden revelar los servicios que se ejecutan en el sistema, mientras que los puertos cerrados también pueden dar pistas sobre la configuración de seguridad del sistema operativo. En segundo lugar, utilizaremos banderas adicionales para refinar el análisis.

Ejecutemos un análisis más completo que mejorará la confiabilidad de la detección de sistema operativo:

sudo nmap -O -p 1-1000,4444 --osscan-guess localhost > scan_results/advanced_os_scan.txt

Entendamos los nuevos parámetros:

  • -p 1-1000,4444: Este parámetro le dice a Nmap que escanee los puertos del 1 al 1000, más nuestro puerto abierto 4444. Escanear un rango más amplio de puertos proporciona a Nmap más datos con los que trabajar, lo que puede conducir a una detección de sistema operativo más precisa.
  • --osscan-guess: Esta bandera hace que Nmap sea más agresivo en su detección de sistema operativo. A veces, Nmap puede no estar completamente seguro sobre el sistema operativo que está detectando. Con esta bandera, Nmap proporcionará su mejor suposición incluso en esas situaciones.

Análisis de los resultados del análisis avanzado

Ahora, examinemos los resultados de nuestro análisis avanzado. Analizar los resultados del análisis es un paso importante, ya que nos ayuda a entender lo que hemos aprendido sobre el sistema objetivo.

cat scan_results/advanced_os_scan.txt

La salida ahora debe contener información más detallada sobre el sistema operativo, similar a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-10 11:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE
4444/tcp open  krb524

OS details: Linux 5.4.0-42-generic
Network Distance: 0 hops

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

Observa que al escanear un rango de puertos, Nmap ahora tiene tanto puertos abiertos como cerrados para analizar. Estos datos adicionales mejoran la confiabilidad de los resultados de la detección de sistema operativo. El mensaje de advertencia que vimos anteriormente puede ya no aparecer o ser menos severo.

Comprensión de la detección agresiva de sistema operativo

La detección de sistema operativo de Nmap tiene opciones adicionales para análisis más detallados o agresivos. Estas opciones pueden ser útiles en diferentes escenarios, especialmente cuando quieres optimizar tu análisis según tus necesidades.

sudo nmap -O --osscan-limit --max-os-tries 1 localhost -p 4444 > scan_results/limited_os_scan.txt

Estas nuevas opciones:

  • --osscan-limit: Esta opción le dice a Nmap que solo intente la detección de sistema operativo en objetivos prometedores. Esto puede ahorrar tiempo al no desperdiciar recursos en objetivos que es poco probable que proporcionen información útil sobre el sistema operativo.
  • --max-os-tries 1: Esta opción limita el número de intentos que Nmap realiza para determinar el sistema operativo. Al reducir el número de intentos, podemos acelerar el análisis.

Revisa los resultados de este análisis:

cat scan_results/limited_os_scan.txt

Este enfoque es útil cuando quieres resultados más rápidos y estás dispuesto a sacrificar algo de precisión por velocidad. Esto a menudo es necesario cuando se analizan redes grandes, ya que analizar a fondo cada objetivo puede llevar mucho tiempo.

Cuándo utilizar diferentes opciones de detección de sistema operativo

Diferentes opciones de detección de sistema operativo son adecuadas para diferentes escenarios. Entender cuándo utilizar cada opción es importante para un análisis de redes eficiente y efectivo.

  1. Básico -O: Esto es bueno para el reconocimiento inicial. Cuando estás comenzando a explorar una red, utilizar la opción básica -O puede darte una visión general rápida de los sistemas operativos que se ejecutan en las máquinas objetivo.
  2. -O --osscan-guess: Esto es mejor cuando necesitas información más detallada sobre el sistema operativo. Si estás tratando de entender la versión específica de un sistema operativo o necesitas información más precisa para un análisis posterior, esta opción es una buena elección.
  3. -O --osscan-limit --max-os-tries 1: Esto es útil para análisis a gran escala donde la velocidad es importante. Cuando estás analizando una red grande, es posible que no tengas tiempo para realizar un análisis detallado en cada objetivo. Esta opción te permite obtener una idea general de los sistemas operativos rápidamente.

En el siguiente paso, exploraremos la detección de versiones, que complementa la detección de sistema operativo al identificar las versiones específicas de los servicios que se ejecutan en los sistemas objetivo.

Detección de versiones con Nmap

En este paso, aprenderemos sobre las capacidades de detección de versiones de Nmap. Antes de comenzar, entendamos por qué esto es importante. La detección de sistema operativo nos ayuda a averiguar qué sistema operativo está utilizando un objetivo. Sin embargo, la detección de versiones se centra en descubrir las versiones específicas de los servicios que se ejecutan en los puertos abiertos. Esto es crucial porque muchas vulnerabilidades de software están vinculadas a versiones específicas. Al conocer las versiones exactas de los servicios, podemos identificar los riesgos de seguridad potenciales de manera más precisa.

Comprensión de la detección de versiones

La detección de versiones, también conocida como detección de servicios, intenta responder a varias preguntas clave. En primer lugar, tiene como objetivo determinar qué aplicación se está ejecutando en un puerto abierto. En segundo lugar, intenta averiguar la versión específica de esa aplicación. A veces, incluso puede descubrir niveles de parche u otros detalles adicionales. Esta información es extremadamente valiosa porque muchas vulnerabilidades de seguridad son específicas de ciertas versiones de software. Si sabemos exactamente qué versiones de software se están ejecutando en un objetivo, podemos identificar rápidamente los posibles problemas de seguridad.

Realización de una detección de versiones

Ahora, ejecutemos un análisis de detección de versiones en nuestro servidor local. Utilizaremos el siguiente comando:

sudo nmap -sV localhost -p 4444 > scan_results/version_scan.txt

Desglosemos este comando. La opción -sV habilita la detección de versiones. Esto le dice a Nmap que intente averiguar las versiones de los servicios que se ejecutan en los puertos objetivo. localhost es nuestro objetivo, lo que significa que estamos escaneando nuestra propia máquina local. La opción -p 4444 especifica que solo estamos escaneando el puerto 4444. El símbolo > redirige la salida del análisis a un archivo llamado version_scan.txt en el directorio scan_results. De esta manera, podemos revisar los resultados más tarde.

Análisis de los resultados de la detección de versiones

Después de ejecutar el análisis, examinemos los resultados. Utilizaremos el comando cat para mostrar el contenido del archivo:

cat scan_results/version_scan.txt

Deberías ver una salida similar a esta:

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

PORT     STATE SERVICE VERSION
4444/tcp open  netcat?

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

Observa que Nmap está tratando de identificar qué servicio se está ejecutando en el puerto 4444. En este caso, estamos utilizando netcat, que no proporciona información específica sobre la versión. Por eso Nmap muestra "netcat?" con un signo de interrogación, lo que indica que no está seguro del servicio exacto y su versión.

Ajuste de la intensidad de la detección de versiones

Nmap te permite controlar la intensidad del proceso de detección de versiones. Puedes utilizar la opción --version-intensity para hacer esto. El nivel de intensidad va desde 0 (el análisis más ligero) hasta 9 (el análisis más agresivo). Ejecutemos un análisis más intensivo:

sudo nmap -sV --version-intensity 7 localhost -p 4444 > scan_results/intensive_version_scan.txt

Un análisis de mayor intensidad como este enviará más sondeos al objetivo. Intentará identificar con más esfuerzo el servicio que se ejecuta en el puerto. Sin embargo, también tomará más tiempo. Pero la ventaja es que podría darte resultados más detallados.

Revisemos los resultados de este análisis intensivo:

cat scan_results/intensive_version_scan.txt

Combinación de la detección de versiones y de sistema operativo

En situaciones del mundo real, a menudo necesitarás información tanto sobre el sistema operativo como sobre las versiones de un objetivo. Combinemos estas dos técnicas de análisis utilizando el siguiente comando:

sudo nmap -sV -O localhost -p 4444 > scan_results/combined_scan.txt

La opción -sV habilita la detección de versiones, y la opción -O habilita la detección de sistema operativo. Este enfoque combinado te proporciona información integral tanto sobre el sistema operativo como sobre los servicios que se ejecutan en el objetivo.

Revisemos los resultados de este análisis combinado:

cat scan_results/combined_scan.txt

La salida ahora contiene información tanto sobre el sistema operativo como sobre la versión del servicio. Esto proporciona una imagen más completa del sistema objetivo, lo cual es esencial para una evaluación de seguridad exhaustiva.

Comprender tanto el sistema operativo como las versiones específicas de los servicios que se ejecutan en un objetivo es crucial para un análisis de seguridad efectivo. En el siguiente paso, exploraremos cómo utilizar estas técnicas en escenarios prácticos.

Resumen

En este laboratorio, has aprendido las habilidades esenciales para utilizar Nmap para la detección de sistemas operativos y versiones. Comenzando por configurar un entorno de prueba básico, realizaste análisis básicos y de sistema operativo, exploraste la detección de versiones de servicios y combinaste estas técnicas para un reconocimiento exhaustivo de la red.

Los conceptos clave incluyen configurar un entorno controlado, realizar una detección básica de sistema operativo con la bandera -O, mejorar la precisión con --osscan-guess, utilizar -sV para la detección de versiones, combinar técnicas para el análisis, crear scripts personalizados y utilizar diferentes formatos de salida. Estas habilidades son fundamentales para la evaluación de seguridad de redes y la identificación de vulnerabilidades. A medida que avanzes en tu viaje de ciberseguridad, estas técnicas de Nmap serán valiosas para el reconocimiento de redes, las evaluaciones de seguridad y la gestión de vulnerabilidades.