Realiza escaneos de puertos con Nmap a cualquier servidor o sistema

Nmap es la mejor herramienta de escaneo de puertos y descubrimiento de hosts que existe actualmente. Nmap nos permitirá obtener una gran cantidad de información sobre los equipos de nuestra red, es capaz de escanear qué hosts están levantados, e incluso comprobar si tienen algún puerto abierto, si están filtrando los puertos (tienen un firewall activado), e incluso saber qué sistema operativo está utilizando un determinado objetivo. ¿Quieres saber todo sobre Nmap y cómo utilizarlo? En RedesZone te explicamos todo lo que debes saber sobre esta herramienta.

Principales características

Nmap es una utilidad completamente gratuita y de código abierto, nos permite descubrir redes y host, así como realizar auditoría de seguridad. Este programa es compatible con sistemas operativos Linux, Windows y también macOS, pero en todos ellos se utiliza a través de la línea de comandos, aunque tenemos la posibilidad de instalar ZenMap que es la utilidad gráfica de Nmap para hacer los escaneos de puertos a través de la interfaz gráfica de usuario. Si no quieres pelearte con comandos a través de consola, esta interfaz gráfica de usuario te podría ser útil para los primeros pasos con este gran programa, no obstante, cuando tengas más experiencia seguramente ejecutes todas las órdenes directamente desde terminal.

Nmap nos permite detectar hosts de una red local, y también a través de Internet, de esta forma, podremos saber si dichos hosts (ordenadores, servidores, routers, switches, dispositivos IoT) están actualmente conectados a Internet o a la red local. Esta herramienta también permite realizar un escaneo de puertos a los diferentes hosts, ver qué servicios tenemos activos en dichos hosts gracias a que nos dirá el estado de sus puertos, podremos saber qué sistema operativo está utilizando un determinado equipo, e incluso podremos automatizar diferentes pruebas de pentesting para comprobar la seguridad de los equipos.

Nmap tiene diferentes tipos de escaneo de puertos, pueden ser a través de segmentos TCP, datagramas UDP o paquetes ICMP, además, permite realizar escaneos de forma oculta para que sean difíciles de detectar por los firewalls. Por supuesto, podremos hacer escaneo de puertos sobre ciertos puertos en concreto, entre rangos de puertos, rangos de direcciones IP, posibilidad de usar paquetes TCP null, FIN, Xmas y ACK además de SYN, para localizar los puertos TCP abiertos.

Otras características que nos brinda esta herramienta, es la posibilidad de hacer un completo inventario de red, e incluso comprobar si un determinado host o servicio sigue levantado y funcionando. Este programa fue diseñado para escanear una gran cantidad de hosts, por tanto, si necesitas escanear múltiples objetivos no tendrás problemas. Este programe es muy flexible, incorpora decenas de técnicas avanzadas para escanear hosts y puertos, además, también permite realizar auditorías a través de NSE (Nmap Search Engine), por lo que es realmente potente.

Nmap tiene varios estados en los puertos que aparecerán cuando hagamos un escaneo de puertos. Es fundamental saber qué significa cada estado de Nmap, porque con cualquier escaneo de puertos, nos devolverá diferentes estados.

Estado de los puertos con Nmap

  • Open: una aplicación está activamente aceptando conexiones TCP o UDP. El puerto está abierto y se puede utilizar, los pentesters podrán utilizar este puerto abierto para explotar el sistema. Es el estado por defecto si no tenemos ningún firewall bloqueando accesos.
  • Closed: un puerto que está cerrado es accesible porque responde a Nmap, sin embargo, no hay ninguna aplicación funcionando en dicho puerto. Es útil para descubrir que un host está levantado, o como parte de la detección de un sistema operativo. De cara al administrador del sistema, es recomendable filtrar estos puertos con el firewall para que no sean accesibles. De cara al pentester, es recomendable dejar estos puertos “cerrados” para analizar más tarde, por si ponen algún servicio nuevo.
  • Filtered: en este estado Nmap no puede determinar si el puerto está abierto, porque hay un firewall filtrando los paquetes de Nmap en dicho puerto. Estos puertos filtrados son los que aparecerán cuando tengamos un firewall activado. Nmap intentará en varias ocasiones intentar conectar, lo que hace que el escaneo de puertos sea bastante lento.
  • Open| Filtered: Nmap no sabe si el puerto está abierto o filtrado. Esto ocurre porque el puerto abierto no envía ninguna respuesta, y dicha falta de respuesta podría ser por el firewall. Este estado aparece cuando usamos UDP y IP, y utilizamos escaneos FIN, NULL y Xmas.
  • Closed | Filtered: en este estado no se sabe si el puerto está cerrado o filtrado. Solo se usa este estado en el IP Idle Scan.

Una vez que hemos visto las principales características de Nmap, y el estado de los puertos que tenemos disponibles, vamos a instalarlo y utilizarlo.

Descarga e instalación de Nmap en cualquier sistema

Lo primero que tenemos que hacer para utilizar este programa tan potente, es descargarlo y posteriormente instalarlo. En la sección de descargas de Nmap podéis encontrar todos los enlaces, binarios y código fuente para su instalación en sistemas operativos Windows, Linux y MacOS. Este programa, actualmente lo tenemos disponible en todos los repositorios de los sistemas operativos basados en Linux, por lo que su instalación es realmente sencilla. Nosotros hemos instalado este programa en Ubuntu, pero simplemente ejecutando la orden de instalación de vuestro sistema operativo seguido de «nmap», instalaréis el programa sin dificultades.

sudo apt install nmap

Una vez instalado ya podemos utilizarlo desde un terminal, ya sea en Windows, Linux o macOS. En todos los ejemplos que os pondremos a continuación, hemos utilizado el sistema operativo Ubuntu, pero los mismos comandos los tenemos disponibles para Windows y macOS, sin ningún cambio.

Ejemplos de uso de Nmap

Escaneo rápido de puertos

Si quieres realizar un escaneo rápido de puertos a un determinado host, debemos teclear el siguiente comando.

nmap [ip]

Por ejemplo, si queremos realizar un escaneo rápido de los principales puertos a un host con dirección IP 192.168.1.2, la orden sería la siguiente:

nmap 192.168.1.2

El programa nos devolverá los puertos que se encuentran abiertos en el equipo objetivo.

puertosnmap_foto_2

Realizar escaneo de un rango de puertos

En lugar de realizar un escaneo de todos los puertos, podemos establecer un rango de puertos a comprobar. Para ello ejecutaremos:

nmap -p [rango] [ip]

Si queremos realizar un escaneo de puertos desde el 20 TCP hasta el 200 TCP en la dirección IP 192.168.1.2, basta con ejecutar la siguiente orden:

nmap -p 20-200 192.168.1.2

El programa nos indicará dentro de ese rango qué puertos están abiertos.

puertosnmap_foto_3

Detectar el sistema operativo y más datos del host

Podemos indicar a Nmap que detecte el sistema operativo. Esto lo realiza enviando paquetes y analizando la forma en que los devuelve, siendo en cada sistema totalmente diferente. Junto a esto, realizará una exploración de puertos y de los servicios en busca de vulnerabilidades. Asimismo, el escaneo devolverá información útil. Para ello debemos ejecutar:

nmap -A -v [ip]

Si queremos realizar este escaneo a la dirección IP 192.168.1.2 podemos ejecutar la siguiente orden:

nmap -A -v 192.168.1.2

puertosnmap_foto_4

Listado de todos los comandos

Este programa es realmente completo, hasta el momento hemos utilizado los comandos básicos para descubrir hosts y también para ver si tiene los puertos abiertos, sin embargo, esto no se queda así, y tenemos un gran listado de comandos para exprimir al máximo esta herramienta.

Seleccionar objetivos

Direcciones o rangos IP, nombres de sistemas, redes, etc.

  • Ejemplo: scanme.nmap.org, microsoft.com/24, 192.168.0.1, 10.0.0-255.1-254
  • -iL fichero lista en fichero -iR n elegir objetivos aleatoriamente, 0 nunca acaba
  • –exclude –excludefile fichero excluir sistemas desde fichero

Descubrir sistemas

  • -PS n tcp syn ping
  • -PA n ping TCP ACK
  • -PU n ping UDP
  • -PM Netmask Req
  • -PP Timestamp Req
  • -PE Echo Req
  • -sL análisis de listado
  • -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

Técnicas de análisis de puertos

  • -sS análisis utilizando TCP SYN
  • -sT análisis utilizando TCP CONNECT
  • -sU análisis utilizando UDP
  • -sY análisis utilizando SCTP INIT
  • -sZ utilizando COOKIE ECHO de SCTP
  • -sO protocolo IP
  • -sW ventana TCP -sN
  • –sF -sX NULL, FIN, XMAS
  • –sA TCP ACK

Puertos a analizar y orden de análisis

  • -p n-mrango
  • -p– todos los puertos
  • -p n,m,z especificados
  • -p U:n-m,z T:n,m U para UDP, T para TCP
  • -F rápido, los 100 comunes
  • –top-ports n analizar los puertos más utilizados
  • -r no aleatorio

Duración y ejecución:

  • -T0 paranoico
  • -T1 sigiloso
  • -T2 sofisticado
  • -T3 normal
  • -T4 agresivo
  • -T5 locura
  • –min-hostgroup
  • –max-hostgroup
  • –min-rate
  • –max-rate
  • –min-parallelism
  • –max-parallelism
  • –min-rtt-timeout
  • –max-rtt-timeout
  • –initial-rtt-timeout
  • –max-retries
  • –host-timeout –scan-delay

