Nmap: Descarga, instalación y manual de uso paso a paso

Nmap: Descarga, instalación y manual de uso paso a paso

Sergio De Luz

Nmap es el programa gratuito por excelencia para descubrir todos los hosts que hay en una o varias redes, así como qué puertos tiene abiertos un determinado host, y también nos permite saber qué servicio hay detrás de dicho puerto abierto, ya que analiza todo el tráfico que devuelve para intentar «adivinar» el programa utilizado, con la finalidad de explotar alguna vulnerabilidad. Este programa también es capaz de detectar el tipo de sistema operativo y la versión del sistema operativo que tenemos en un determinado host, y todo ello de manera muy fácil y rápida. Nmap está disponible para sistemas operativos Microsoft Windows, Linux, y también macOS, y se puede descargar desde la web oficial de Nmap o directamente desde los repositorios de cada distribución de Linux.

Nmap tiene una interfaz gráfica de usuario que se llama Zenmap, Zenmap es la interfaz gráfica oficial que nos permitirá realizar todas y cada una de las funciones del propio programa, pero con una interfaz gráfica de usuario en lugar de comandos por consola. Podremos ejecutar de manera muy fácil los diferentes tipos de análisis de puertos que permite el propio software, y mostrarlos de manera intuitiva para que los usuarios menos experimentados con esta herramienta también puedan usarla. Zenmap también es multiplataforma, libre y completamente gratuito, compatible con sistemas Microsoft Windows, Linux, macOS y BSD.  Aunque normalmente los usuarios avanzados van a ejecutarlo todo a través del propio terminal, Zenmap nos permite un campo de orden avanzado para no tener que hacerlo, por lo que todo lo podremos realizar directamente desde este programa.

Por último, Nmap tiene los scripts NSE (Nmap Scripting Engine). NSE es un módulo de Nmap que nos va a permitir explotar las vulnerabilidades previamente encontradas por el propio programa, gracias a NSE podremos automatizar el pentesting a la red local doméstica o empresarial, y todo ello con scripts muy actualizados con las últimas vulnerabilidades conocidas. En la web oficial de Nmap Scripting Engine (NSE) puedes encontrar todos los detalles sobre este módulo, y cómo utilizar los diferentes scripts.

En este artículo os vamos a enseñar cómo descargar e instalar Nmap y Zenmap, tanto en Microsoft Windows 10, como en Debian 9, y posteriormente, os enseñaremos cómo utilizarlo, ya que a la hora de utilizarlo los comandos son exactamente iguales en ambos sistemas operativos, y la interfaz gráfica de usuario de Zenmap también.

Descarga e instalación en sistemas Microsoft Windows 10

Para descargar el programa Nmap en Windows, lo primero que debemos hacer es entrar en la web oficial de descargas de Nmap, y descargar la última versión «stable». Este programa .exe tiene en su interior tanto el propio programa Nmap, como Zenmap, y por supuesto, npcap que es necesario para el buen funcionamiento de todo el software.

La instalación del programa se realiza exactamente igual al resto de programas en Microsoft Windows, tan solo debemos seguir el asistente para proceder con su instalación. El propio asistente nos va a permitir instalar o no instalar una serie de módulos de Nmap, lo normal es instalar todos ellos, aunque si ya tienes instalado Npcap, no tienes que instalarlo nuevamente.

Una vez que ya lo hayamos instalado, no será necesario reiniciar el ordenador, simplemente buscamos en el escritorio el acceso directo de Zenmap para proceder con su ejecución, tal y como podéis ver aquí:

Tal y como podéis ver, en la interfaz gráfica de usuario de Zenmap podremos ir rellenando el objetivo del escaneo, y el perfil elegido para realizar. En la sección de «comando» es donde podremos poner el comando exacto a ejecutar por el programa, ya que las opciones más avanzadas no las tendremos disponibles en los diferentes perfiles. En la zona inferior es donde podremos ver la salida del propio Nmap, qué puertos tenemos abiertos, la topología de red que tenemos en uso, y también otras opciones como los detalles específicos del host escaneado.

Una vez que hemos instalado Nmap y Zenmap, en la sección de «Comandos de Nmap: Todos los parámetros que puedes usar» vais a poder ver en detalle ejemplos de escaneo de puertos, descubrimiento de hosts y mucho más. Todos los comandos los podréis utilizar sin problemas en la sección «comando» de Zenmap, o también ejecutarlos a través del terminal (cmd.exe). Es recomendable ejecutar siempre Nmap o Zenmap con permisos de administrador, ya que algunos tipos de escaneo necesitan estos permisos.

Descarga e instalación en sistemas Linux

Para descargar el programa Nmap en Linux, es necesario simplemente descargarlo desde los repositorios oficiales, ya que las grandes distribuciones lo incorporan. En caso de que tengas una distribución que utilice RPM, puedes descargarlo directamente desde la web oficial de descargas de Nmap, y proceder con su instalación manual. Nosotros hemos instalado Nmap última versión en un sistema operativo Debian 9.6, pero el resto de familia como Ubuntu o similares se hace exactamente igual:

sudo apt update sudo apt install nmap zenmap

Y automáticamente se instalarán ambos paquetes en nuestro sistema operativo, con las correspondientes dependencias que nos aparecerá al ejecutarlo.

Una vez que se hayan descargado e instalado todos los paquetes, si ejecutamos el comando «nmap» en el terminal, podremos ver el listado de argumentos que podremos utilizar con el propio programa. Lo mismo ocurre con Zenmap, podremos ejecutarlo desde la propia interfaz gráfica de usuario, o directamente lanzarlo desde consola. Es recomendable utilizar Nmap y Zenmap con permisos de superusuario, ya que en algunos tipos de escaneo es necesario.

Una vez que hemos instalado Nmap y Zenmap, en la sección de «Comandos de Nmap: Todos los parámetros que puedes usar» vais a poder ver en detalle ejemplos de escaneo de puertos, descubrimiento de hosts y mucho más. Todos los comandos los podréis utilizar sin problemas en la sección «comando» de Zenmap.

Comandos de Nmap: Todos los parámetros que puedes usar

Seleccionar objetivos a escanear: Direcciones IP, rangos de IP, dominios, subredes enteras

Para proceder con el escaneo de los diferentes hosts que hay en una red, es necesario definir qué dirección IP queremos escanear, ya sea dirección IP privada (de la red local), o pública (de Internet). También vamos a poder seleccionar un rango de direcciones IP que nosotros definamos, un dominio de Internet o local, así como escanear subredes enteras haciendo uso de la máscara de subred.

Algunos ejemplos de escaneos que puedes realizar son:

nmap 192.168.1.1 nmap 192.168.1.1-254 nmap www.redeszone.net nmap 192.168.1.0/24

Otras formas de seleccionar objetivos es incorporarlos a un fichero de texto, y posteriormente cargar dicho fichero en Nmap para hacer un escaneo secuencia. También podrías realizar un escaneo tomando esos objetivos, pero hacerlo de manera aleatoria.

  • -iL fichero (lista en fichero)
  • -iR (elegir objetivos aleatoriamente)
  • –exclude –excludefile fichero (excluir sistemas desde fichero)

Descubrimiento de hosts (si el método anterior estándar no ha funcionado)

Nmap nos permite una gran configurabilidad a la hora de descubrir hosts que están levantados. Con este programa es posible enviar diferentes paquetes TCP con diferentes «flags», para ver qué contesta el propio host, también nos permitirá enviar datagramas UDP para comprobar esto mismo.

A continuación, tienes un completo listado de las órdenes avanzadas que podremos utilizar y para qué sirven cada una de ellas, la ejecución se realiza de la siguiente forma (por ejemplo):

nmap 192.168.1.1-20 -PS
  • -PS n (envía un TCP SYN al puerto 80 por defecto para descubrir hosts levantados, «n» puede ser otro puerto o puertos a probar)
  • -PA n (envía un TCP ACK al puerto 80 por defecto para descubrir hosts levantados, «n» puede ser otro puerto o puertos a probar)
  • -PU n (envía un datagrama UDP al puerto 40125 por defecto para descubrir hosts levantados, «n» puede ser otro puerto o puertos a probar)
  • -sL (no escanea, únicamente lista los objetivos)
  • -PO (ping por protocolo)
  • -PN (No hacer ping)
  • -n (no hacer DNS)
  • -R (Resolver DNS en todos los sistemas objetivo)
  • –traceroute (trazar ruta al sistema (para topologías de red))
  • -sP (realizar ping, igual que con –PP –PM –PS443 –PA80)

Puertos a analizar: puerto único, todos los puertos (1-65535), rango de puertos.

Para analizar los puertos abiertos o cerrados de un determinado objetivo (o de varios objetivos), tenemos la opción de ejecutar diferentes argumentos para escanear un puerto único, todos los puertos, un rango de puertos, los 100 puertos más comunes etc. Este programa nos indicará si los puertos están abiertos, cerrados, filtrados o si no sabe el estado en concreto.

Algunos ejemplos de escaneos de puertos que puedes realizar a una determinada dirección IP son:

nmap 192.168.1.1 -p 80 nmap 192.168.1.1 -p 80-100 nmap 192.168.1.1 -p 80,443,21

Escaneo rápido de puertos con los 100 más comunes:

nmap 192.168.1.1 -F

Escaneo de puertos UDP y TCP a la vez, y que muestre todo lo que encuentre.

nmap 192.168.1.1 -p U:53,T:21-25,80

Si queremos escanear los 100 puertos más utilizados habitualmente por diferentes servicios:

nmap 192.168.1.1 --top-ports 100

Técnicas de análisis de puertos (avanzado, si lo anterior no ha funcionado o quieres usar un flag en concreto)

