Cómo usar Nmap

Nmap es una herramienta de escaneo de red que se usa con mucha frecuencia en administración de redes o para realizar alguna prueba de penetración o auditoría de sistemas. Realmente la herramienta Nmap nos permite no solo escanear los puertos, sino detectar el sistema operativo de la máquina remota, realizar identificación RPC, hacer barridos de pings, detectar la dirección Mac o identificar la versión de determinados servicios de red.

Aunque originaria de los entornos GNU/Linux actualmente podemos encontrar versiones de Nmap para los principales sistemas operativos.

Instalación

Para instalarla en en sistemas Debian/Ubuntu:

❯ sudo apt install nmap

Tenemos la opción de instalar Zenmap, un frontal gráfico para Nmap que puede resultar útil si no se conoce Nmap. De cualquier forma es mejor familiarizarse con el uso de la línea de comando de Nmap ya que en muchas ocasiones no tendremos la posibilidad de usar entorno gráfico

Nmap nos permite realizar prácticamente cualquier tipo de escaneado de puertos, desde el básico escaneado de conexión completa (conexión de tres fases SYN SYN-ACK ACK) a métodos más sofisticados que permiten eludir bloqueos de algunos filtros de red, como son los escaneados de tipo FIN, Null o Xmas Tree.

Opciones de Nmap

El uso de Nmap es el siguiente:

❯ nmap  [Tipo de Análisis] [Opciopnes] [Objetivos]

Por ejemplo:

❯ nmap -sS --privileged -v 192.168.122.1

Donde le indicamos que realice un análisis -sS (Stealth SYN) con las opciones --privileged (ver más abajo) -v (ofrecer detalles),  y como objetivo tenemos la ip 192.168.122.1.

La siguiente tabla muestra los modos de escaneo más importantes de Nmap:

Tipo Argumento Descripción
Connect -sT Escaneo de puertos TCP de conexión completa. Es la única opción disponible si ejecutamos Nmap por un usuario no-root (si no están asignadas las capabilities)
 Stealth SYN -sS Esta es la opción por defecto (si no se puede usar por permisos se usa -sT). Se envía solo la primera parte de la negociación TCP, el paquete SYN. Si se recibe como respuesta SYN-ACK es porque el puerto destino esta en escucha
FIN -sF Se envía un paquete FIN vacio y si se recibe un paquete RST es porque el puerto está cerrado. Si no se recibe nada se asume que el puerto debe estar abierto, aunque esto no siempre es así
Xmas Tree -sX Se realiza un escaneo Xmas Tree que es similar al FIN pero en este caso el paquete que se envía contiene los indicadores FIN, URG y PUSH activados
Null -sN Escaneado nulo, similar a FIN pero con todos los indicadores desactivados
UDP -sU Escaneados de puertos UDP. Se envía un paquete UDP a cada puerto de la máquina objetivo y si se recibe un paquete ICMP de puerto inaccesible es que el puerto está cerrado
IP protocol -sO Escaneado de protocolo IP (TCP, ICMP, IGMP, etc.). Se envían paquetes IP planos a cada uno de los protocolos para determinar cuales están admitidos en el equipo objetivo. Si obtenemos una respuesta de un paquete ICMP de protocolo inaccesible es que el protocolo no está admitido
ACK -sA Se envía un paquete ACK a cada uno de los puertos con la intención de recibir un RST en el caso de que el puerto no esté filtrado por un firewall. Se utiliza para mapear reglas de firewalls o determinar si un determinado firewall mantiene estados
Windows size -sW Similar a ACK utiliza el tamaño de la ventana de TCP para determinar los puertos abiertos o filtrados
RPC -sR Escaneado RPC. Toma todos los puertos TCP/UDP que se han encontrado y los inunda con órdenes de programa NULL SunRPC con el fin de determinar si son puertos RPC
Zombi -sI Método avanzado de escaneo que utiliza una máquina intermedia para evitar mandar directamente ningún paquete al objetivo (ver detalles en nmap.org)
 OS  -O Detección del Sistema Operativo
Version -sV Obtener información de servicio/versión
OS/Ver -A Opción de sondeo agresiva en la que se activa la detección de sistema operativo -O y el análisis de versiones -sV

 

Tabla con las opciones de configuración más usadas en Nmap:

Opción Descripción
-P0 No realizar ping antes de explorar el objetivo. Por defecto Nmap solo realiza un análisis de puertos o detección del sistema operativo a equipos que estén "vivos" (respondan el ping)
 -sP Solo Ping. Únicamente se determina si el objetivo esta vivo usando un paquete eco ICMP y un paquete TCP al puerto 80 por omisión. Cuando se ejecuta por un usuario con privilegios en una red Ethernet se utilizan solicitudes ARP (-PR)
-sL Solamente lista los objetivos a analizar
-f Fragmentar los paquetes para dificultar la detección
-v Incrementa el nivel de detalles
-vv Incrementa aún más el nivel de detalles
-D Utilizar máquinas señuelo. Esta opción va seguida de una o más direcciones que son utilizadas junto con la de la máquina origen con el fin de crear confusión en los detectores de intrusión para enmascarar la IP real desde donde se está ejecutando el escaneo
-T Control de tiempos por plantilla. Se utiliza una de las opciones: Paranoid|Sneaky|Polite|Normal|Aggressive|Insane. Las primeras 2 se utilizan para evadir los IDS. El modo Polite hace que se utilice menos ancho de banda. El Normal es el modo por defecto. Aggressive realiza el sonde más rápido y el modo Insane lo hace aún más rápido sacrificando fiabilidad por velocidad
 -n No realizar resolución DNS
