Cómo usar Nmap, comandos y capturas: texto de EsGeeks sobre la salida de un escaneo de Nmap en la terminal

Cómo usar Nmap: instalación, comandos y cómo leer los resultados

Nmap (Network Mapper) es un escáner de red gratuito y de código abierto. Le preguntas por una dirección IP, un dominio o una red entera, y te responde qué equipos están encendidos, qué puertos tienen abiertos, qué servicios escuchan en ellos y, con suerte, qué sistema operativo usan.

¿Y eso para qué te sirve a ti? Para saber qué hay en tu propia red y qué deja expuesto.

Con Nmap puedes ver qué dispositivos están conectados a tu wifi, qué puertos tiene abiertos tu computadora o tu router y qué versión de cada servicio responde. Es revisar tu propia casa antes de que la revise otro: si un puerto que no conoces está abierto, mejor enterarte tú primero.

Para obtener esa información, Nmap puede enviar paquetes IP «crudos» (raw) construidos a medida o usar las conexiones normales del sistema operativo, según el tipo de escaneo, y analiza las respuestas.

Los administradores de sistemas lo usan a diario para hacer inventario de sus redes, planificar actualizaciones de servicios y vigilar que los equipos sigan activos. En las auditorías de seguridad y en las pruebas de penetración es casi siempre el primer paso. Más allá de enumerar puertos, con sus scripts también sirve como detector de vulnerabilidades.

Escanea solo redes y equipos que sean tuyos o para los que tengas permiso por escrito.

Para practicar sin meterte en problemas, el propio proyecto Nmap ofrece scanme.nmap.org, un servidor que puedes escanear con Nmap. Unos pocos escaneos al día están bien; cien al día, no. Y está prohibido usarlo para probar ataques de fuerza bruta contra SSH.

También puedes practicar contra tu propio equipo con 127.0.0.1.

Vas a instalar Nmap en tu sistema, hacer tu primer escaneo, entender lo que ves y quedarte con una chuleta de los comandos de Nmap que de verdad vas a usar.

Todas las salidas que verás vienen de nuestro laboratorio: Kali Linux y Ubuntu en máquinas virtuales, más scanme.nmap.org.

Cómo funciona Nmap: envía sondas a un equipo y deduce puertos, servicios y sistema operativo
Nmap envía sondas, analiza las respuestas y deduce qué hay en cada equipo.
Tabla de Contenido

Cómo instalar Nmap en Linux, Windows, macOS y Android

Nmap funciona en Linux, Windows, macOS y Android. Tiene interfaz de línea de comandos y una interfaz gráfica, Zenmap; las dos hacen el mismo trabajo.

La forma de instalarlo cambia según el sistema. Siempre que puedas, descárgalo de la web oficial, nmap.org, y no de portales de descargas.

Kali Linux, Parrot y otras distribuciones Linux

En Kali Linux y Parrot Security, Nmap viene preinstalado. En Debian, Ubuntu y derivadas se instala desde el repositorio:

sudo apt update
sudo apt install nmap

Comprueba que quedó instalado y qué versión tienes:

nmap --version

Cada versión nueva trae funciones y correcciones, así que conviene saber cuál tienes. nmap -V hace lo mismo que nmap --version. Ojo: -v (minúscula) no muestra la versión; aumenta el nivel de detalle de la salida durante un escaneo.

Esto es lo que nos devolvió en Kali:

Nmap version 7.99 ( https://nmap.org )
Platform: aarch64-unknown-linux-gnu
Compiled with: liblua-5.4.8 openssl-3.6.3 libssh2-1.11.1 libz-1.3.1 libpcre2-10.46 libpcap-1.10.6 nmap-libdnet-1.18.0 ipv6
Compiled without:
Available nsock engines: epoll poll select
Salida de nmap --version en Kali Linux con la versión 7.99
Salida de nmap –version en Kali: versión, plataforma y librerías.

La versión del repositorio de tu distribución puede ir por detrás de la última publicada. Para aprender da igual; los comandos de esta guía funcionan en cualquier versión reciente.

En Fedora, RHEL y derivadas, Nmap está en el repositorio de la distribución:

sudo dnf install nmap

Si quieres la última, la página de descargas de nmap.org publica los paquetes RPM oficiales, que se instalan con sudo rpm -vhU seguido de la dirección de cada paquete.

Un detalle de Kali. En nuestro laboratorio trabajamos en Kali con un usuario normal, no como root, y aun así los escaneos que en otras distribuciones exigen sudo (el SYN y la detección de sistema operativo) funcionaron sin él.

Lo comprobamos así: en nuestro Kali, el comando nmap es un pequeño script que llama al programa real con la opción --privileged:

$ cat $(which nmap)
#!/usr/bin/env sh
set -e
if [ "$(id -u)" -eq 0 ] || [ "$1" = "--resume" ]; then
  exec /usr/lib/nmap/nmap "$@"
else
  exec /usr/lib/nmap/nmap --privileged "$@"
fi

Y ese programa real tiene permisos especiales de red asignados:

$ getcap /usr/lib/nmap/nmap
/usr/lib/nmap/nmap cap_net_bind_service,cap_net_admin,cap_net_raw=eip

En Ubuntu, Debian y la mayoría de distribuciones no pasa: ahí sí necesitas sudo para esos escaneos. Por eso en esta guía los escribimos con sudo delante; si tu Kali está configurado como el nuestro, puedes quitarlo.

Nmap en Windows

  1. Descarga el instalador oficial (nmap-7.991-setup.exe) desde nmap.org/download.html.
  2. Ejecútalo y deja marcadas las opciones por defecto. El instalador incluye Npcap (el controlador que permite a Nmap enviar y capturar paquetes) y Zenmap (la interfaz gráfica), y añade Nmap al PATH.
  3. Abre una terminal nueva (Símbolo del sistema o PowerShell) y comprueba:
nmap --version

Si ves el número de versión, ya está: puedes usar Nmap desde cualquier carpeta.

No te saltes Npcap: según la guía oficial de instalación para Windows, sin él algunas funciones de Nmap y Nping no están disponibles. Nmap es compatible con Windows 7 y posteriores, y con Windows Server 2008 y posteriores.

Para los escaneos que necesitan privilegios (el SYN por defecto, la detección de sistema operativo), abre la terminal con clic derecho > Ejecutar como administrador.

Instalador oficial de Nmap en Windows con Npcap y Zenmap marcados
Deja las opciones por defecto: Npcap y Zenmap vienen incluidos.

Nmap en Mac (macOS)

En macOS tienes dos caminos:

  • El instalador oficial. Descarga la imagen de disco (nmap-7.991.dmg) desde la página de descargas de nmap.org, ábrela y sigue el asistente. Si macOS lo bloquea por venir de un desarrollador no identificado, ve a Ajustes del Sistema > Privacidad y seguridad y pulsa «Abrir igualmente».
  • Homebrew. Si ya lo usas, la fórmula nmap está disponible y ofrece la misma versión estable:
brew info nmap
brew install nmap

En nuestro Mac, brew info nmap mostró stable 7.991 (bottled) e indicó que la instalación arrastra seis dependencias, entre ellas Python 3.

Salida de brew info nmap en la Terminal de macOS con la versión estable 7.991
Homebrew ofrece la misma versión estable que nmap.org.

Al terminar, abre Terminal y comprueba con nmap --version.

Nmap en Android con Termux

En Android, Nmap se instala dentro de Termux, la terminal de Linux para el celular. Si todavía no la tienes, empieza por nuestra guía de Termux: instalación y comandos.

Dentro de Termux, actualiza los repositorios e instala el paquete:

pkg update && pkg upgrade
pkg install nmap

El repositorio de Termux ya tiene la versión 7.991. El paquete se compila sin Zenmap ni ndiff, así que en el celular trabajarás solo con la línea de comandos.

Sin root, Android no deja a Nmap enviar paquetes fabricados a medida. En la práctica:

  • Nmap usa el escaneo connect (-sT) en lugar del SYN.
  • La detección de sistema operativo (-O) no funciona, porque necesita privilegios.
  • El descubrimiento de equipos (-sn) solo prueba los puertos 80 y 443, así que algunos dispositivos de tu red pueden no aparecer.

Para descubrir equipos y ver puertos abiertos en tu red de casa, es suficiente. Usa nmap -sT y no pierdas tiempo con -sS u -O.

«nmap no se reconoce como un comando interno o externo»: cómo arreglarlo

Es un error habitual al empezar en Windows. Si instalaste Nmap y la terminal te responde con ese mensaje, Windows no encuentra el programa. Revisa esto en orden:

  1. Abre una terminal nueva. Una ventana de Símbolo del sistema o PowerShell que ya estaba abierta antes de instalar no ve los cambios del PATH. Ciérrala y abre otra.
  2. Confirma que Nmap se instaló. Busca la carpeta de instalación. La ruta por defecto es C:\Program Files (x86)\Nmap. Si no existe, la instalación falló o elegiste otra carpeta.
  3. En Símbolo del sistema (CMD), entra a la carpeta y ejecútalo desde ahí. Es la solución que propone la propia documentación cuando Nmap no está en el PATH:
cd "C:\Program Files (x86)\Nmap"
nmap --version
  1. Añade la carpeta al PATH para no tener que entrar cada vez. Busca «variables de entorno» en el menú Inicio, abre «Editar las variables de entorno del sistema», pulsa «Variables de entorno», selecciona Path, pulsa «Editar» > «Nuevo» y agrega C:\Program Files (x86)\Nmap (o la carpeta donde lo instalaste). Acepta todo y abre una terminal nueva.

Si después de esto nmap --version responde, ya está.

Ventana Editar variable de entorno de Windows con la carpeta de Nmap añadida a Path
Con la carpeta de Nmap en el PATH, el comando funciona desde cualquier terminal.

Cómo usar Nmap: tu primer escaneo y cómo leer el resultado

Empieza por lo más simple: Nmap y un objetivo, sin opciones.

nmap scanme.nmap.org

Sin opciones, Nmap hace esto:

  • Comprueba que el equipo está encendido.
  • Escanea los 1.000 puertos TCP más comunes (no los 65.535).
  • Usa un escaneo SYN (-sS) si tienes privilegios (root en Linux, administrador en Windows) o un escaneo connect (-sT) si no los tienes; la diferencia la explicamos en «SYN o connect».

El escaneo devolvió esto:

Starting Nmap 7.99 ( https://nmap.org ) at 2026-10-08 14:26 -0500
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.21s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
Not shown: 997 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
9929/tcp open  nping-echo

Nmap done: 1 IP address (1 host up) scanned in 2.61 seconds
Primer escaneo de Nmap contra scanme.nmap.org con los puertos 22, 80 y 9929 abiertos
Escaneo por defecto contra scanme.nmap.org desde Kali.

Se lee así: el equipo está encendido («Host is up»), 997 de los 1.000 puertos revisados están cerrados y no se muestran, y quedan tres abiertos: el 22 (SSH), el 80 (web) y el 9929.

Si quieres practicar contra tu propia computadora, cambia el objetivo por 127.0.0.1:

nmap 127.0.0.1

Qué es un número de puerto

Igual que cada computadora tiene una dirección IP diferente, cada servicio que corre en ella usa un número de puerto diferente.

En este momento estás conectado a nuestro blog por el puerto 443, el de https; http usa el 80.

Hay un total de 65.535 puertos, y al escanear con Nmap verás el estado de los puertos examinados y el nombre del servicio que se suele asociar a cada número.

Qué significa cada estado de puerto

Lo importante de la salida es la tabla de puertos, que Nmap llama «tabla de puertos interesantes»: número y protocolo (22/tcp), estado y nombre del servicio que suele usar ese puerto. El estado es lo que tienes que aprender a leer:

EstadoQué significa
open (abierto)Hay una aplicación escuchando conexiones o paquetes en ese puerto. Es lo que más te interesa revisar.
closed (cerrado)El puerto responde, pero no hay ninguna aplicación escuchando. Podría abrirse en cualquier momento.
filtered (filtrado)Un cortafuegos, un filtro o algún obstáculo de la red bloquea las sondas, así que Nmap no puede saber si está abierto o cerrado.
unfiltered (no filtrado)El puerto responde a las sondas, pero Nmap no puede determinar si está abierto o cerrado. Solo aparece con el escaneo ACK.
open|filteredNmap no logra decidir si está abierto o filtrado. Es habitual en escaneos UDP, donde un puerto abierto a menudo no contesta.
closed|filteredNmap no logra decidir si está cerrado o filtrado. Solo aparece con un tipo de escaneo muy específico (idle scan).

En el día a día verás sobre todo los tres primeros. Si un puerto que no esperabas aparece como open en tu equipo, averigua qué programa lo abrió.

Un puerto abierto no es una vulnerabilidad por sí mismo: es una puerta, y lo que importa es qué hay detrás, si debería estar ahí y si está actualizado.

Lo que te muestra el escaneo también le sirve a un atacante que esté en tu red local: podría buscar fallos en esos servicios para tomar el control del equipo.

Si prefieres verlo desde dentro de tu computadora, sin escanear, tenemos una guía para ver los puertos abiertos en Windows.

Ojo también con la columna SERVICE: muestra el nombre que se suele asociar a ese número de puerto, no lo que de verdad corre ahí. En nuestro laboratorio, el puerto 3001 de una máquina Ubuntu apareció como nessus, y lo que escuchaba era Grafana. Para saber qué programa responde, usa -sV.

Si quieres que Nmap te explique por qué asignó cada estado, añade --reason:

nmap --reason scanme.nmap.org

Escanear la red con Nmap: qué dispositivos hay conectados

Antes de escanear tu red necesitas saber cuál es. Tu red es un rango de direcciones, y lo deduces de tu propia IP.

Una dirección IP (de Internet Protocol, Protocolo de Internet) es el conjunto de números que identifica a cada dispositivo conectado a una red: una computadora, una tableta, un celular o un aparato inteligente del hogar.

Paso 1: averigua tu IP y tu rango

  • Linux: ip a muestra tus direcciones; ip route muestra la puerta de enlace (la IP del router).
  • Windows: ipconfig, y busca «Dirección IPv4» y «Puerta de enlace predeterminada».
  • macOS: Ajustes del Sistema > Red > tu conexión > Detalles.
  • Android: Ajustes > Wi-Fi > toca tu red > detalles de la red.

En Kali, ip route devolvió esto:

default via 10.211.55.1 dev eth0 proto dhcp src 10.211.55.6 metric 100
10.211.55.0/24 dev eth0 proto kernel scope link src 10.211.55.6 metric 100
Salida de ip a e ip route en Kali Linux con la puerta de enlace y la red 10.211.55.0/24
ip route muestra la puerta de enlace y el rango de la red.

La primera línea dice que el router (la puerta de enlace) es 10.211.55.1; la segunda, que la red es 10.211.55.0/24 y que nuestra IP es 10.211.55.6.

En una red doméstica típica verás algo como 192.168.1.34 con el router en 192.168.1.1: en ese caso, tu red es 192.168.1.0/24. El /24 significa «las 256 direcciones que van de 192.168.1.0 a 192.168.1.255». Si la máscara te genera dudas, IPCalc calcula la red a la que pertenece tu equipo.

Paso 2: descubre los equipos con -sn

sudo nmap -sn 192.168.1.0/24

-sn solo descubre equipos: Nmap te dice qué direcciones responden, sin revisar sus puertos. Es rápido, poco invasivo y el mejor primer paso en cualquier red.

(Quizá lo veas escrito como -sP en guías antiguas: es el nombre viejo de la misma opción. Usa -sn.) También puedes escribir el rango con guion, por ejemplo 192.168.1.1-254.

Escaneo de la red con Nmap -sn: peticiones ARP a cada dirección y respuesta de los equipos encendidos
En tu red local, -sn pregunta por ARP y solo responden los equipos encendidos.

Con sudo y en tu propia red local, Nmap usa peticiones ARP y puede mostrar la dirección MAC de los equipos detectados. El comando de arriba usa 192.168.1.0/24 como ejemplo; en nuestro laboratorio escaneamos 10.211.55.0/24, y así quedó, en 2,5 segundos:

Nmap scan report for prl-local-ns-server.shared (10.211.55.1)
Host is up (0.00037s latency).
MAC Address: 00:1C:42:00:00:18 (Parallels)
Nmap scan report for 10.211.55.2
Host is up (0.00025s latency).
MAC Address: FA:4D:89:26:12:64 (Unknown)
Nmap scan report for ubuntu-24.04-arm64.shared (10.211.55.5)
Host is up (0.00077s latency).
MAC Address: 00:1C:42:16:20:E7 (Parallels)
Nmap scan report for kali-linux-2025.2-arm64.shared (10.211.55.6)
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.51 seconds
Escaneo de la red con Nmap y -sn: cuatro equipos con su dirección MAC y fabricante
sudo nmap -sn sobre la red 10.211.55.0/24 del laboratorio.

La MAC revela el fabricante

Los tres primeros bytes de la MAC identifican a la empresa que fabricó la tarjeta de red; Nmap muestra ese fabricante entre paréntesis.

Así distingues rápido el televisor, el celular o la impresora. Eso sí, es el fabricante de la tarjeta, no necesariamente el del aparato: en la salida de arriba, las máquinas virtuales aparecen como «Parallels».

Nmap no siempre consigue el fabricante. Fíjate en la 10.211.55.2: es nuestro Mac, y sale como «Unknown». Su MAC empieza por FA, que corresponde a una dirección MAC privada o aleatoria; los sistemas modernos la usan para que no se pueda rastrear el dispositivo entre redes.

Tampoco verás la MAC de equipos que estén detrás de otro router: solo la de los de tu mismo segmento de red.

En Linux y macOS, filtra la salida y deja solo una línea por equipo, con su IP y su nombre si Nmap lo obtuvo:

sudo nmap -sn 192.168.1.0/24 | grep "Nmap scan report for"

Resultado:

Nmap scan report for prl-local-ns-server.shared (10.211.55.1)
Nmap scan report for 10.211.55.2
Nmap scan report for ubuntu-24.04-arm64.shared (10.211.55.5)
Nmap scan report for kali-linux-2025.2-arm64.shared (10.211.55.6)
Salida de nmap -sn filtrada con grep: una línea por equipo descubierto
grep deja solo una línea por equipo.

En Windows, el equivalente es findstr:

nmap -sn 192.168.1.0/24 | findstr /C:"Nmap scan report for"

Uso defensivo: el equipo que no reconoces

Este es el escaneo que más vale la pena repetir de vez en cuando. Haz la lista, identifica cada dispositivo y, si aparece uno que no reconoces, investiga: cambia la contraseña del wifi si hace falta.

Para vigilar la red de forma continua, mira NetAlertX, un detector de intrusos para wifi y LAN.

Escanear puertos con Nmap: -p, -sS, -sT, -sU y -Pn

Una vez que sabes qué equipos hay, toca ver qué puertos tiene abiertos cada uno. Estas son las opciones que vas a usar casi siempre.

Elegir qué puertos escanear: -p, -p-, -F y --top-ports

ComandoQué hace
nmap -p 22 scanme.nmap.orgUn solo puerto: la forma más rápida de saber si un puerto concreto está abierto.
nmap -p 22,80,443 scanme.nmap.orgUna lista de puertos.
nmap -p 1-1024 scanme.nmap.orgUn rango. A más puertos, menos velocidad.
nmap -p- 127.0.0.1Todos los puertos, del 1 al 65.535. Tarda bastante más.
nmap -F scanme.nmap.orgModo rápido: solo los 100 puertos más comunes en lugar de 1.000.
nmap --top-ports 200 scanme.nmap.orgLos N puertos más comunes, el número que tú elijas.

Si solo quieres ver los puertos abiertos y no la lista de cerrados y filtrados, añade --open.

SYN o connect: -sS frente a -sT

  • -sS (SYN): envía el primer paquete de la conexión TCP y, según la respuesta, sabe si el puerto está abierto sin completar la conexión. Es rápido y es el que Nmap usa por defecto si tienes privilegios. Necesita root o administrador.
  • -sT (connect): completa la conexión usando el sistema operativo, como haría cualquier programa. No necesita privilegios, por eso es el que Nmap usa cuando no los tienes (y el que te tocará en Termux sin root). Es más lento y deja más rastro en los registros del equipo escaneado.
sudo nmap -sS scanme.nmap.org
nmap -sT scanme.nmap.org
Diferencia entre el escaneo SYN (-sS) y el connect (-sT) de Nmap en el intercambio de paquetes TCP
El SYN no completa la conexión; el connect sí, y por eso deja más rastro.

Si el equipo tiene un cortafuegos, es normal que muchos de sus puertos salgan filtrados y no se pueda determinar si están abiertos.

Puertos UDP: -sU

Muchos servicios importantes usan UDP en lugar de TCP: DNS (53), DHCP (67), SNMP (161). Nmap no los revisa por defecto. Para escanearlos:

sudo nmap -sU -p 53,67,161 192.168.1.1

El escaneo UDP es lento: los puertos abiertos muchas veces no contestan y Nmap tiene que esperar y reintentar, por eso suele devolver muchos open|filtered. Limita los puertos con -p o --top-ports en lugar de lanzarlo contra los 65.535. Necesita privilegios.

Cuando el equipo «no responde»: -Pn

Antes de escanear puertos, Nmap comprueba si el equipo está encendido. Muchos equipos, sobre todo los Windows con su cortafuegos activo, no responden a esas sondas: Nmap los da por apagados y no escanea nada. -Pn se salta esa comprobación y escanea los puertos de todas formas:

nmap -Pn 192.168.1.10

Úsalo contra equipos concretos que sabes que están encendidos. Contra una red entera, -Pn hace que Nmap escanee los puertos de cada dirección, aunque esté vacía, y el escaneo se alarga muchísimo.

Detectar servicios y sistema operativo con Nmap

Saber que el puerto 22 está abierto es útil. Saber que ahí responde un servidor SSH concreto en una versión concreta es mucho más útil.

Versión de los servicios: -sV

nmap -sV scanme.nmap.org

-sV interroga a cada puerto abierto para averiguar qué programa está escuchando y en qué versión. Es la opción que más información útil te da para revisar tu propia red. Esto devolvió contra scanme:

PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http       Apache httpd 2.4.7 ((Ubuntu))
9929/tcp open  nping-echo Nping echo
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Salida de nmap -sV contra scanme.nmap.org con OpenSSH 6.6.1p1 y Apache 2.4.7
-sV muestra el programa y la versión de cada servicio.

Ahora ya no ves solo «ssh» y «http»: ves OpenSSH 6.6.1p1 y Apache 2.4.7. Son versiones muy antiguas: scanme es un servidor de pruebas del proyecto Nmap. En un equipo tuyo, ese dato es el que te dice qué toca actualizar.

Sistema operativo: -O

sudo nmap -O 192.168.1.10

-O intenta adivinar el sistema operativo comparando cómo responde el equipo a una serie de paquetes TCP/IP con una base de datos de huellas conocidas.

  • Necesita privilegios (root o administrador). Sin ellos, Nmap te avisa y no lo hace. Esto es lo que respondió en Ubuntu sin sudo:
TCP/IP fingerprinting (for OS scan) requires root privileges.
QUITTING!
Error de Nmap en Ubuntu: TCP/IP fingerprinting requires root privileges
Sin sudo, Nmap se niega a detectar el sistema operativo.
  • Es una estimación, no una certeza. Cuando Nmap no encuentra una coincidencia exacta, muestra varias posibilidades, a veces con un porcentaje: cuánto se parece la huella del equipo a cada sistema de la base de datos. Un 90 % no garantiza que sea ese sistema.

La detección funciona mejor cuando el equipo tiene al menos un puerto abierto y otro cerrado.

Contra nuestra máquina Ubuntu 24.04, que usa un kernel de la serie 6, Nmap respondió esto:

Device type: general purpose|router
Running: Linux 4.X|5.X, MikroTik RouterOS 7.X
OS details: Linux 4.15 - 5.19, OpenWrt 21.02 (Linux 5.4), MikroTik RouterOS 7.2 - 7.5 (Linux 5.6.3)
Estimación de sistema operativo de Nmap contra Ubuntu 24.04: Linux 4.15-5.19 y MikroTik
nmap -O contra Ubuntu 24.04 desde Kali.

Acertó que es Linux, pero se quedó corto en la versión y además propuso un router MikroTik.

Y contra el servicio de red de Parallels, la estimación se fue mucho más lejos: «Fortinet FortiGate 200B firewall (93%)» (un cortafuegos de empresa) y «Chamberlain myQ garage door opener (87%)» (un abridor de puertas de garaje).

El propio Nmap avisó: «No exact OS matches for host (test conditions non-ideal)», es decir, no hay coincidencia exacta y las condiciones de la prueba no eran las ideales.

En cambio, con nuestro Mac acertó: dijo «Apple macOS 11-14» aunque su MAC era privada y no revelaba el fabricante.

Si el equipo no responde al ping, combínalo con -Pn, y añade -v para ver los detalles mientras trabaja:

sudo nmap -v -Pn -O 192.168.1.10

Ojo con la mayúscula: es -O (letra o mayúscula). En minúscula, -o no es una opción válida.

Todo junto: -A. Activa de una vez la detección de sistema operativo (-O), la de versiones (-sV), los scripts por defecto (-sC) y el traceroute:

sudo nmap -A scanme.nmap.org

Es cómodo, pero es bastante más lento y llamativo. Úsalo contra un equipo concreto, no contra la red entera con todos los puertos.

Receta: inventario de tu red guardado en archivos

Esta receta junta lo anterior y te deja un inventario de los equipos detectados en tu red, con sus puertos abiertos, su latencia, la MAC cuando Nmap la obtiene y la estimación de sistema operativo cuando la puede hacer:

sudo nmap -sS -O -T3 -oA inventario 192.168.1.0/24
  • -sS: escaneo SYN de los 1.000 puertos más comunes.
  • -O: detección de sistema operativo.
  • -T3: velocidad normal.
  • -oA inventario: guarda el resultado en tres archivos (inventario.nmap, inventario.xml e inventario.gnmap).

En nuestra red de laboratorio, con cuatro equipos, tardó 210 segundos y dejó los tres archivos:

Nmap done: 256 IP addresses (4 hosts up) scanned in 210.18 seconds

$ ls inventario.*
inventario.gnmap  inventario.nmap  inventario.xml
Inventario de red con Nmap guardado en los archivos .nmap, .xml y .gnmap
Un escaneo, tres archivos: el inventario queda guardado.

Guárdalo con la fecha en el nombre y repítelo cada cierto tiempo: comparar dos inventarios es la forma más sencilla de ver qué cambió en tu red.

Scripts NSE: buscar problemas en tus propios equipos

El Nmap Scripting Engine (NSE) es el motor de scripts de Nmap. Los scripts amplían lo que hace el escaneo: sacan más información de un servicio, leen el certificado TLS de un servidor, revisan configuraciones o comprueban si un equipo tiene vulnerabilidades conocidas.

Vienen incluidos con Nmap y están organizados por categorías: auth, broadcast, brute, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version y vuln.

Scripts por defecto: -sC

nmap -sC -sV scanme.nmap.org

-sC ejecuta los scripts de la categoría default; equivale a --script=default. Entre los scripts que pueden ejecutarse, según los puertos y servicios detectados, están http-title (el título de la página web que sirve el equipo) y ssl-cert (los datos de su certificado).

Es el punto de partida sensato, aunque según el manual oficial esta categoría también incluye algún script intrusivo: contra un equipo en producción conviene saber qué lanzas.

Para lanzar un script concreto, elígelo con --script y limita el puerto con -p:

nmap -p 443 --script ssl-cert scanme.nmap.org

En scanme el puerto 443 no salió abierto, así que este ejemplo muestra la sintaxis pero no devolverá un certificado.

Antes de lanzar un script, lee qué hace: --script-help

nmap --script-help vuln

--script-help muestra el nombre, las categorías y la descripción de los scripts que coinciden con lo que le pases (un nombre, una categoría o un patrón) sin ejecutarlos. Úsalo siempre antes de lanzar un script que no conoces. Mira lo que salió en las primeras líneas para la categoría vuln:

afp-path-vuln
Categories: exploit intrusive vuln
https://nmap.org/nsedoc/scripts/afp-path-vuln.html
  Detects the Mac OS X AFP directory traversal vulnerability, CVE-2010-0533.
...
broadcast-avahi-dos
Categories: broadcast dos intrusive vuln
https://nmap.org/nsedoc/scripts/broadcast-avahi-dos.html
Salida de nmap --script-help vuln con las categorías de cada script
Primeras líneas de nmap –script-help vuln.

Dentro de vuln hay scripts que además son exploit, intrusive y hasta dos. Por eso --script vuln no es inofensivo.

Categorías seguras frente a intrusivas

Cada script pertenece a una o varias categorías. Las que más te importan para no meter la pata:

  • safe: scripts diseñados para no tumbar servicios, no consumir mucho ancho de banda y no aprovechar fallos.
  • intrusive: scripts con riesgo de colgar el servicio, generar mucho ruido o ser vistos como un ataque por el administrador del equipo.
  • default: la selección que ejecuta -sC.
  • vuln: comprobación de vulnerabilidades conocidas.

Si quieres ir a lo seguro, puedes limitarte a la categoría safe:

nmap --script safe 127.0.0.1

Categorías como dos, brute o exploit no tienen sitio en una revisión de tu propia red: pueden tumbar servicios o bloquear cuentas.

Buscar vulnerabilidades conocidas en tu equipo: --script vuln

sudo nmap -sV --script vuln 192.168.1.10

La categoría vuln agrupa scripts que comprueban si los servicios tienen vulnerabilidades conocidas. Combinarla con -sV ayuda, porque muchos scripts necesitan saber la versión del servicio. Lánzala solo contra tus propios equipos.

En nuestro laboratorio lanzamos el comando contra nuestra máquina Ubuntu, que tenía SSH y tres servicios web abiertos. Tardó 557 segundos, más de nueve minutos, y el resultado enseña por qué no hay que leerlo al pie de la letra. Empieza así:

22/tcp   open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.19 (Ubuntu Linux; protocol 2.0)
| vulners:
|   cpe:/a:openbsd:openssh:9.6p1:
|       PACKETSTORM:179290      10.0    https://vulners.com/packetstorm/PACKETSTORM:179290       *EXPLOIT*
|       ...
|       CVE-2024-6387   8.1     https://vulners.com/cve/CVE-2024-6387
Scripts NSE de Nmap: vulners lista CVE para OpenSSH 9.6p1 a partir de su versión
Inicio de la salida de vulners para OpenSSH 9.6p1.

El script vulners listó más de cien líneas de CVE y exploits para ese SSH. Asusta, pero el script solo toma el identificador de producto y versión (CPE) que obtuvo -sV y lo busca en la base de vulners.com por internet, según su documentación oficial. No comprobó ninguno contra el equipo.

Ubuntu publica sus actualizaciones de seguridad parcheando fallos concretos en lugar de cambiar la versión entera del programa, como explica su equipo de seguridad. Por eso el paquete sigue diciendo 9.6p1 (con el añadido 3ubuntu13.19) y muchas de esas CVE pueden estar ya corregidas.

En el puerto 3000 apareció esto:

3000/tcp open  http    Golang net/http server
| http-slowloris-check:
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
Script http-slowloris-check de Nmap con el estado LIKELY VULNERABLE en el puerto 3000
Resultado de http-slowloris-check en el puerto 3000 de nuestra máquina Ubuntu.

«LIKELY VULNERABLE» significa «probablemente vulnerable»: es una sospecha del script, no una prueba.

Y en el puerto 3001, donde corre Grafana:

3001/tcp open  http    Grafana http
| http-vuln-cve2010-0738:
|_  /jmx-console/: Authentication was not required
Script http-vuln-cve2010-0738 de Nmap alertando sobre /jmx-console/ en un Grafana
Alerta de http-vuln-cve2010-0738 en el puerto 3001.

Ese script busca un fallo de JBoss, no de Grafana. Para no darlo por bueno ni por malo sin pruebas, pedimos esa misma ruta a mano:

$ curl -s http://10.211.55.5:3001/jmx-console/ | head -5
<a href="/login?redirectTo=%2Fjmx-console%2F">Found</a>.
curl a /jmx-console/ devuelve una redirección al login de Grafana: falso positivo de Nmap
Respuesta de Grafana a la ruta /jmx-console/ pedida con curl.

Grafana responde a esa ruta con una redirección a su pantalla de inicio de sesión: para entrar pide autenticación, al contrario de lo que reportó el script. Es un falso positivo.

Si un script no encuentra nada, normalmente no muestra nada. Que no salga ninguna alerta no significa que el equipo sea invulnerable; solo que los scripts que se ejecutaron no detectaron problemas.

Y que salga una alerta no significa que el problema exista: hay que comprobarla. Nmap no sustituye a un escáner de vulnerabilidades dedicado, pero es una primera revisión muy útil.

Velocidad del escaneo con nmap -T: de -T0 a -T5

Las plantillas de tiempo ajustan de golpe cuánto espera Nmap entre sondas, cuántas lanza en paralelo y cuánto tiempo da por perdida una respuesta.

OpciónNombreCuándo se usa
-T0paranoidExtremadamente lento. No tiene sentido en tu red.
-T1sneakyMuy lento. Tampoco.
-T2politeLento, para no cargar la red ni el equipo escaneado.
-T3normalEl valor por defecto. Si no pones nada, es este.
-T4aggressiveMás rápido. Lo habitual en redes propias, modernas y estables.
-T5insaneEl más rápido, a costa de precisión: puede perder puertos o resultados.

-T3 es el valor por defecto porque equilibra velocidad y fiabilidad en casi cualquier red. En tu red de casa o de la oficina, con cable o un buen wifi, -T4 va bien y ahorra tiempo:

nmap -T4 -F 192.168.1.0/24

-T5 puede dar por cerrados o filtrados puertos que en realidad estaban abiertos, porque no espera lo suficiente. Para revisar tu red, la exactitud vale más que unos segundos.

Guardar los resultados de Nmap: -oN, -oX y -oA

Copiar la salida a mano deja de ser práctico en cuanto escaneas más de un equipo. Nmap guarda los resultados directamente:

OpciónFormatoPara qué
-oN archivo.txtNormalLo mismo que ves en pantalla, para leerlo después.
-oX archivo.xmlXMLPara procesarlo con otros programas o importarlo en herramientas de reporte.
-oA nombreLos tres principalesGenera nombre.nmap, nombre.xml y nombre.gnmap de una vez.

Con -oN agregas la opción y luego el nombre del archivo: la o significa salida (output) y la N, formato normal.

nmap -sV -oN servicios.txt scanme.nmap.org
nmap -sV -oA escaneo-casa 192.168.1.0/24

Quizá veas -oG (formato «grepeable») en guías antiguas. El manual oficial lo marca como obsoleto; si necesitas procesar resultados, usa XML.

¿Y después? Si guardaste dos escaneos en XML, puedes comparar escaneos de Nmap con ndiff para ver qué puertos o equipos aparecieron o desaparecieron.

Para ver los resultados en un panel en lugar de en texto, mira WebMap, un dashboard y reporte para Nmap.

Zenmap, la interfaz gráfica oficial de Nmap

Zenmap no es otro escáner: por debajo ejecuta los mismos comandos de Nmap y te muestra el resultado en ventanas. En Windows viene con el instalador oficial, y también puedes instalarlo en macOS.

Desde Nmap 7.99 (marzo de 2026), Zenmap se distribuye como un paquete universal de Python 3.

En la ventana principal:

  • En Objetivo escribes la IP, el rango o el dominio.
  • En Perfil eliges un tipo de escaneo predefinido: escaneo intenso, escaneo rápido, escaneo regular y otros. Por defecto viene el escaneo intenso, que equivale a nmap -T4 -A -v.
  • En Comando ves el comando exacto de Nmap que se va a ejecutar. Puedes editarlo a mano, y también se actualiza cuando eliges otro perfil.
Zenmap, interfaz gráfica de Nmap, con los campos Objetivo, Perfil y Comando
Zenmap muestra el comando de Nmap que genera cada perfil.

¿Cuándo conviene? Para aprender, si te cuesta la terminal: ves el comando que genera cada perfil y vas entendiendo las opciones.

También ayuda a revisar resultados largos, porque los organiza por equipo, puerto y servicio, y tiene una vista de topología de la red. Para tareas repetidas o automatizadas, la línea de comandos sigue siendo más práctica.

Chuleta de comandos de Nmap

Los comandos de uso diario, agrupados por tarea. Cambia scanme.nmap.org o el rango de ejemplo por tus propios objetivos.

Escaneos básicos y objetivos

ComandoQué hace
nmap --versionMuestra la versión de Nmap instalada.
nmap scanme.nmap.orgEscaneo por defecto: los 1.000 puertos TCP más comunes.
nmap 127.0.0.1Escanea tu propio equipo.
nmap 192.168.1.10 192.168.1.20Escanea varias direcciones.
nmap 192.168.1.0/24Escanea una red entera en notación CIDR.
nmap 192.168.1.1-50Escanea un rango de direcciones.
nmap -iL objetivos.txtLee los objetivos desde un archivo, uno por línea.
nmap 192.168.1.0/24 --exclude 192.168.1.1Escanea la red excepto la dirección indicada.
nmap -v scanme.nmap.orgMuestra más detalle durante el escaneo (-vv para aún más).

Descubrimiento de equipos y puertos

ComandoQué hace
nmap -sn 192.168.1.0/24Descubre qué equipos están encendidos, sin escanear puertos.
nmap -Pn 192.168.1.10Se salta la comprobación de equipo encendido y escanea igual.
nmap -n 192.168.1.0/24No resuelve nombres DNS (va más rápido).
nmap -p 22 scanme.nmap.orgEscanea un puerto.
nmap -p 22,80,443 scanme.nmap.orgEscanea una lista de puertos.
nmap -p 1-1024 scanme.nmap.orgEscanea un rango de puertos.
nmap -p- 127.0.0.1Escanea los 65.535 puertos TCP.
nmap -F scanme.nmap.orgModo rápido: los 100 puertos más comunes.
nmap --top-ports 200 scanme.nmap.orgLos N puertos más comunes.
sudo nmap -sS scanme.nmap.orgEscaneo SYN (necesita privilegios).
nmap -sT scanme.nmap.orgEscaneo connect (sin privilegios).
sudo nmap -sU -p 53,161 192.168.1.1Escaneo UDP de puertos concretos.
nmap --open scanme.nmap.orgMuestra solo los puertos abiertos.
nmap --reason scanme.nmap.orgExplica por qué cada puerto tiene su estado.
nmap -T4 scanme.nmap.orgPlantilla de tiempo rápida, para redes propias.

Servicios, sistema operativo, scripts y salida

ComandoQué hace
nmap -sV scanme.nmap.orgDetecta el programa y la versión de cada servicio.
sudo nmap -O 192.168.1.10Estima el sistema operativo (necesita privilegios).
sudo nmap -A scanme.nmap.orgSistema operativo, versiones, scripts por defecto y traceroute.
nmap -sC scanme.nmap.orgEjecuta los scripts NSE por defecto.
nmap -sV --script vuln 127.0.0.1Busca vulnerabilidades conocidas en tu equipo.
nmap --script safe 127.0.0.1Ejecuta solo scripts de la categoría segura.
nmap --script-help vulnDescribe los scripts sin ejecutarlos.
nmap -oN resultado.txt scanme.nmap.orgGuarda en formato normal.
nmap -oX resultado.xml scanme.nmap.orgGuarda en XML.
nmap -oA resultado scanme.nmap.orgGuarda en .nmap, .xml y .gnmap a la vez.

Problemas frecuentes con Nmap y cómo resolverlos

Antes de nada: si Windows dice «nmap no se reconoce como un comando interno o externo», es que no encuentra Nmap. Abre una terminal nueva, confirma que la carpeta de instalación existe y añádela al PATH. Los pasos completos están en la sección de ese error.

Todos los puertos salen «filtered» o «All 1000 scanned ports … are in ignored states»

Nmap clasifica los puertos como filtrados porque no recibe respuesta, pero esa salida no dice por sí sola qué descarta las sondas. Puede tratarse de un cortafuegos (el de Windows, el del router o el del propio equipo) o de otro filtro u obstáculo de la red.

Nos apareció en el laboratorio, al escanear la propia máquina Kali dentro del inventario:

All 1000 scanned ports on kali-linux-2025.2-arm64.shared (10.211.55.6) are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)

Prueba esto:

  • Si Nmap dice que el equipo parece apagado («Host seems down»), repite con -Pn.
  • Escanea un puerto que sabes que está abierto (-p 80, por ejemplo) para confirmar que llegas al equipo.
  • Si el objetivo es tuyo, revisa las reglas de su cortafuegos.

Si esas reglas bloquean el escaneo a propósito, es buena señal: el cortafuegos está haciendo su trabajo.

El escaneo tarda una eternidad

Las causas típicas:

  • Combinar -A con -p- contra una red entera. Escanea primero con -sn, luego los puertos comunes, y deja -A y -p- para equipos concretos.
  • Lanzar --script vuln contra un equipo con varios servicios web: en nuestro laboratorio tardó más de nueve minutos con solo cuatro puertos abiertos.
  • Escanear UDP sin limitar los puertos. Usa -p o --top-ports.
  • Usar -Pn contra un rango: Nmap escanea cada dirección, aunque no haya nada.
  • Una plantilla de tiempo lenta (-T0 a -T2). En tu red, prueba -T4.
  • Estar conectado a una VPN: el tráfico pasa por el túnel y todo va más lento. Desde Nmap 7.99, el escaneo ya funciona sobre adaptadores VPN virtuales en Windows, pero la VPN sigue añadiendo latencia.

Mientras el escaneo corre, pulsa cualquier tecla (por ejemplo, la barra espaciadora) y Nmap te muestra cuánto lleva y cuánto le falta:

Stats: 0:07:23 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan
NSE Timing: About 98.91% done; ETC: 14:47 (0:00:04 remaining)

«requires root privileges» o «you are not root»

Pediste algo que necesita privilegios: un escaneo SYN (-sS), UDP (-sU) o la detección de sistema operativo (-O).

  • Linux y macOS: antepón sudo al comando.
  • Windows: abre la terminal como administrador y comprueba que Npcap está instalado (viene con el instalador oficial).

Si no puedes conseguir privilegios, usa -sT para los puertos TCP y renuncia a -O.

Preguntas frecuentes sobre Nmap

¿Nmap es gratis?

Sí. Nmap es gratuito y de código abierto en todas sus plataformas, igual que Zenmap. Se descarga desde nmap.org.

Sí, en tus propios equipos y redes o en los que tienes permiso para revisar: es lo que hacen a diario administradores de sistemas y equipos de seguridad.
Escanear equipos ajenos sin autorización puede violar las condiciones de tu proveedor de internet y, según el país, la ley. Para practicar, usa scanme.nmap.org o 127.0.0.1.

Cuando Nmap se te queda corto: RustScan, Masscan y alternativas

Nmap es preciso y versátil, pero no es el más rápido si tienes que barrer miles de equipos o los 65.535 puertos de muchos servidores.

Para eso hay herramientas que se dedican solo a encontrar puertos abiertos a toda velocidad. RustScan localiza los puertos abiertos en segundos y luego le pasa el trabajo fino a Nmap, así que no tienes que elegir entre uno y otro.

Masscan va un paso más allá en velocidad bruta, pensado para rangos enormes.

Y si lo que buscas es otra forma de trabajar (una interfaz distinta, un enfoque más visual o una herramienta más específica), en nuestra lista de alternativas a Nmap para escanear la red encontrarás opciones.

Lo importante es el hábito: descubrir los equipos de tu red, revisar sus puertos abiertos y repetirlo de vez en cuando.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda