Guía Completa para el Uso de Nmap en Auditorías de Seguridad y Análisis de Red



Importante: El uso de Nmap o cualquier otra herramienta de escaneo de redes debe realizarse de manera ética y respetando las leyes y políticas de seguridad establecidas. Escanear redes sin autorización puede ser considerado ilegal y tener consecuencias legales graves. Así que asegúrate de utilizar Nmap de manera responsable y dentro de los límites legales. 

Para instalar Nmap en un sistema operativo basado en Linux, como Ubuntu, puedes seguir estos pasos:

  1. Actualizar los repositorios del sistema:
    Abre una terminal y ejecuta el siguiente comando para asegurarte de que los repositorios de tu sistema estén actualizados.
   sudo apt update
  1. Instalar Nmap:
    Una vez actualizados los repositorios, puedes instalar Nmap con el siguiente comando.
   sudo apt install nmap
  1. Verificar la instalación:
    Para comprobar que Nmap se ha instalado correctamente, ejecuta:
   nmap --version

¿Como se usa nmap?

La exploración de puertos suele ser utilizada bajo dos puntos de vista diferentes:

  • Método para conocer el nivel de seguridad de la configuración de los servicios que se ofrecen.
  • Una de las primeras etapas que un posible atacante lleva a cabo, dentro del plan de ataque, para investigar o enumerar qué servicios activos tiene la víctima.

Nmap, cuyo nombre significa mapeador de redes, es software libre y puede redistribuirse y/o modificarse bajo los términos de la Licencia Pública General GNU.

Las opciones disponibles si se desea utilizar nmap son:

  • El comando nmap para la consola
  • Zenmap como herramienta gráfica.

Su funcionamiento se basa en el envío de paquetes IP en formato raw (crudo), es decir, paquetes que no han sufrido ningún tipo de modificación, y por lo tanto son originales sea cual sea el protocolo utilizado.

¿Qué permite nmap?

  • Descubrir e identificar equipos en la red.
  • Identificar puertos abiertos en estos equipos.
  • Conocer los servicios concretos que están ofreciendo estos equipos.
  • Identificar el sistema operativo que tienen instalado, incluida la versión.
  • Conocer si se está utilizando un cortafuegos.
  • Conocer algunas características del hardware de red de los equipos detectados.

Es compatible con un gran número de técnicas de escaneo como:

  • UDP
  • TCP connect()
  • TCP SYN (half-open)
  • ICMP (ping sweep)
  • FIN
  • ACK sweep
  • Xmas Tree y Null scan

La salida de Nmap es un listado de objetivos analizados, con información adicional para cada uno dependiente de las opciones utilizadas. La información primordial es la «tabla de puertos interesantes». Dicha tabla lista el número de puerto y protocolo, el nombre más común del servicio y su estado.

  • Abierto (Open): significa que la aplicación en la máquina destino se encuentra esperando conexiones o paquetes en ese puerto. Es decir, que hay una aplicación aceptando conexiones TCP, datagramas UDP o asociaciones SCTP en el puerto.
  • Filtrado (Filtered): indica que un firewall (cortafuegos), filtro (reglas de router) u otro obstáculo en la red está bloqueando el acceso a ese puerto, por lo que Nmap no puede saber si se encuentra abierto o cerrado.
  • Cerrado (Closed): los puertos cerrados no tienen ninguna aplicación escuchando en los mismos, aunque podrían abrirse en cualquier momento.
  • No filtrado (Unfiltered): son aquellos que responden a los sondeos de Nmap, pero para los que Nmap no puede determinar si se encuentran abiertos o cerrados. Este estado solo lo devuelve el tipo de escaneo ACK.
  • Abierto | Filtrado (Open | Filtered): Nmap no es capaz de definir si el puerto está abierto/cerrado o filtrado. Ocurre cuando los puertos abiertos no generan una respuesta.
  • Cerrado | Filtrado (Closed | Filtered): Nmap informa de las combinaciones de estado Open | Filtered y Closed | Filtered cuando no puede determinar en cuál de los dos estados está un puerto.

Además de la tabla de puertos con nmap, se puede obtener información sobre los hosts/redes como son el nombre de DNS según la resolución inversa de la IP, un listado de sistemas operativos posibles, tipos de dispositivo y direcciones MAC.

Algunos conceptos de seguridad utilizados:

  • Decoy: significa señuelo y es utilizado para esconder la IP de la máquina origen que está realizando la exploración.
  • Fingerprinting: significa identificación por huella y se utiliza para detectar el sistema operativo de las máquinas que se están explorando.
  • Scan: se utiliza en el sentido de sondeo, análisis o exploración, no de escaneo de documentos.
  • Spoof: significa falsificar y va relacionado con algún tipo de servicio o protocolo que se quiere falsear.

