Noticias

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. Este conjunto de scripts nos permitirá automatizar muchas acciones, como realizar ataques de fuerza bruta a servidores Samba, servidores FTP, servidores SSH, comprobar si un servidor web tiene una vulnerabilidad ya conocida, y mucho más.

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

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.

El artículo Realiza escaneos de puertos con Nmap a cualquier servidor o sistema se publicó en RedesZone.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.