¿Cómo usar las flags de escaneo de Nmap?

NmapBeginner
Practicar Ahora

Introducción

Nmap (Network Mapper) es una herramienta fundamental en la seguridad y administración de redes. Este laboratorio le presenta las banderas de escaneo de Nmap, que le permiten realizar un reconocimiento de red y una evaluación de vulnerabilidades efectivos. A través de la práctica práctica, aprenderá a usar varios comandos de Nmap para descubrir hosts, escanear puertos e identificar servicios en una red. Estas habilidades son esenciales para que los administradores de red y los profesionales de la seguridad mantengan entornos de red seguros.

Instalación de Nmap y Escaneo Básico

Instalación de Nmap

Nmap no está preinstalado en la mayoría de los sistemas, por lo que nuestro primer paso es instalarlo. Abra una terminal en su entorno LabEx y ejecute los siguientes comandos:

sudo apt update
sudo apt install nmap -y

Después de que se complete la instalación, verifique que Nmap esté instalado correctamente comprobando su versión:

nmap --version

Debería ver una salida similar a esta:

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

Comprensión de los Conceptos Básicos de Nmap

Nmap funciona enviando paquetes especialmente diseñados a los hosts objetivo y analizando las respuestas. Esto ayuda a determinar:

  • Qué hosts están disponibles en la red
  • Qué servicios (puertos) están ofreciendo
  • Qué sistemas operativos están ejecutando
  • Qué tipo de filtros de paquetes/firewalls están en uso

La sintaxis básica de un comando Nmap es:

nmap [tipo de escaneo] [opciones] objetivo

Donde:

  • [tipo de escaneo] especifica el tipo de escaneo a realizar
  • [opciones] son parámetros adicionales para personalizar el escaneo
  • objetivo es la dirección IP, el nombre de host o el rango de IP a escanear

Su Primer Escaneo: Escaneo del Localhost

Comencemos con un escaneo simple de su propia máquina (localhost). Ejecute:

nmap localhost

Este comando escanea los 1000 puertos TCP más comunes en su máquina local. La salida se verá similar a:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

La salida muestra:

  • La hora de inicio del escaneo
  • El host que se está escaneando (localhost/127.0.0.1)
  • Puertos abiertos y sus servicios asociados
  • Tiempo de finalización del escaneo y estadísticas

Comprensión de los Resultados del Escaneo

Analicemos la salida:

  • PORT: Muestra el número de puerto y el protocolo (por ejemplo, 22/tcp)
  • STATE: Indica si el puerto está abierto, cerrado o filtrado
  • SERVICE: Muestra el servicio típicamente asociado con ese puerto

Los estados de puerto más comunes son:

  • open: El puerto está aceptando conexiones
  • closed: El puerto es accesible pero ninguna aplicación está escuchando en él
  • filtered: Nmap no puede determinar si el puerto está abierto porque el filtrado de paquetes está bloqueando sus sondas

Escaneo de un Puerto Específico

Para escanear un puerto específico, use la bandera -p seguida del número de puerto:

nmap -p 22 localhost

La salida se centrará solo en el puerto 22:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh

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

Escaneo de un Rango de Puertos

Puede escanear un rango de puertos usando un guion:

nmap -p 20-25 localhost

Esto escanea los puertos 20 a 25:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE  SERVICE
20/tcp closed ftp-data
21/tcp closed ftp
22/tcp open   ssh
23/tcp closed telnet
24/tcp closed priv-mail
25/tcp closed smtp

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

Ahora ha aprendido a instalar Nmap y realizar un escaneo de puertos básico. En el siguiente paso, exploraremos técnicas de escaneo más avanzadas utilizando varias banderas de Nmap.

Explorando las Banderas de Escaneo Esenciales de Nmap

Ahora que comprende los conceptos básicos de Nmap, exploremos algunas banderas de escaneo esenciales que le darán más control e información de sus escaneos.

Escaneo TCP SYN (-sS)

