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 comando nmap
para realizar varias tareas de red.
Instalación de Nmap
Nmap es un programa multiplataforma que se puede instalar en 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 sobre 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 descargar desde la página de descarga 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, ejecute:
sudo apt update
sudo apt install nmap
Instalación de Nmap en CentOS y Fedora
En CentOS y otros derivados de Red Hat se ejecutan:
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 vía Homebrew:
brew install nmap
Instalación de Nmap en Windows
La versión para Windows de Nmap tiene algunas limitaciones y, en general, es un poco más lenta que la versión 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 se usa generalmente 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 comando nmap es la siguiente:
nmap [Options] [Target...]
El ejemplo más básico de uso de Nmap es escanear un solo objetivo como usuario estándar sin especificar ninguna opción:
nmap scanme.nmap.org
Cuando se invoca como un usuario no root que no tiene privilegios de paquetes sin procesar, nmap
ejecuta un escaneo de conexión TCP. El ( -sT
) está activado de forma predeterminada en el modo sin privilegios.
La salida tendrá un aspecto similar a esto, incluida 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.
-sS
se activa de forma predeterminada cuando nmap
se invoca como un usuario con privilegios administrativos:
sudo nmap 192.168.10.121
Para obtener una salida más detallada, use el aumento de la verbosidad con -v
o -vv
:
sudo nmap -vv 192.168.10.121
Para realizar un escaneo UDP, invoque el comando con la opción -sU ( ) 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 opción -6:
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 guion 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.1
, 192.168.11.1
y 192.168.12.1
:
nmap 192.168.10-12.1
Otro carácter que puede utilizar 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
Puede combinar todas las formas:
nmap 10.8-10.10,11,12.0/28 192.168.1-2.100,101
Para asegurarse de haber especificado los hosts correctos antes de escanear, use la opción de lista de escaneo ( -sL
), que solo enumera los destinos 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 opción --exclude
:
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12
Especificación y escaneo de puertos
De forma predeterminada, Nmap realiza un análisis 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, use la opción: -p-
nmap -p- 192.168.10.121
Cada puerto puede estar en uno de los siguientes estados:
- open: el programa que se ejecuta en el puerto responde a la solicitud.
- closed : ningún programa se ejecuta en el puerto y el host responde a las solicitudes.
- filtered: el host no responde a la solicitud.
Los puertos y rangos de puertos se especifican con la opción -p.
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 de 1 a 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 mediante 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 descubrimiento de host, invoque el comando nmap con la opción -sn
:
sudo nmap -sn 192.168.10.0/24
La opción -sn
le dice a Nmap que solo descubra hosts en línea y que no realice un escaneo de puertos. Esto es útil cuando desea determinar rápidamente cuáles de los hosts especificados están en funcionamiento.
Desactivación de la resolución de nombres DNS
El comportamiento predeterminado de Nmap es realizar una resolución de DNS inverso para cada host descubierto, lo que aumenta el tiempo de escaneo.
Al escanear redes grandes, es una buena idea desactivar la resolución de DNS inverso y acelerar los escaneos. Para hacer eso, invoque el comando con la opción -n
:
sudo nmap -n 192.168.10.0/16
Detección de SO, servicio y versión
Nmap puede detectar el sistema operativo del host remoto utilizando huellas digitales de pila TCP / IP. Para ejecutar la detección del sistema operativo, invoque el comando con la opción -O
:
sudo nmap -O scanme.nmap.org
Si Nmap puede detectar el sistema operativo host, imprimirá algo como a continuación:
...
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
Por lo general, los servicios del sistema escuchan en puertos estándar que son bien conocidos y reservados para ellos. Por ejemplo, si el puerto 22 que corresponde al servicio SSH está abierto, asumirá que se ejecuta un servidor SSH en el host. Sin embargo, no puede estar absolutamente seguro porque las personas pueden ejecutar servicios en los puertos 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 opción -sV
:
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 sistemas operativos, versiones y ejecutar traceroute en un comando usando la opción -A
:
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 un uso posterior, puede guardar la salida en un archivo.
Nmap proporciona varios tipos de salida. Para guardar la salida en formato normal, use la opción -oN 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 hacerlo, use la opción -oX
:
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 opción -oG
:
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Motor de secuencias de comandos de Nmap
Una de las características más poderosas de Nmap es su motor de secuencias de comandos. Nmap viene con cientos de scrips y también puede escribir sus propios scrips en el lenguaje 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
Nmap es una herramienta de código abierto que utilizan principalmente los administradores de red para descubrir puertos host y escanear.
Tenga en cuenta que en algunos países, no es legal escanear redes sin autorización.
Si tienes alguna duda o pregunta, no dudes en contactarnos a través de un ticket de soporte con gusto te ayudaremos.