Nmap
Nmap, abreviatura de Network Mapper, es una herramienta de código abierto utilizada para el escaneo de redes y la auditoría de seguridad. Desarrollado por Gordon Lyon, también conocido como Fyodor, se ha convertido en una herramienta esencial para administradores de redes, ingenieros de seguridad y hackers éticos. Nmap ayuda a descubrir hosts y servicios en una red, así como a identificar posibles vulnerabilidades.
Principales funcionalidades de Nmap
Descubrimiento de redes: Identifica dispositivos conectados en una red y muestra información sobre sus direcciones IP, sistemas operativos y puertos abiertos.Auditoría de seguridad: Permite descubrir vulnerabilidades en redes, como servicios expuestos o puertos no seguros, lo que lo convierte en una herramienta clave para realizar pruebas de penetración.Detección de servicios: Identifica qué servicios están ejecutándose en un puerto abierto, como servidores web, FTP o bases de datos, ayudando a mapear la infraestructura de red.Detección de sistemas operativos: Nmap puede identificar el sistema operativo (OS fingerprinting) y la versión exacta del software que se está ejecutando en un dispositivo.Escaneo de puertos: Identifica qué puertos están abiertos, filtrados o cerrados, permitiendo un análisis detallado de la configuración de seguridad de una red.Generación de informes detallados: Nmap proporciona resultados completos en diferentes formatos, como XML o HTML, útiles para auditorías y reportes.

Puertos
El descubrimiento de puertos es el proceso mediante el cual un dispositivo o software identifica los puertos abiertos en un sistema o red. Este proceso se realiza generalmente enviando solicitudes a diferentes puertos en una dirección IP específica para determinar cuáles están activos y responden. Al descubrir los puertos abiertos, se puede obtener información sobre los servicios que están funcionando en esos puertos, lo que es crucial para la seguridad de la red, ya que permite a los administradores identificar posibles vulnerabilidades o configuraciones incorrectas. Existen herramientas especializadas, como Nmap, que automatizan este proceso y permiten realizar análisis más detallados de la red.
Los puertos en informática son interfaces de comunicación que permiten que las aplicaciones y servicios intercambien información a través de la red o dentro de un dispositivo. Un puerto es un número que identifica de manera única una conexión específica dentro de un sistema operativo. Cada puerto está asociado a un protocolo y puede ser usado para diferentes tipos de comunicación, como HTTP en el puerto 80 o HTTPS en el puerto 443. Hay 65,535 puertos numerados que se dividen en tres rangos: los puertos bien conocidos (0-1023), que son asignados a servicios estándar como DNS en el puerto 53; los puertos registrados (1024-49151), que son asignados a servicios y aplicaciones específicas; y los puertos dinámicos o privados (49152-65535), que son utilizados temporalmente por aplicaciones para establecer conexiones de corto plazo. El uso correcto de puertos es esencial para la seguridad y la eficiencia de la red.
Comandos de Nmap
Nmap puede utilizarse desde una terminal, ejecutando comandos para obtener diversa información sobre una red. A continuación, se muestran algunos comandos esenciales:
Primero, necesitas identificar tu rango de red (subred). Puedes usar el comando
❏ El siguiente comando sirve para escanear todas las IP activas en la red.
ryuzak1@ubuntu: ~
❏ Este comando escanea los 1,000 puertos más comunes de la dirección IP especificada. Útil para un análisis rápido de los puertos abiertos en un host.
ryuzak1@ubuntu: ~
❏ Este comando escanea un puerto específico (en este caso el 80, usado por HTTP) para ver si está abierto o cerrado.
ryuzak1@ubuntu: ~
❏ Este comando es particularmente adecuado para escaneos rápidos y detallados, donde el objetivo es obtener información precisa sobre los puertos abiertos en un host sin preocuparse por los puertos cerrados o filtrados.
ryuzak1@ubuntu: ~
-sS: (TCP SYN scan): Este tipo de escaneo es conocido como un "escaneo sigiloso" o SYN scan. En lugar de completar una conexión TCP, envía paquetes SYN para determinar si un puerto está abierto. Si el puerto responde con un paquete SYN/ACK, se considera abierto, y Nmap no completa la conexión (TCP handshake), lo que hace que sea más difícil de detectar por algunos sistemas de seguridad.-p-: Este parámetro le indica a Nmap que debe escanear todos los puertos del sistema, desde el puerto 1 hasta el puerto 65535. Si no se especifica este parámetro, Nmap solo escanea los puertos más comunes.--open: Filtra los resultados del escaneo para que solo se muestren los puertos abiertos. Esto es útil para reducir el ruido en los resultados y centrarse en los puertos que están disponibles y podrían ser explotables.--min-rate 5000: Este parámetro define una tasa mínima de paquetes por segundo que Nmap intentará mantener durante el escaneo, en este caso 5000 paquetes por segundo. Al especificar una tasa tan alta, el escaneo se acelera, lo que puede resultar útil cuando se desea obtener resultados rápidamente, aunque podría aumentar el riesgo de detección en redes protegidas.-vvv: Activa el nivel de verbosidad más alto en Nmap. Esto significa que Nmap proporcionará información detallada y actualizada sobre el progreso del escaneo, lo que es útil para monitorear lo que está haciendo Nmap en tiempo real.-n: Le indica a Nmap que no realice resolución de DNS. Esto acelera el escaneo, ya que no se intenta resolver los nombres de dominio de las direcciones IP encontradas. Es útil cuando solo te interesa trabajar directamente con las direcciones IP.-Pn Desactiva el "ping scan" (es decir, la verificación inicial para ver si un host está activo antes de escanearlo). Este parámetro asume que el host está activo, evitando que se descarte si no responde a los pings. Es útil en redes donde los pings ICMP están bloqueados, lo que podría hacer que Nmap crea erróneamente que el host está inactivo.10.10.11.23: Es la dirección IP del host objetivo que se está escaneando. Este es el sistema en el que Nmap buscará puertos abiertos y otros servicios.-oG Puertos: Este parámetro indica que los resultados del escaneo se guarden en un archivo con formato "grepable" (fácil de buscar con herramientas de línea de comandos como grep). En este caso, el archivo se llamará Puertos. Es útil cuando deseas analizar los resultados más tarde o procesarlos automáticamente con scripts.
❏ Este comando realiza un escaneo enfocado en los puertos 22 (SSH) y 80 (HTTP) de un host, utilizando scripts NSE y detección de versiones de servicios.
ryuzak1@ubuntu: ~
La opción
-sC: Ejecuta scripts NSE predeterminados. Los scripts de Nmap Scripting Engine (NSE) permiten realizar un análisis más detallado de los servicios detectados. Al usar -sC, Nmap ejecuta un conjunto de scripts básicos para descubrir vulnerabilidades comunes, versiones de servicios, y detalles adicionales sobre los servicios que están en ejecución en los puertos abiertos.-sV: Realiza la detección de versiones. Intenta identificar qué software y versión exacta está corriendo en los puertos abiertos. Por ejemplo, si el puerto 80 está abierto, Nmap intentará descubrir si es un servidor web Apache, Nginx, y su versión específica.-p22,80: Especifica los puertos que quieres escanear, en este caso los puertos 22 (generalmente usado para SSH) y 80 (usualmente utilizado para servidores web HTTP). Esto limita el escaneo solo a esos puertos, en lugar de realizar un análisis sobre todos los puertos disponibles.-oN EscaneoDelObjetivo: Guarda los resultados del escaneo en un archivo de salida llamado targeted en formato legible por humanos (output "Normal"). Este formato es más fácil de leer para las personas, ya que muestra los resultados en texto plano con detalles claros de los servicios y puertos detectados.
Se puede hacer uso del comando
❏ Aquí el comando realiza un escaneo rápido y enfocado en los puertos UDP más comunes, con la máxima velocidad (-T5), omitiendo los puertos cerrados, y guardando los resultados en un archivo para análisis posterior.
ryuzak1@ubuntu: ~
--top-ports 500: Escanea solo los 500 puertos más comunes. Nmap tiene una lista de los puertos más frecuentemente utilizados, y este parámetro te permite limitar el escaneo solo a estos puertos, en lugar de hacer un escaneo completo de los 65,535 puertos UDP.-sU: Especifica que el escaneo será sobre el protocolo UDP (User Datagram Protocol), en lugar de TCP. Los escaneos UDP son más lentos y menos fiables que los escaneos TCP, pero esenciales para identificar servicios que operan en este protocolo, como DNS, SNMP, y DHCP.-T5: Especifica un nivel de agresividad alto en términos de velocidad y tiempo de espera para el escaneo (en este caso, "Insane"). -T5 maximiza la velocidad del escaneo, pero podría generar falsos negativos o activar medidas de seguridad como sistemas de detección de intrusiones (IDS).
❏ Este comando escanea el puerto UDP 69 del host 10.10.11.23 para identificar qué servicio está corriendo (probablemente TFTP), su versión, y obtener información adicional mediante scripts NSE.
ryuzak1@ubuntu: ~
Tipos de scripts en Nmap NSE
Los scripts NSE (Nmap Scripting Engine) de Nmap son pequeños programas que amplían la funcionalidad básica del escáner de puertos, permitiendo realizar análisis más avanzados y detallados en los sistemas y redes objetivo. Estos scripts son escritos en Lua, un lenguaje de programación ligero, y permiten a Nmap ejecutar tareas adicionales que van más allá de la simple detección de puertos abiertos.
Auth: Scripts relacionados con la autenticación, como pruebas de credenciales y métodos de autenticación.Default: Scripts que se ejecutan por defecto cuando se utiliza la opción -sC. Son de bajo riesgo y generalmente útiles para la detección de servicios básicos.Discovery: Scripts diseñados para descubrir información general sobre un objetivo, como servicios o nombres de host.External: Scripts que requieren acceso a Internet, como consultas a bases de datos externas.Intrusive: Scripts que pueden alterar o interferir con los sistemas objetivo, ya que realizan pruebas de seguridad más profundas.Malware: Dedicados a detectar la presencia de malware o software malicioso en el sistema objetivo.Vuln: Scripts enfocados en buscar vulnerabilidades conocidas en los servicios del sistema.Safe: Scripts que no generan ningún impacto negativo sobre el sistema objetivo; son seguros de ejecutar.
Haciendo uso del comando
El comando busca en el sistema archivos con extensión .nse (scripts de Nmap), luego extrae las líneas que contienen la palabra "categories" dentro de esos scripts, filtra y extrae las categorías específicas entre comillas, y finalmente ordena esas categorías de forma única.
❏ El siguiente comando combina los scripts categorizados como "vuln" y "safe", es decir, ejecuta scripts que detectan vulnerabilidades y aquellos marcados como seguros de ejecutar. No significa que haya un balance entre ellos, sino que simplemente aplica ambos tipos de scripts en un solo escaneo.
ryuzak1@ubuntu: ~
En este caso los scripts que se ejecutaron, tanto los de la categoría "vuln" (vulnerabilidades) como los de "safe" (seguros), no detectaron nada significativo en los puertos abiertos (22 y 80).
❏ El comando realiza un escaneo enfocado en enumerar los directorios y recursos accesibles a través del puerto 80 (HTTP) en el host 10.10.11.23.
ryuzak1@ubuntu: ~
--script http-enum: Ejecuta el script http-enum para enumerar archivos y directorios en el servidor web.sea.htb: Utiliza el nombre de dominio en lugar de la IP para el escaneo
Asegúrate de que el dominio sea.htb esté resolviendo correctamente en tu máquina. Puedes agregarlo al archivo