El escaneo TCP SYN es el tipo de escaneo predeterminado cuando se ejecuta como root. A menudo se le llama escaneo "semiabierto" porque nunca completa las conexiones TCP. Es relativamente sigiloso y rápido.

Ejecutemos un escaneo SYN en localhost:

sudo nmap -sS localhost

La salida se verá similar a:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Escaneo TCP Connect (-sT)

El escaneo TCP Connect es el escaneo predeterminado cuando Nmap no se ejecuta con privilegios de root. Completa el handshake TCP completo, lo que lo hace más detectable pero también más confiable en algunos casos.

nmap -sT localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Detección de Versión del Servicio (-sV)

La bandera de detección de versión le dice a Nmap que intente determinar la versión de los servicios que se ejecutan en los puertos abiertos:

nmap -sV localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Observe cómo la salida ahora incluye información detallada de la versión para cada servicio. Esto es extremadamente valioso para las evaluaciones de seguridad, ya que ciertas versiones pueden tener vulnerabilidades conocidas.

Detección del Sistema Operativo (-O)

La bandera de detección del sistema operativo intenta determinar el sistema operativo del objetivo:

sudo nmap -O localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
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 1.57 seconds

Observe que Nmap ha detectado que el sistema está ejecutando la versión del kernel de Linux 4.X o 5.X.

Combinación de Banderas para un Escaneo Completo

Puede combinar múltiples banderas para obtener resultados más completos. Por ejemplo, combinemos la detección de la versión del servicio y la detección del sistema operativo:

sudo nmap -sV -O localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Escaneo Agresivo (-A)

La bandera de escaneo agresivo combina varias opciones de escaneo, incluida la detección del sistema operativo, la detección de la versión, el escaneo de scripts y traceroute:

sudo nmap -A localhost

Salida (truncada para abreviar):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp      CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 11
|   Capabilities flags: 65535
|   Some Capabilities: SupportsLoadDataLocal, Support41Auth, Speaks41ProtocolOld, IgnoreSigpipes, DontAllowDatabaseTableColumn, FoundRows, SupportsCompression, ConnectWithDatabase, LongPassword, InteractiveClient, SwitchToSSLAfterHandshake, ODBCClient, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, LongColumnFlag, SupportsTransactions, SupportsMultipleResults, SupportsAuthPlugins, SupportsMultipleStatments
|   Status: Autocommit
|   Salt: \x14\x12\x1Fjw\x182\x15\x0D\x12\x13C\x1F\x14\x0D\x07
|_  Auth Plugin Name: caching_sha2_password
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

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

Observe la cantidad significativa de información adicional proporcionada por el escaneo agresivo, incluida la información de la clave SSH, los detalles del servidor HTTP y la información del servicio MySQL más detallada.

En este paso, ha aprendido sobre varias banderas de escaneo esenciales de Nmap y cómo combinarlas para obtener resultados más completos. En el siguiente paso, exploraremos estrategias de escaneo prácticas para diferentes escenarios.

Estrategias de Escaneo de Red y Controles de Tiempo

En este paso, aprenderemos sobre las estrategias de escaneo de red y cómo controlar el tiempo y el rendimiento de los escaneos de Nmap. Esto es crucial al escanear redes más grandes o cuando necesita ser más discreto.

Escaneo de Múltiples Hosts

Nmap puede escanear múltiples hosts de varias maneras:

Escaneo de una Lista de IPs

Puede especificar múltiples direcciones IP separadas por espacios:

nmap 127.0.0.1 127.0.0.2

Escaneo de un Rango de IP

Puede escanear un rango de direcciones IP utilizando la notación CIDR:

nmap 127.0.0.1/30

Este comando escanea de 127.0.0.0 a 127.0.0.3. La salida mostrará:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

Nmap scan report for 127.0.0.2
Host is up (0.00015s latency).
All 1000 scanned ports on 127.0.0.2 are closed

Nmap scan report for 127.0.0.3
Host is up (0.00013s latency).
All 1000 scanned ports on 127.0.0.3 are closed