-R Realizar resolución DNS

Algunos Ejemplos de uso

En todos los ejemplos se asume que se lanza Nmap con permisos root, bien por estar logado como root, usando sudo o habiendo habilitado las capabilities necesarias y añadido la variable de entorno NMAP_PRIVILEGED="" como se indica más abajo.

Especificar objetivos

❯ nmap 192.168.122.1 nombre_dom.com

Escaneamos una dirección IP y un nombre de dominio.

❯ nmap 192.168.122.0/24

Indicamos un rango de direcciones usando notación CIDR.

❯ nmap 192.168.122.1-10

Indicamos un rango de IP's, en este caso de la 1 a la 10.

❯ nmap 192.168.122.0/24 --exclude 192.168.122.100-200

Excluimos las IP's 100 a la 200 en la lista de objetivos (en este caso 192.168.122.0/24).

Para comprobar como va a interpretar Nmap las direcciones que le indicamos en la línea de comandos podemos utilizar la opción -sL con la que solo nos listara los objetivos a analizar sin realizar ningún escaneo

Especificar puertos

Por defecto Nmap analiza más de 1660 puertos TCP del objetivo. Los puertos pueden estar en seis estados distintos: abierto, cerrado, filtrado, no filtrado, abierto|filtrado, o cerrado|filtrado.

❯ nmap -p 80 nombre_dom.com

Analiza solo el puerto 80.

❯ nmap -p 80,443 nombre_dom.com

Analiza los puertos 80 y 443.

❯ nmap -p- 192.168.122.1

Analiza todos los puertos (del 1 al 65535).

Podemos indicar los puertos usando el nombre de puerto, por ejemplo http, https, ftp, ssh, etc.

Tipo de escaneo

❯ nmap -sP 192.168.1.0/24

En este caso unicamente se buscan las máquinas que están "vivas". Al ser una red ethernet y siendo usuario con permisos root se utilizan paquetes ARP. Es una opción muy interesante en administración de sistemas.

❯ nmap -sS -n 129.42.38.10

Realiza un escaneo Stealth SYN (solo la primera parte de la negociación TCP) de la IP 129.42.38.10 sin hacer resolución DNS

Detección de Sistema Operativo y Detección de Versión

❯ nmap -O 192.168.122.1

Realiza un escaneo de puertos (siendo usuario root por defecto utiliza Stealth SYN) y realiza identificación de sistema operativo utilizando las huellas de la pila TCP/IP.

❯ nmap -sV -p 80,443 192.168.122.1

En este caso hacemos una identificación de servicio y versión en los puertos 80 y 443.

❯ nmap -A 192.168.122.1

La opción -A activa la detección de Sistema Operativo, la detección de servicios detrás de los puertos y realiza un traceroute.

Uso de Nmap por usuarios no root

En los sistemas GNU/Linux el uso de los raw sockets esta limitado al usuario root, por tanto todos los escaneos que realiza Nmap y utiliza raw sockets están limitados al usuario root:

❯ nmap -sS 192.168.122.1
You requested a scan type which requires root privileges.
QUITTING!

Con el fin de que un usuario no root pueda ejecutar todos los comandos de Nmap podemos asignarle las capabilities necesarias: CAP_NET_RAW, CAP_NET_ADMIN, CAP_NET_BIND_SERVICE.

Primero asignamos Nmap al grupo sudo y le damos permisos de ejecución a los miembros de este grupo. Después asignamos las capabilities con setcap:

❯ sudo chgrp sudo /usr/bin/nmap
❯ sudo chmod 750 /usr/bin/nmap
❯ sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap

Tenemos que indicar a Nmap que tenemos habilitadas las capabilities con --privileged:

❯ nmap --privileged -sS 192.168.122.1
Starting Nmap 7.80 ( https://nmap.org ) at 2021-02-06 18:34 CET
Nmap scan report for ronin-R3900 (192.168.122.1)
Host is up (0.000017s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE
53/tcp open  domain
MAC Address: 52:54:00:F1:35:9F (QEMU virtual NIC)

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

Es posible añadir una variable de entorno para indicar a Nmap que tenemos habilitadas las capabilities con el fin de no tener que añadir la opción --privileged en cada llamada a Nmap:

❯ export NMAP_PRIVILEGED=""

Tenemos que tener presente la advertencia de seguridad que nos indican desde la web de la Nmap Security Scanner Projects y utilizar esta opción con precaución:

<< Esto es peligroso. El motor de secuencias de comandos de Nmap (NSE) permite que las secuencias de comandos rastreen la red, cambien las rutas del firewall y la configuración de la interfaz, o aprovechen las vulnerabilidades, incluso en localhost. Es posible, especialmente con capacidades elevadas, que una persona inteligente use Nmap y NSE para escalar a privilegios de root completos. Si no comprende estos riesgos, no lo haga. >>

 

Modificado por última vez enLunes, 22 Febrero 2021 17:55
(1 Voto)
Etiquetado como :

Deja un comentario

Asegúrese de introducir toda la información requerida, indicada por un asterisco (*). No se permite código HTML.