Nmap es una poderosa herramienta de escaneo de red para auditorías de seguridad y pruebas de penetración. Es una de las herramientas esenciales que utilizan los administradores de red para solucionar problemas de conectividad de red y escaneo de puertos .

Nmap también puede detectar la dirección Mac, el tipo de sistema operativo , la versión del servicio y mucho más.

Este artículo explica los conceptos básicos de cómo usar el nmapcomando para realizar varias tareas de red.

Instalación de Nmap

Nmap es un programa multiplataforma que se puede instalar en todos los principales sistemas operativos. Inicialmente se lanzó como una herramienta solo para Linux y luego se trasladó a otros sistemas como BSD, Windows y macOS.

Si prefiere una GUI en lugar de la línea de comandos, Nmap también tiene una interfaz gráfica de usuario llamada Zenmap .

Los paquetes binarios oficiales están disponibles para su descarga desde la página de descargas de Nmap .

El procedimiento de instalación es sencillo y varía según su sistema operativo.

Instalación de Nmap en Ubuntu y Debian

Nmap está disponible en los repositorios predeterminados de Ubuntu y Debian. Para instalarlo, ejecuta:

sudo apt updatesudo apt install nmap

Instalación de Nmap en CentOS y Fedora

En CentOS y otros derivados de Red Hat ejecute:

sudo dnf install nmap

Instalación de Nmap en macOS

Los usuarios de macOS pueden instalar Nmap descargando el paquete de instalación ".dmg" del sitio de Nmap o a través de Homebrew:

brew install nmap

Instalación de Nmap en Windows

La versión de Windows de Nmap tiene algunas limitaciones y, por lo general, es un poco más lenta que la versión de UNIX.

La opción más sencilla para instalar Nmap en Windows es descargar y ejecutar el archivo exe de autoinstalación.

Puede ejecutar Nmap en Windows desde la línea de comandos o iniciando el programa Zenmap. Para obtener más información sobre cómo usar Nmap en Windows, consulte las instrucciones de uso posteriores a la instalación .

Usando Nmap

Nmap generalmente se usa para auditar la seguridad de la red, el mapeo de la red, identificar puertos abiertos y buscar dispositivos en línea.

La sintaxis simplificada del nmapcomando es la siguiente:

nmap [Options] [Target...]

El ejemplo más básico del uso de Nmap es escanear un solo objetivo como un usuario estándar sin especificar ninguna opción:

nmap scanme.nmap.org

Cuando se invoca como un usuario no raíz que no tiene privilegios de paquetes sin procesar, nmapejecuta un análisis de conexión TCP. El ( -sT) está activado de forma predeterminada en el modo sin privilegios.

El resultado se verá así, incluida la información básica sobre el escaneo y una lista de puertos TCP abiertos y filtrados.

Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET
Nmap scan report for cast.lan (192.168.10.121)
Host is up (0.048s latency).
Not shown: 981 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   open     smtp
53/tcp   open     domain
80/tcp   open     http
110/tcp  open     pop3
143/tcp  open     imap
443/tcp  open     https
587/tcp  open     submission
993/tcp  open     imaps
995/tcp  open     pop3s
1025/tcp open     NFS-or-IIS
1080/tcp open     socks
8080/tcp open     http-proxy
8081/tcp open     blackice-icecap

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

La opción de exploración más popular es la exploración TCP SYN ( -sS), que es más rápida que la opción de conexión y funciona con todas las pilas TCP compatibles.

-sSestá activado de forma predeterminada cuando nmapse invoca como un usuario con privilegios administrativos:

sudo nmap 192.168.10.121

Para obtener resultados más detallados, use aumentar la verbosidad con -v-vv:

sudo nmap -vv 192.168.10.121

Para realizar un escaneo UDP, invoque el comando con la -sUopción ( ) como usuario root:

sudo nmap -sU 192.168.10.121

Para obtener una lista completa de los métodos de escaneo de puertos, visite la página de documentación de Nmap .

Nmap también admite direcciones IPv6. Para especificar un host IPv6, use la -6opción:

sudo nmap -6 fd12:3456:789a:1::1

Especificación de hosts de destino

Nmap trata todos los argumentos que no son opciones como hosts de destino.

Los argumentos se consideran opciones si comienzan con un guión simple o doble ( ---).

La opción más simple es pasar una o más direcciones de destino o nombres de dominio:

nmap 192.168.10.121 host.to.scan

Puede usar la notación CIDR para especificar un rango de red:

nmap 192.168.10.0/24

Para especificar un rango de octetos, use el carácter de guión. Por ejemplo, para escanear 192.168.10.1192.168.11.1192.168.12.1:

nmap 192.168.10-12.1

Otro carácter que puede usar para especificar los objetivos es la coma. El siguiente comando apunta a los mismos hosts que el anterior:

nmap 192.168.10,11,12.1

Puedes combinar todas las formas:

nmap 10.8-10.10,11,12.0/28  192.168.1-2.100,101

Para asegurarse de que especificó los hosts correctos antes de escanear, use la opción de escaneo de lista ( -sL), que solo enumera los objetivos sin ejecutar un escaneo:

nmap -sL 10.8-10.10,11,12.0/28  192.168.1-2.100,101

Si desea excluir objetivos que están incluidos en el rango que especificó, use la --excludeopción:

nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12

Especificación y exploración de puertos

De forma predeterminada, Nmap realiza un escaneo rápido de los 1000 puertos más populares. Estos puertos no son los primeros 1000 puertos consecutivos, sino los 1000 puertos más utilizados que van del 1 al 65389.

Para buscar todos los puertos del 1 al 65535, utilice la -p-opción:

nmap -p- 192.168.10.121

Cada puerto puede estar en uno de los siguientes estados:

  • abierto: el programa que se ejecuta en el puerto responde a la solicitud.
  • cerrado: no se ejecuta ningún programa en el puerto y el host responde a las solicitudes.
  • filtrado: el host no responde a la solicitud.

Por ejemplo, para escanear solo el puerto 443, usaría el siguiente comando:

nmap -p 443 192.168.10.121

Para especificar más de un puerto, separe los puertos de destino con una coma:

nmap -p 80,443 192.168.10.121

Los rangos de puertos se pueden especificar con el símbolo de guión. Por ejemplo, para escanear todos los puertos UDP que van del 1 al 1024, ejecutaría:

sudo nmap -sU -p 1-1024 192.168.10.121

Todo combinado:

nmap -p 1-1024,8080,9000 192.168.10.121

Los puertos también se pueden especificar utilizando el nombre del puerto. Por ejemplo, para buscar el puerto 22, ssh, puede usar:

nmap -p ssh 192.168.10.121

Escaneo de ping

Para realizar un escaneo de ping o un descubrimiento de host, invoque el nmapcomando con la -snopción:

sudo nmap -sn 192.168.10.0/24

La -snopción le dice a Nmap que solo descubra hosts en línea y que no haga un escaneo de puertos. Esto es útil cuando desea determinar rápidamente cuál de los hosts especificados está en funcionamiento.

Deshabilitar la resolución de nombres DNS

El comportamiento predeterminado de Nmap es realizar una resolución DNS inversa para cada host descubierto, lo que aumenta el tiempo de exploración.

Al escanear redes grandes, es una buena idea deshabilitar la resolución de DNS inverso y acelerar los escaneos. Para hacer eso, invoque el comando con la -nopción:

sudo nmap -n 192.168.10.0/16

Sistema operativo, servicio y detección de versión

Nmap puede detectar el sistema operativo del host remoto usando huellas dactilares de pila TCP/IP. Para ejecutar la detección del sistema operativo, invoque el comando con la -Oopción:

sudo nmap -O scanme.nmap.org

Si Nmap puede detectar el sistema operativo host, imprimirá algo como lo siguiente:

...
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.4
Network Distance: 18 hops

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

Normalmente, los servicios del sistema escuchan en puertos estándar que son bien conocidos y están reservados para ellos. Por ejemplo, si el puerto 22 que corresponde al servicio SSH está abierto, supondrá que se ejecuta un servidor SSH en el host. Sin embargo, no puede estar absolutamente seguro porque las personas pueden ejecutar servicios en cualquier puerto que deseen.

Con detección de servicio y versión, Nmap le mostrará qué programa escucha en el puerto y la versión del programa.

Para buscar servicio y versión, use la -sVopción:

sudo nmap -sV scanme.nmap.org
...
PORT      STATE    SERVICE      VERSION
19/tcp    filtered chargen
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))
135/tcp   filtered msrpc
139/tcp   filtered netbios-ssn
445/tcp   filtered microsoft-ds
9929/tcp  open     nping-echo   Nping echo
31337/tcp open     tcpwrapped
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
...

También puede buscar SO, versiones y ejecutar traceroute en un solo comando usando la -Aopción:

sudo nmap -A 192.168.10.121

Salida Nmap

De forma predeterminada, Nmap imprime la información en la salida estándar (stdout).

Si escanea una red grande o necesita la información para su uso posterior, puede guardar la salida en un archivo.

Nmap proporciona varios tipos de salida. Para guardar la salida en formato normal, use la -oNopción seguida del nombre del archivo:

sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt

La opción más popular es guardar la salida en formato XML. Para ello, utilice la -oXopción:

sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml

Otro formato útil es la salida grepable, que se puede analizar con las herramientas estándar de Unix como grep , awk y cut . La salida grepable se especifica con la -oGopción:

sudo nmap -sU -p 1-1024 192.168.10.121 -oG output

Motor de secuencias de comandos Nmap

Una de las características más poderosas de Nmap es su motor de secuencias de comandos. Nmap se envía con cientos de scripts , y también puede escribir sus propios scripts en el idioma Lua.

Puede usar scripts para detectar malware y puertas traseras, realizar ataques de fuerza bruta y más.

Por ejemplo, para verificar si un host determinado está comprometido, puede usar:

nmap -sV --script http-malware-host scanme.nmap.org

Conclusión

Nmap es una herramienta de código abierto que utilizan principalmente los administradores de red para descubrir hosts y escanear puertos.

Tenga en cuenta que en algunos países no es legal escanear redes sin autorización.

Si tiene alguna pregunta o comentario, por favor deje un comentario a continuación.