Sintaxis de la herramienta:

La tabla de puertos también puede incluir detalles de la versión de la aplicación cuando se ha solicitado detección de versiones. Nmap ofrece información de los protocolos IP soportados, en vez de puertos abiertos, cuando se solicita un análisis de protocolo IP con la opción (-sO).

nmap [Tipo de Escaneo] [Opciones] {Especificación del destino "target"}
nmap -sS -A -T4 equipol.destino.com

Técnicas de escaneo de puertos

Nmap proporciona diversas técnicas para escanear puertos, identificadas generalmente con la opción -s<C>, donde <C> es una letra característica del tipo de escaneo. La excepción es la opción obsoleta de escaneo FTP rebotado -b.

Escaneo TCP SYN (-sS)

El escaneo SYN es el predeterminado y el más popular, debido a su velocidad y eficiencia. Este método es «medio abierto» ya que no completa la conexión TCP, lo que lo hace más discreto y menos intrusivo. Funciona enviando un paquete SYN y esperando una respuesta:

  • SYN/ACK: El puerto está abierto.
  • RST (reset): El puerto está cerrado.
  • Sin respuesta: El puerto está filtrado.
nmap -sS <máquina>

Escaneo TCP Connect (-sT)

El escaneo TCP Connect() se utiliza cuando no es posible usar el escaneo SYN, generalmente por falta de privilegios. Utiliza la llamada del sistema connect() para establecer conexiones, lo que lo hace menos eficiente y más detectable.

nmap -sT <máquina>

Escaneo UDP (-sU)

Los escaneos UDP son más lentos y difíciles que los TCP, pero esenciales para detectar servicios vulnerables. Envían una cabecera UDP vacía a cada puerto y se interpretan las respuestas ICMP para determinar el estado del puerto.

nmap -sU <máquina>

Escaneos TCP Null, FIN y Xmas (-sN, -sF, -sX)

Estos escaneos envían paquetes sin las banderas SYN, lo que puede atravesar algunos cortafuegos y ser más sigiloso. Sin embargo, no funcionan en todos los sistemas, especialmente en aquellos basados en Windows.

nmap -sN <máquina>
nmap -sF <máquina>
nmap -sX <máquina>

Escaneo TCP ACK (-sA)

Este método mapea reglas de cortafuegos y determina si son cortafuegos con inspección de estados. Un puerto filtrado no responde o envía mensajes ICMP de error.

nmap -sA <máquina>

Escaneo de ventana TCP (-sW)

Similar al escaneo ACK, pero examina el campo de ventana TCP en los paquetes RST para diferenciar entre puertos abiertos y cerrados.

nmap -sW <máquina>

Escaneo TCP Maimon (-sM)

Este método envía una sonda FIN/ACK y se basa en el comportamiento de algunos sistemas para no responder a puertos abiertos.

nmap -sM <máquina>

Escaneo TCP personalizable (–scanflags)

Permite diseñar sondeos personalizados especificando banderas TCP arbitrarias, dando flexibilidad para evadir detecciones IDS.

nmap --scanflags <banderas> <máquina>

Escaneo Zombi (-sI)

Permite realizar un escaneo TCP a ciegas, utilizando un sistema zombi para enviar los paquetes. Este método es extremadamente sigiloso.

nmap -sI <zombi>:<puerto_sonda> <máquina>

Escaneo de protocolo IP (-sO)

Determina qué protocolos soportan los sistemas objetivos, similar a los escaneos UDP pero itera sobre los números de protocolo IP.

nmap -sO <máquina>

Escaneo de rebote FTP (-b) [Obsoleto]

Abusa de servidores FTP para sondear otros sistemas. Esta técnica es menos común debido a las mejoras en seguridad de los servidores FTP modernos.

nmap -b <usuario>:<contraseña>@<servidor>:<puerto>

Opciones para evadir Firewall e IDS

Nmap ofrece varias opciones para evadir cortafuegos e IDS:

  • Fragmentar paquetes: -f
  • Utilizar MTU especificado: --mtu
  • Esconder sondeo con señuelos: -D <señuelo1[,señuelo2][,ME]>
  • Falsificar dirección de origen: -S <Dirección_IP>
  • Utilizar interfaz especificada: -e <interfaz>
  • Falsificar puerto de origen: --source-port <número_de_puerto> o -g <número_de_puerto>
  • Añadir datos aleatorios: --data-length <número>
  • Indicar tiempo de vida de cabecera IP: --ttl <valor>
  • Mezclar lista de equipos a sondear: --randomize-hosts
  • Falsificar dirección MAC: --spoof-mac <dirección MAC, prefijo o nombre del fabricante>
  • Enviar paquetes con sumas de comprobación erróneas: --badsum

Estos métodos permiten realizar escaneos más discretos y evadir algunas medidas de seguridad.

Ejemplos:

Escanear un equipo

nmap 192.168.1.123
nmap equipol.destino.com

Escanear varios equipos

nmap 192.168.1.123 192.168.1.124
nmap equipol.destino.com equipo2.destino.com

Escanear las primeras diez direcciones IP

nmap 192.168.1.1-10

Obtener el sistema operativo del equipo

nmap -O unidadlocal.com

Obtener el sistema operativo de los equipos de la red

nmap -O 192.168.1.0/24

Obtener el sistema operativo y versión de los servicios

nmap -A unidadlocal.com

Escanear de forma rápida (-T4) y mostrar versión de servicios y tipo de sistema operativo (-A)

nmap -A -T4 192.168.1.123

Escanear todos los puertos TCP reservados (-v activa el modo detallado – verbose)

nmap -v equipol.destino.com

Escanear de forma sigilosa tipo SYN (-sS) en una clase C de red

nmap -sS -O equipol.destino.com/24

Escanear un rango de puertos (1 al 65535)

nmap -sS -A -p 1-65535 192.168.1.123

Escanear puertos UDP (-sU) conocidos (opción por defecto)

nmap -su -A 192.168.1.123

Escaneo haciendo ping (-sP)

nmap -sP 192.168.1.0/24

Enumerar equipos y hacer sondeo TCP a la primera mitad de subredes de clase B

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
nmap -sV -p 135,139,445,80 10.10.0-255.1-127

Usar señuelos de direcciones IP durante el escaneo (-D)

nmap -sS 192.168.1.123 -D 192.168.1.15,192.168.1.16,192.168.1.17

Stealth Xmas Tree scan (-sX) con señuelos (-D)

nmap -p 25,53 -sX -PO -D 192.168.1.15,192.168.1.16 192.168.1.123

Guardar los resultados del escaneo

nmap -sX -oN archivo_reporte.txt 192.168.1.123

Bounce Attack

nmap -b 192.168.1.123

Escaneo suave con fragmentación (-f)

nmap -sF -f -p 21,23,110,143 192.168.1.123

Listar servidores con un puerto específico abierto

nmap -sT -p 80 -oG - 192.168.1.* | grep open

Encontrar IP no usadas en una subred

nmap -T4 -sP 192.168.2.0/24 && egrep "00:00:00:00:00:00" /proc/net/arp

Escanear red en busca de AP falsos

nmap -A -p1-85,113,443,8080-8100 -T4 --min-hostgroup 50 --max-rtt-timeout 2000 --initial-rtt-timeout 300 --max-retries 3 --host-timeout 20m --max-scan-delay 1000 -oA wapscan 10.0.0.0/8

Suplantar una dirección IP durante el escaneo

nmap -e <interfaz> -S <IP a suplantar> -PN <IP objetivo>

Listar los registros DNS inversos de una subred

nmap -R -sL 209.85.229.99/27 | awk '{if($3=="not")print"("$2") no PTR";else print$3" is "$2}' | grep ' ('

Análisis de datos

Ejemplo de análisis de datos

La máquina destino tiene la IP 192.168.20.159, es un XP con XAMPP activo (FTP, Apache y MySQL), el equipo utiliza el firewall de XP.

Hacemos ping y no obtenemos respuesta:

root@laptopHP2:~# ping 192.168.20.159
PING 192.168.20.159 (192.168.20.159) 56(84) bytes of data.
"C 192.168.20.159 ping statistics ---
188 packets transmitted, 0 received, 100% packet loss, time 188282ms

Escaneo con nmap para verificar si el host está activo:

root@laptopHP2:~# nmap -sP 192.168.20.159
Starting Nmap 5.00 ( http://nmap.org ) at 2013-10-31 18:36 CST
Host 192.168.20.159 is up (0.00049s latency).
MAC Address: 04:21:00:21:AC:4E (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Para obtener la versión de los servicios activos:

root@laptopHP2:~# nmap -sV 192.168.20.159
Starting Nmap 5.00 ( http://nmap.org ) at 2013-10-31 18:42 CST
Interesting ports on 192.168.20.159:
Not shown: 996 filtered ports
PORT    STATE SERVICE VERSION
21/tcp  open  ftp     FileZilla ftpd 0.9.41 beta
80/tcp  open  http    Apache httpd 2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
443/tcp open  ssl/http Apache httpd 2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
3306/tcp open mysql   MySQL (unauthorized)
MAC Address: 04:21:00:21:AC:4E (Unknown)
Service Info: OS: Windows
Service detection performed. Please report any incorrect results at http://nmap.org/submit/
Nmap done: 1 IP address (1 host up) scanned in 17.35 seconds

Para los sistemas Windows y Linux, utilice los siguientes comandos:

Windows

  • Comprobar servicios activos: netstat -ano
  • Ver procesos con el PID: tasklist
  • Detener un proceso por PID: taskkill /PID Número
  • Forzar cierre de un proceso: taskkill /F /PID Número

Linux

  • Verificar servicios activos: netstat -tuln
  • Ver procesos: ps auxw
  • Eliminar un proceso por nombre: killall apache2
  • Eliminar un proceso por PID: kill -9 Número

Para escanear y obtener información detallada del sistema operativo:

root@laptopHP2:~# nmap -O 192.168.20.159
Starting Nmap 5.00 ( http://nmap.org ) at 2013-10-31 16:52 CST
Interesting ports on 192.168.20.159:
Not shown: 997 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https
3306/tcp open mysql
MAC Address: 04:21:00:21:AC:4E (Unknown)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2003/2000/XP (97%)
Aggressive OS guesses: Microsoft Windows Server 2003 SP1 or SP2 (97%), Microsoft Windows Server 2003 SP2 (97%), Microsoft Windows 2000 SP0 (96%), Microsoft Windows XP (96%), Microsoft Windows XP SP2 (95%), Microsoft Windows 2000 SP4 (94%), Microsoft Windows XP SP2 or SP3 (93%), Microsoft Windows 2000 SP4 or Windows XP SP2 or SP3 (93%), Microsoft Windows XP SP3 (92%), Microsoft Windows 2003 Small Business Server (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at http://nmap.org/submit/
Nmap done: 1 IP address (1 host up) scanned in

 10.03 seconds

Obtener detalles de servicios y sistema operativo:

root@laptopHP2:~# nmap -A 192.168.20.159
Starting Nmap 5.00 ( http://nmap.org ) at 2013-10-31 16:53 CST
Interesting ports on 192.168.20.159:
Not shown: 997 filtered ports
PORT    STATE SERVICE VERSION
80/tcp  open  http    Apache httpd 2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
443/tcp open  ssl/http Apache httpd 2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7
3306/tcp open  mysql   MySQL (unauthorized)
MAC Address: 04:21:00:21:AC:4E (Unknown)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2003/2000/XP (97%)
Aggressive OS guesses: Microsoft Windows Server 2003 SP1 or SP2 (97%), Microsoft Windows Server 2003 SP2 (97%), Microsoft Windows 2000 SP0 (96%), Microsoft Windows XP (96%), Microsoft Windows XP SP2 (95%), Microsoft Windows 2000 SP4 (94%), Microsoft Windows XP SP2 or SP3 (93%), Microsoft Windows 2000 SP4 or Windows XP SP2 or SP3 (93%), Microsoft Windows XP SP3 (92%), Microsoft Windows 2003 Small Business Server (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/
Nmap done: 1 IP address (1 host up) scanned in 22.26 seconds

Escaneo de varias IPs:

root@laptopHP2:~# nmap 192.168.20.6-10
Starting Nmap 5.00 ( http://nmap.org ) at 2013-10-31 17:20 CST
Interesting ports on 192.168.20.6:
Not shown: 999 filtered ports
PORT    STATE SERVICE
135/tcp open  msrpc
MAC Address: 00:1E:0B:61:20:32 (Hewlett Packard)
Interesting ports on 192.168.20.7:
Not shown: 999 filtered ports
PORT    STATE SERVICE
135/tcp open  msrpc
MAC Address: 00:1E:0B:26:CC:D0 (Hewlett Packard)
Interesting ports on 192.168.20.8:
Not shown: 999 filtered ports
PORT    STATE SERVICE
135/tcp open  msrpc
MAC Address: 00:19:21:50:27:CA (Elitegroup Computer System Co.)
Interesting ports on 192.168.20.10:
Not shown: 999 filtered ports
PORT    STATE SERVICE
3389/tcp open  ms-term-serv
MAC Address: 00:19:21:3F:F6:03 (Elitegroup Computer System Co.)
Nmap done: 5 IP addresses (4 hosts up) scanned in 23.62 seconds

Note que no hay respuesta de la dirección 192.168.20.9 (este escaneo puede ser detectado por un IDS).

En conclusión, Nmap es una herramienta poderosa y versátil para el escaneo de redes y la detección de servicios, crucial para administradores de sistemas y profesionales de la seguridad. Su amplia gama de opciones y comandos permite realizar desde escaneos básicos hasta análisis complejos, proporcionando información detallada sobre los dispositivos y servicios en una red. Dominar su uso es esencial para mantener la seguridad y eficiencia en la gestión de infraestructuras de TI.