El programa Nmap nos permite realizar escaneo de puertos avanzados, enviando diferentes tipos de paquetes TCP y UDP entre otros, para descubrir que un puerto está abierto, filtrado o cerrado. Estas órdenes son fundamentales para comprobar cómo tienen los hosts un puerto o varios puertos.

  • -sS (análisis de puertos enviando paquetes TCP SYN)
  • -sT (análisis de puertos enviando paquetes TCP CONNECT)
  • –sA (análisis de puertos enviando paquetes TCP ACK)
  • -sW (análisis de puertos enviando paquetes TCP Window)
  • -sU (análisis de puertos enviando paquetes UDP)
  • -sY (análisis de puertos enviando paquetes SCTP INIT)
  • -sZ (análisis de puertos enviando paquetes COOKIE ECHO de SCTP)
  • -sO (análisis de puertos enviando paquetes IP directamente)
  • -sN (análisis de puertos enviando paquetes TCP Null Scan)
  • –sF (análisis de puertos enviando paquetes TCP FIN Scan)
  • -sX (análisis de puertos enviando paquetes TCP Xmas Scan)

Duración de los escaneos a realizar y otras opciones avanzadas

Nmap nos permite acelerar el escaneo de los diferentes puertos, aunque si lo hacemos demasiado rápido, es posible que puertos que realmente estén abiertos los marque como cerrados, es decir, no es recomendable hacer los escaneos de manera muy rápida. Si utilizamos el flag «-TX» siendo X un número entre 0 y 5, podremos configurar la velocidad del escaneo:

  • -T0 paranoico
  • -T1 sigiloso
  • -T2 sofisticado
  • -T3 normal
  • -T4 agresivo
  • -T5 locura

Este programa también nos permite paralelizar el escaneo de los diferentes puertos de los hosts, para ello podremos paralelizarlo a un grupo de hosts, y también nos permitirá enviar de manera simultánea diferentes paquetes:

  • –min-hostgroup
  • –max-hostgroup
  • –min-parallelism
  • –max-parallelism

Otras opciones que tenemos es la posibilidad de enviar paquetes no más lentos (–min-rate) que un determinado número, ni más rápido (–max-rate) que un determinado número. Esto es ideal para no colapsar un determinado host y que un IDS pueda bloquearnos el acceso.

También podemos configurar el RTT «Round trip time», en este caso tendremos hasta tres argumentos que podremos utilizar:

  • –min-rtt-timeout
  • –max-rtt-timeout
  • –initial-rtt-timeout

También tenemos la opción de limitar a un máximo de reintentos el envío de paquetes a un determinado puerto de un host, el argumento a utilizar es «–max-retries» y es muy útil para no «colapsar» un puerto, o que un IDS salte y nos bloquee.

  • –max-retries

Detección de servicios en los hosts y versiones del software y/o sistema operativo

Nmap es un programa tan potente que también nos va a permitir detectar la versión de los diferentes servicios que tenemos en el sistema, de hecho, es capaz de intentar adivinar qué sistema operativo está utilizando un host remoto, con el objetivo de realizar posteriormente un pentesting.

En esta sección tenemos unos argumentos muy interesantes:

  • -O (habilitar la detección del sistema opeativo)
  • -sV (detección de la versión de servicios)
  • –max-os-tries (establecer número máximo de intentos contra el sistema objetivo)

Evasión de cortafuegos y sistemas de detección de intrusiones

En la gran mayoría de redes empresariales tenemos tanto firewalls como sistema de detección y prevención de intrusiones. Es posible intentar engañar a estos sistemas, realizando diferentes técnicas con Nmap, algunos ejemplos son los siguientes:

  • -f (fragmentar paquetes)
  • -D d1,d2 (encubrir análisis con señuelos)
  • -S ip (falsear dirección origen)
  • –g source (falsear puerto origen)
  • –randomize-hosts orden
  • –spoof-mac mac (cambiar MAC de origen)

Otros parámetros (incrementar verbose y más)

  • -v (Incrementar el nivel de detalle del escaneo)
  • -d (1-9) establecer nivel de depuración
  • –packet-trace ruta de paquetes
  • –resume file continuar análisis abortado (tomando formatos de salida con -oN o -oG)
  • -6 activar análisis IPV6
  • -A agresivo, igual que con -O -sV -sC –traceroute

Opciones interactivas (que se pueden ejecutar mientras está realizando el análisis)

  • v/V aumentar/disminuir nivel de detalle del análisis
  • d/D aumentar/disminuir nivel de depuración
  • p/P activar/desactivar traza de paquetes

Scripts

  • -sC realizar análisis con los scripts por defecto
  • –script file ejecutar script (o todos)
  • –script-args n=v proporcionar argumentos
  • –script-trace mostrar comunicación entrante y saliente

Formatos de salida

  • -oN normal
  • -oX XML
  • -oG programable
  • –oA todos

Hasta aquí hemos llegado con este manual de cómo descargar, instalar y utilizar Nmap, uno de los programas de escaneo de puertos más conocidos y utilizados. Os recomendamos acceder a la web oficial de Nmap donde encontraréis mucha más información sobre este software, y también, accederéis a un completo manual de cómo usar los NSE de Nmap.