Nmap done: 4 IP addresses (3 hosts up) scanned in 0.92 seconds

Opciones de Descubrimiento de Host

Escaneo Ping (-sn)

A veces, solo desea saber qué hosts están en línea sin escanear puertos. El escaneo ping es perfecto para esto:

nmap -sn 127.0.0.1/24

Este comando escaneará toda la subred 127.0.0.1/24, pero solo realizará el descubrimiento de host sin escanear puertos. Debido a la longitud de la salida, solo mostraremos un fragmento:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Nmap scan report for 127.0.0.2
Host is up (0.00013s latency).
Nmap scan report for 127.0.0.3
Host is up (0.00014s latency).
...
Nmap done: 256 IP addresses (256 hosts up) scanned in 2.34 seconds

Omitir el Descubrimiento de Host (-Pn)

A veces, los firewalls bloquean las solicitudes de ping. Para evitar esto y escanear todos los hosts independientemente de las respuestas de ping, use la bandera -Pn:

nmap -Pn localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:45 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Controles de Tiempo y Rendimiento

Nmap proporciona varias plantillas de tiempo que ajustan varios parámetros de escaneo:

  • -T0: Paranoid - Muy lento, utilizado para la evasión de IDS
  • -T1: Sneaky - Lento, utilizado para la evasión de IDS
  • -T2: Polite - Disminuye la velocidad para consumir menos ancho de banda
  • -T3: Normal - Predeterminado, equilibra la velocidad con la fiabilidad
  • -T4: Aggressive - Más rápido, asume una red razonablemente rápida y confiable
  • -T5: Insane - Muy rápido, asume una red extremadamente rápida

Probemos un escaneo agresivo:

nmap -T4 localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Observe que el escaneo se completó un poco más rápido que el escaneo predeterminado.

Formatos de Salida

Nmap puede guardar los resultados del escaneo en varios formatos para su posterior análisis o informes:

Salida Normal (-oN)

Guarde los resultados del escaneo en un formato normal en un archivo:

nmap -oN scan_results.txt localhost

Este comando guarda la salida del escaneo en scan_results.txt en el directorio actual.

Salida XML (-oX)

Guarde los resultados del escaneo en formato XML, lo cual es útil para analizar con otras herramientas:

nmap -oX scan_results.xml localhost

Todos los Formatos (-oA)

Guarde los resultados del escaneo en todos los formatos (normal, XML y grepable):

nmap -oA scan_results localhost

Esto crea tres archivos: scan_results.nmap, scan_results.xml y scan_results.gnmap.

Examinemos el contenido del archivo de salida normal:

cat scan_results.txt

Salida:

## Nmap 7.80 scan initiated Thu Sep 14 16:55:23 2023 as: nmap -oN scan_results.txt localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

## Nmap done at Thu Sep 14 16:55:23 2023 -- 1 IP address (1 host up) scanned in 0.12 seconds

Estrategia de Escaneo Práctica

Combinemos lo que hemos aprendido para crear una estrategia de escaneo práctica para un escaneo completo:

sudo nmap -sS -sV -O -T4 -oA comprehensive_scan localhost

Este comando:

  • Utiliza el escaneo sigiloso SYN (-sS)
  • Detecta las versiones de los servicios (-sV)
  • Intenta la detección del sistema operativo (-O)
  • Utiliza el tiempo agresivo (-T4)
  • Guarda los resultados en todos los formatos (-oA)

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Ahora puede ver los resultados del escaneo completo en cualquiera de los archivos de salida:

ls comprehensive_scan.*

Salida:

comprehensive_scan.gnmap  comprehensive_scan.nmap  comprehensive_scan.xml

Consideraciones Éticas

Recuerde que el escaneo de red solo debe realizarse en redes que posea o para las que tenga permiso explícito para escanear. El escaneo no autorizado puede ser:

  1. Ilegal en muchas jurisdicciones
  2. Considerado un acto hostil por los administradores de red
  3. Potencialmente perjudicial para los servicios de red

En este entorno de laboratorio, solo hemos escaneado localhost, lo cual siempre está permitido, ya que es su propio sistema.

Ahora ha aprendido sobre diferentes estrategias de escaneo de red, controles de tiempo y formatos de salida. Tiene todo el conocimiento fundamental necesario para realizar un reconocimiento de red eficaz utilizando Nmap.

Escaneo de Scripts y Análisis de Servicios Dirigidos

En este paso, exploraremos el potente motor de scripting (NSE) de Nmap y aprenderemos a realizar análisis de servicios dirigidos. Los scripts NSE amplían la funcionalidad de Nmap al habilitar escaneos más detallados para servicios y vulnerabilidades específicos.

Introducción al Motor de Scripting de Nmap (NSE)

El Motor de Scripting de Nmap permite a los usuarios escribir y compartir scripts para automatizar una variedad de tareas de red. Nmap viene con cientos de scripts preescritos categorizados en varios grupos:

  • auth: Scripts relacionados con la autenticación
  • default: Scripts ejecutados por defecto con -sC
  • discovery: Descubrimiento de host y servicio
  • exploit: Intento de explotar vulnerabilidades
  • malware: Detectar malware y puertas traseras
  • safe: Scripts seguros y no intrusivos
  • vuln: Scripts de detección de vulnerabilidades

Ejecución de Scripts Predeterminados (-sC)

La bandera -sC ejecuta el conjunto predeterminado de scripts, que generalmente son seguros y proporcionan información útil:

nmap -sC localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
|_mysql-info: ERROR: Script execution failed (use -d to debug)

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

Observe cómo los scripts han proporcionado información adicional sobre cada servicio, como las claves de host SSH y los títulos de las páginas HTTP.

Ejecución de Scripts Específicos

Puede ejecutar scripts específicos utilizando la bandera --script seguida del nombre o la categoría del script:

nmap --script=http-title localhost

Esto ejecuta solo el script http-title, que recupera el título de las páginas HTTP:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql

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

Ejecución de Scripts por Categoría

Puede ejecutar todos los scripts en una categoría específica:

nmap --script=discovery localhost

Esto ejecuta todos los scripts de descubrimiento, que pueden proporcionar una gran cantidad de información sobre los servicios de red (salida truncada para abreviar):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
| cups-info:
|   CUPS Server:
|     Server: CUPS/2.3 IPP/2.1
|_    Authentication-Method: Basic
| http-methods:
|_  Supported Methods: GET HEAD OPTIONS POST
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 15
|   Capabilities flags: 65535
|   Some Capabilities: ConnectWithDatabase, SupportsLoadDataLocal, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, InteractiveClient, Speaks41ProtocolOld, FoundRows, IgnoreSigpipes, ODBCClient, SwitchToSSLAfterHandshake, IgnoreSpaceBeforeParenthesis, LongColumnFlag, Speaks41ProtocolNew, SupportsMultipleStatments, LongPassword, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins
|   Status: Autocommit
|   Salt: \x7FeL)\x0C\x5C#S\x06N%\x1E\x7EYaC
|_  Auth Plugin Name: caching_sha2_password

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

Combinación del Escaneo de Scripts con la Detección de Servicios

Para obtener los resultados más completos, combine el escaneo de scripts con la detección de servicios:

nmap -sV -sC localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp     CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql   MySQL 8.0.30-0ubuntu0.20.04.2
|_mysql-info: ERROR: Script execution failed (use -d to debug)
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 9.03 seconds

Análisis de Servicios Dirigidos

Centrémonos en analizar servicios específicos con más detalle.

Análisis de Servicios HTTP

Para analizar los servicios HTTP en detalle, podemos usar los scripts http-*:

nmap --script="http-*" -p 80 localhost

