Tutorial básico de NMAP

“Este tutorial explica cómo funciona Nmap y cómo instalarlo y usarlo desde la terminal.

Nmap (Network Mapper) es probablemente el escaneo de red más utilizado, al menos entre los usuarios de Linux”.

Nmap permite ejecutar las siguientes tareas:

  • Escaneo de puertos
  • Escaneo de rango de IP
  • Descubrimiento de hosts
  • Escaneo de subredes
  • Diagnóstico de problemas de red
  • Detección de vulnerabilidades
  • Explotación de vulnerabilidades

Este tutorial cubre la exploración de puertos, la detección de hosts y la exploración de rangos de IP y subredes. Al final, el lector puede continuar con los enlaces centrados en Nmap para la detección y explotación de vulnerabilidades con Nmap NSE (Nmap Scripting Engine) .

El contenido está altamente optimizado para usuarios sin experiencia previa con Nmap. Al leer este tutorial y aplicar los ejemplos prácticos, el lector adquirirá suficiente conocimiento sobre cómo funciona Nmap, su uso y comprensión de los resultados para continuar con las lecturas de uso avanzado recomendadas después de este contenido.

Todos los pasos que se describen a continuación contienen capturas de pantalla, lo que facilita que todos los usuarios de Linux los sigan independientemente del nivel de experiencia.

Índice:

Instalación de Nmap (desde fuentes, repositorios de distribución basados ​​en Debian y RedHat)

Esta sección explica cómo instalar Nmap en distribuciones de Linux basadas en Debian como Ubuntu, distribuciones de Linux basadas en RedHat como CentOS y fuentes para todas las distribuciones de Linux.

Para instalar nmap en distribuciones de Linux basadas en Debian, ejecute el siguiente comando.

sudo apt instalar nmap

Para las distribuciones basadas en RedHat, ejecute el comando que se muestra en la siguiente captura de pantalla.

sudo yum instalar nmap

Para compilar Nmap desde las fuentes, visite https://nmap.org/download.html#source y descargue la última versión estable de Nmap desde el enlace ubicado en la sección que se muestra en la captura de pantalla a continuación (Flecha).

Una vez descargado, extraiga el archivo tar.bze2 como se muestra a continuación.

Nota: Reemplace < 7.93 > con la versión descargada de Nmap.

tar -xf nmap-7.93.tar.bz2

Una vez extraído, vaya al directorio nmap.

cd nmap-<Versión>/

Ejecute el script de configuración.

./configurar

Finalmente, termine la compilación ejecutando make y make install .

sudo hacer && hacer instalar

Cómo funcionan los tipos de escaneo básicos de Nmap

Los escaneos regulares de Nmap se llevan a cabo a través de escaneos TCP y SYN . Cuando el proceso de escaneo es TCP , se establece una conexión con el destino. Con un escaneo SYN , la conexión se cancela o se interrumpe antes de establecerse.

La siguiente figura muestra cómo se establecen las conexiones: primero, la computadora (PC 1) que intenta establecer la conexión envía un paquete SYN solicitando la sincronización del dispositivo de destino. Si el dispositivo de destino (PC 2) está disponible para establecer la conexión, responde con otro paquete SYN que permite la sincronización y con un paquete ACK (Acknowledge) que confirma la recepción del primer paquete SYN enviado por la computadora que solicitó la conexión, luego la computadora que solicitó la conexión (PC 1) envía un paquete ACK que confirma la recepción de los paquetes SYN y ACK enviados por el dispositivo de destino (PC 2).

>Cuando se establece una conexión, los cortafuegos la detectan y la registran; es por eso que se implementó el escaneo SYN , el escaneo SYN o Stealth envía un paquete SYN , y después de recibir las respuestas de destino en lugar de responder con un paquete ACK , envía un paquete RST (reinicio) para cancelar la conexión antes de que se estableciera como se muestra en la siguiente imagen:

>De esta manera, la conexión no se registra, pero aún debe tratar con los sistemas de detección de intrusos con capacidades de detección de paquetes SYN . Para evitar la detección, puede utilizar técnicas de escaneo sigiloso .

Fases de escaneo de Nmap

Nmap pasa por 11 etapas durante el proceso de escaneo dependiendo de las banderas pasadas; algunos de ellos son opcionales según los parámetros especificados. Por ejemplo, los scripts previos y posteriores al escaneo se ejecutan solo si el usuario implementa NSE para la detección o explotación de vulnerabilidades.

Las 11 fases posibles se enumeran a continuación:

  1. Script de escaneo previo : la opción «Escaneo previo de script» llama scripts desde el Nmap Scripting Engine (NSE) para la fase de escaneo previo; esta etapa solo tiene lugar cuando se utiliza el NSE.
  2. Enumeración de objetivos: en esta fase, Nmap procesa información sobre los objetivos a escanear, como direcciones IP, hosts, rangos de IP, etc.
  3. Descubrimiento de host (escaneo de ping): Nmap aprende qué objetivos están en línea o son alcanzables.
  4. Resolución de DNS inverso: Nmap busca nombres de host para las direcciones IP.
  5. Escaneo de puertos: Nmap descubrirá los puertos y su estado: abiertos, cerrados o filtrados.
  6. Detección de versión: en esta fase, nmap intentará aprender la versión del software que se ejecuta en los puertos abiertos descubiertos en la fase anterior, como qué versión de apache o FTP.
  7. Detección de sistema operativo: nmap intenta detectar el sistema operativo del objetivo.
  8. Traceroute: nmap descubrirá la ruta del objetivo en la red o todas las rutas en la red.
  9. Escaneo de guiones: esta fase es opcional; en esta fase se ejecutan los scripts NSE; Los scripts NSE se pueden ejecutar antes del escaneo, durante el escaneo y después, pero son opcionales.
  10. Salida: Nmap nos muestra información sobre los datos recopilados.
  11. Script posterior al escaneo: fase opcional si los scripts se definieron para ejecutarse después del escaneo.

Un simple escaneo de nmap sin un indicador que no sea -v (Verbosidad) mostrará algunas de las fases enumeradas anteriormente.

Nota: cuando no se especifican puertos, de forma predeterminada, Nmap escanea los 1000 puertos más utilizados, incluidos todos los protocolos.

nmap -v linuxhint.com

>Estados de puerto y tipos de escaneo de puerto con Nmap

Una de las características principales de Nmap es la capacidad de escanear puertos aprendiendo su estado, la versión del software escuchando detrás de ellos e incluso usar puertos como condiciones para escaneos IP masivos o múltiples.

Al buscar servicios, Nmap puede informar hasta 6 estados o condiciones de los puertos escaneados:

  • Abierto: el puerto está abierto y una aplicación está escuchando a través de él.
  • Cerrado: el puerto está cerrado y ninguna aplicación está escuchando.
  • Filtrado: un firewall evita que nmap llegue al puerto.
  • Sin filtrar: se puede acceder al puerto, pero nmap no puede verificar su estado.
  • Abierto|filtrado: Nmap no puede determinar si un puerto está abierto o filtrado.
  • Cerrado|Filtrado: Nmap no puede determinar si un puerto está cerrado o filtrado.

Como se dijo en el apartado anterior. Cuando el usuario no especifica puertos, por defecto, Nmap escanea los 1000 puertos más populares y usados.

El indicador de Nmap más básico para especificar un puerto es -p, seguido del número de puerto o protocolo.

En el ejemplo práctico a continuación, el usuario escanea el puerto 22 en el destino linuxhint.com .

nmap -p 22 linuxhint.com

>Como puede ver en la captura de pantalla anterior, el puerto 22 está filtrado por un firewall.

En lugar del número de puerto, el usuario también puede definir el nombre del protocolo. A continuación, el usuario ejecuta el mismo escaneo pero especifica el nombre de protocolo ssh en lugar del número de puerto 22 .

nmap -p ssh linuxhint.com

>Hay banderas y caracteres para definir más de un puerto específico para escanear. La coma ( , ) permite definir diferentes puertos de diferentes rangos.

En la siguiente captura de pantalla, el usuario usa comas para escanear los puertos 22, 80 y 179. Como puede ver, el puerto 80 se definió por su nombre de protocolo, http .

nmap -p 22,http,179 linuxhint.com

>Como puede ver, el puerto 80 se encontró abierto mientras que el resto fue filtrado por un firewall.

El guión es un carácter importante cuando se escanean ambos puertos o rangos de IP.

En el siguiente ejemplo, se implementa un guión para definir un rango de puertos entre 21 y 30.

nmap -p 20-30 linuxhint.com

>Nmap permite definir más que el rango de puertos mediante la implementación de comas y guiones, como se muestra a continuación, donde se escanean los rangos de puertos del 70 al 90 y del 20 al 40.

nmap -p 70-90,20-40 linuxhint.com

>Al escanear rangos de puertos, el usuario puede excluir puertos o rangos específicos del proceso de escaneo implementando el indicador –exclude-ports .

En el ejemplo a continuación, el usuario escanea el rango de puertos desde el puerto 20 al puerto 80 pero excluye los puertos 30 a 40. El usuario también puede excluir un solo puerto o diferentes puertos separados por una coma.

nmap -p 20-80 linuxhint.com –exclude-ports 30-40

>Si el usuario quiere escanear todos los puertos en el objetivo, tiene dos opciones. Puede definir todo el rango de 1 a 65535, como se muestra a continuación.

nmap -p0-65535 192.168.0.1

>La opción más práctica para escanear todos los puertos es implementar dos guiones, antes y después de la p, como se muestra a continuación.

nmap -p- 192.168.0.1

>Definición de objetivos en Nmap

Esta sección describe diferentes técnicas para definir objetivos de escaneo, incluidos varios objetivos.

En la sección anterior, se usaron guiones para definir rangos de puertos.

Los guiones también se pueden usar para definir rangos de IP, como se muestra en la siguiente captura de pantalla, donde el usuario define un rango de IP que comienza en 192.168.0.1 y termina en 192.168.0.120.

Nmap 192.168.0.1-120

>En el siguiente ejemplo, se definen dos rangos en los dos últimos octetos (200-210 y 80-90).

nmap -p80,22,443 186.33.200-210.80-90

Los usuarios pueden utilizar el formato CIDR . En el siguiente ejemplo, se analiza la subred /24.

El indicador -sS le indica a Nmap que ejecute un escaneo SYN sin ser detectado por los firewalls.

Nota: el escaneo SYN requiere privilegios de root.

sudo nmap-sS 192.168.0.0/24

En el siguiente ejemplo, se implementa el comodín (*) para indicar a Nmap que escanee todo el último octeto de la dirección IP, de 0 a 255.

El indicador -sn (barrido de ping) le indica a Nmap que omita el escaneo de puertos, limitándose al descubrimiento de host.

nmap-sn 192.168.0.*

En la siguiente captura de pantalla, el usuario implementa dos comodines para escanear los dos últimos octetos. El indicador -sP (barrido de ping) es equivalente al anterior (el indicador -sn reemplaza a -sP ),

nmap-sP 192.168.*.*

>Los comodines y los guiones se pueden combinar para la definición de objetivos personalizados.

nmap -sp 186.33.205-210.*

Los objetivos también se pueden cargar desde la lista de texto sin formato de un objetivo.

La siguiente lista se denomina scantargets.txt y contiene un nombre de dominio, una dirección IP, una subred y rangos de IP definidos con un guión y un comodín.

>El indicador -iL (Lista) seguido de la ruta a la lista de objetivos iniciará el análisis contra los objetivos enumerados en el archivo.

nmap -sn -iL scantargets.txt

El usuario puede escanear objetivos definidos en una lista y excluir otros específicos.

En el siguiente ejemplo, el usuario analiza objetivos definidos en el archivo scantargets.txt , omitiendo el objetivo 192.168.0.0/24 con la opción –exclude .

nmap -sn -iL escanear objetivos.txt –excluir 192.168.0.0/24

El indicador -iR (aleatorio) indica a Nmap que escanee objetivos aleatorios. Con esta bandera, Nmap escanea objetivos generados aleatoriamente, muchos de los cuales pueden ser hosts muertos.

Este indicador debe ir seguido del número de objetivos aleatorios que el usuario desea que se generen.

En el siguiente ejemplo, el indicador -iR se usa para escanear 100 objetivos aleatorios.

nmap-iR 100

Descubrimiento de host con Nmap

Algunas opciones de descubrimiento de hosts ya se implementaron en la sección anterior con indicadores -sn y -sP, que le indican a Nmap que omita el proceso de escaneo de puertos, limitándose a descubrir hosts activos.

Hay banderas adicionales para ejecutar tareas de descubrimiento con Nmap.

El indicador -PS (SYN Ping) envía un paquete TCP vacío con el indicador SYN establecido. En caso de que el puerto remoto esté abierto cuando el objetivo responde a un paquete SYN/ACK , Nmap cancelará la conexión enviando un paquete RST en lugar de uno ACK .

nmap -PS 192.168.0.0/24

El PA (ACK Ping) envía un paquete TCP con el indicador ACK establecido. Este paquete envía mensajes de reconocimiento a conexiones inexistentes generando paquetes RST por parte del host remoto, revelando su existencia.

nmap -Pn -PA50-100 nic.ar

El indicador -PU (UDP Ping) envía paquetes UDP a direcciones remotas. Si no se especifican los puertos, los paquetes se envían a los puertos 40 y 125.

sudo nmap -PU 192.168.0.0/24

Envía paquetes IP con los encabezados de un protocolo diferente. Si no se especifica, de forma predeterminada, los encabezados son protocolos ICMP , IGMP e IP-en-IP .

sudo nmap -PO 192.168.0.0/24

La siguiente lectura recomendada para continuar con Nmap son las banderas de Nmap y lo que hacen , que describe banderas adicionales e introduce al lector al NSE (Nmap Scripting Engine).

Conclusión

Como puede ver, Nmap es una herramienta muy poderosa pero fácil de aprender. Todo usuario de la red que trabaje con un terminal puede comenzar siguiendo ejemplos como el que se ofrece arriba.

Se pueden usar otras funcionalidades de Nmap como traceroute para diagnosticar problemas de red, o se puede usar la suite NSE para detectar y explotar vulnerabilidades.

Las instrucciones de este tutorial son válidas para todas las distribuciones de Linux. Es muy recomendable aplicar todos los ejemplos dados para incorporar el conocimiento.

Gracias por leer nuestro tutorial básico de Nmap. Continúe siguiendo Linux Hint para obtener más contenido profesional de Linux y redes.