Detección de servicios y versiones

  • -sV: detección de la versión de servicios
  • –all-ports no excluir puertos
  • –version-all probar cada exploración
  • –version-trace rastrear la actividad del análisis de versión
  • -O activar detección del S. Operativo
  • –fuzzy adivinar detección del SO
  • –max-os-tries establecer número máximo de intentos contra el sistema objetivo

Evasión de Firewalls/IDS

  • -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

Parámetros de nivel de detalle y depuración

  • -v Incrementar el nivel de detalle
  • –reason motivos por sistema y puerto
  • -d (1-9) establecer nivel de depuración
  • –packet-trace ruta de paquetes

Otras opciones

  • –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

  • 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 guardar en formato normal
  • -oX guardar en formato XML
  • -oG guardar en formato para posteriormente usar Grep
  • -oA guardar en todos los formatos anteriores

Principalmente estos son los comandos de que dispone Nmap. Antes de terminar, debemos decir que Nmap dispone de multitud de opciones con las que poder realizar completos análisis de redes. Podemos consultar todas las opciones disponibles tecleando:

nmap --help

puertosnmap_foto_5

Nmap es sin duda una herramienta muy sencilla y completa para realizar auditorías de redes, pero esto no acaba aquí, también tenemos disponible Nmap NSE para realizar pentesting avanzados.

Nmap NSE: qué es y para qué sirve

Nmap Search Engine o también conocido como Nmap NSE, es una gran base de datos con miles de scripts que nos permitirá automatizar la realización de pentesting a sistemas y redes. El primer paso de cualquier pentesting es realizar un escaneo de puertos, una vez realizado este escaneo de puertos, podremos intentar explotar vulnerabilidades en los servicios que hay funcionando detrás de un determinado puerto, por ejemplo, podríamos atacar servidores web, servidores Samba, FTP, servidores SSH, servidores DNS, comprobar si los diferentes servicios tienen vulnerabilidades conocidas o directamente intentar autenticarnos en ellos, si es que tienen autenticación como en el FTP o SSH.

NMAP NSE es un conjunto de scripts que nos permitirá automatizar muchas acciones, como realizar ataques de fuerza bruta a servidores Samba, con el objetivo de intentar acceder a ellos y hacernos con el control, aunque también podríamos atacarlo para realizarle un ataque de denegación de servicio y que el servicio no esté disponible. Lo mismo podríamos hacer con los servidores FTP, servidores SSH y mucho más, sobre todo, los servidores web que deben tener un puerto abierto en el firewall son los que más se deben proteger para evitar o mitigar los ataques que nos puedan realizar.

Por ejemplo, si queremos realizar un ataque de fuerza bruta, basado en un listado de usuarios (con un archivo que se llame usuarios.txt) y con un listado de contraseñas a probar (con un archivo que se llame claves.txt) a un servidor SSH de un determinado equipo que tiene la IP 99.99.99.99, podemos poner el siguiente comando:

nmap -p 22 --script ssh-brute --script-args userdb=usarios.txt,passdb=claves.txt --script-args ssh-brute.timeout=4s 99.99.99.99

Si queremos saber si un servidor FTP tiene habilitado la autenticación anónima, podremos hacerlo fácilmente poniendo la siguiente orden:

nmap -sV -sC -p21 99.99.99.99

si queremos realizar un ataque de fuerza bruta a un servidor FTP a un servidor con la IP 99.99.99.99, podemos poner el siguiente comando:

nmap -p 21 --script ftp-brute 99.99.99.99

Disponemos de una grandísima cantidad de scripts dentro de Nmap NSE con el objetivo de comprobar la seguridad de decenas de servicios, porque no solamente tendremos los típicos de servidores Samba, FTP, SSH y más, sino que también podremos atacar de forma muy concreta un servidor web con cabeceras HTTP especiales para ver si hay vulnerabilidades, por supuesto, tendremos scripts específicos que nos permitirá explotar vulnerabilidades al PHP de los servidores web, por supuesto, también podremos explotar vulnerabilidades a los diferentes servidores Samba, FTP y SSH, es decir, vulnerabilidades conocidas que ya han sido solucionadas, pero que es posible que todavía el objetivo las tenga operativas. Por este motivo es tan importante actualizar cuanto antes todos los servicios que tengamos expuestos a Internet, y también servicios que tegnamos expuestos a la red local, porque con un malware podría explotar una vulnerabilidad y convertirse el ataque de penetración en un ataque de ransomware para cifrar todos los archivos y carpetas.

Os recomendamos visitar la web oficial de uso de NSE donde encontraréis todos los scripts que hay actualmente en esta gran base de datos, además, tendréis ejemplos de cómo utilizarlos.