Esto ejecuta todos los scripts relacionados con HTTP contra el puerto 80:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE SERVICE
80/tcp open  http
|_http-chrono: Request times for /; avg: 32.68ms; min: 32.68ms; max: 32.68ms
|_http-comments-displayer: Couldn't find any comments.
|_http-date: Thu, 14 Sep 2023 17:30:24 GMT; +6s from local time.
|_http-devframework: Couldn't determine the underlying framework or CMS. Try increasing 'httpspider.maxpagecount' value to spider more pages.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
|_http-feed: Couldn't find any feeds.
|_http-fetch: Please enter the complete path of the directory to save data in.
|_http-generator: Couldn't find any generator in the HTML headers and body
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-mobileversion-checker: No mobile version detected.
|_http-referer-checker: Couldn't find any cross-domain scripts.
|_http-security-headers:
| http-server-header:
|   Apache/2.4.41
|_  Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-traceroute: ERROR: Script execution failed (use -d to debug)
|_http-useragent-tester:
|_http-xssed: No previously reported XSS vuln.

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

Análisis de Servicios SSH

De manera similar, podemos analizar los servicios SSH:

nmap --script="ssh-*" -p 22 localhost

Salida:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
|_ssh-run: ERROR: Script execution failed (use -d to debug)

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

Escaneo de Vulnerabilidades

Nmap incluye scripts que pueden detectar posibles vulnerabilidades. El uso de la categoría vuln puede ayudar a identificar problemas de seguridad:

nmap --script=vuln localhost

Esto puede llevar algún tiempo, ya que ejecuta varias comprobaciones de vulnerabilidad. La salida podría verse así:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-slowloris-check:
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|
|     Disclosure date: 2009-09-17
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_      http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
631/tcp  open  ipp
3306/tcp open  mysql

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

En este caso, Nmap ha identificado que el servidor web Apache podría ser vulnerable a un ataque Slowloris DoS. Esta información puede ser valiosa para asegurar sus sistemas.

Creación de un Informe de Escaneo Completo

Ahora, combinemos todo lo que hemos aprendido para crear un informe de seguridad completo:

sudo nmap -sS -sV -O -sC --script=vuln -T4 -oA comprehensive_security_report localhost

Este comando:

  • Utiliza el escaneo sigiloso SYN (-sS)
  • Detecta las versiones de los servicios (-sV)
  • Intenta la detección del sistema operativo (-O)
  • Ejecuta los scripts predeterminados (-sC)
  • Ejecuta los scripts de detección de vulnerabilidades (--script=vuln)
  • Utiliza el tiempo agresivo (-T4)
  • Guarda los resultados en todos los formatos (-oA)

La salida será completa y podría tardar algún tiempo en completarse. Una vez finalizado, tendrá un informe de seguridad detallado en varios formatos (normal, XML y grepable) al que puede hacer referencia para el análisis de seguridad.

En este paso, ha aprendido a utilizar el motor de scripting de Nmap para recopilar información detallada sobre los servicios y detectar posibles vulnerabilidades. Estas técnicas avanzadas son esenciales para las evaluaciones integrales de seguridad de la red.

Resumen

En este laboratorio, ha aprendido los fundamentos del uso de Nmap para el reconocimiento de red y la evaluación de seguridad. Ahora comprende:

  1. Cómo instalar Nmap y realizar escaneos básicos de hosts y puertos
  2. Cómo usar las banderas de escaneo esenciales de Nmap para diferentes tipos de escaneos
  3. Cómo implementar estrategias de escaneo efectivas y controlar los parámetros de tiempo
  4. Cómo aprovechar el Motor de Scripting de Nmap para el análisis detallado de servicios y la detección de vulnerabilidades

Estas habilidades forman una base para las evaluaciones de seguridad de la red y son esenciales para los profesionales de la ciberseguridad. Recuerde usar siempre estas técnicas de manera responsable y solo en redes que tenga permiso para escanear.

A medida que continúa su viaje en ciberseguridad, considere explorar funciones más avanzadas de Nmap, como el desarrollo de scripts NSE personalizados, técnicas de evasión de firewall y la integración con otras herramientas de seguridad. La práctica regular con Nmap le ayudará a ser más eficiente en la identificación de posibles problemas de seguridad en entornos de red.