GoRiX blog

A blog about things

Nmap y Scripting Engines

June 24, 2024 — n4ch0m4n

A esta altura creo que debe haber muy pocos usuarios de GNU/Linux que no sepan que es Nmap, pero bueno vamos por ello.

Nmap (Network Mapper) es una poderosa herramienta de código abierto utilizada para escanear y mapear redes informáticas. Es ampliamente reconocida como una de las utilidades de escaneo de red más populares y versátiles.

Nmap permite a los administradores de red y expertos en seguridad obtener información detallada sobre los dispositivos y servicios que están activos en una red. La herramienta utiliza técnicas de escaneo avanzadas para descubrir hosts, puertos abiertos, protocolos en uso y otros detalles relevantes sobre los sistemas objetivo.

Ahora bien, hasta acá nada nuevo, pero vamos por algo, que según veo, pocos conocen…scripts de Nmap!


Los scripts NSE (Nmap Scripting Engine) son una característica clave de Nmap. El NSE permite a los usuarios expandir las capacidades de Nmap al escribir y ejecutar scripts personalizados. Estos scripts están escritos en el lenguaje de scripting Lua y se utilizan para automatizar tareas específicas de detección y enumeración durante el escaneo de red.

Los scripts NSE pueden realizar una variedad de funciones, como la detección de servicios y puertos, la enumeración de sistemas operativos, la detección de vulnerabilidades conocidas, la extracción de información y muchas otras acciones relacionadas con la seguridad de la red.

Los scripts en Nmap puede ser llamados por el script en sí o por categorías; vamos por los scripts en sí:

nmap --script-help http-sql-injection


Podrás ver en la salida, por ej:

http-sql-injection
Categories: intrusive vuln
https://nmap.org/nsedoc/scripts/http-sql-injection.html
 Spiders an HTTP server looking for URLs containing queries vulnerable to an SQL
 injection attack. It also extracts forms from found websites and tries to identify
 fields that are vulnerable.
 The script spiders an HTTP server looking for URLs containing queries. It then
 proceeds to combine crafted SQL commands with susceptible URLs in order to
 obtain errors. The errors are analysed to see if the URL is vulnerable to
 attack. This uses the most basic form of SQL injection but anything more
 complicated is better suited to a standalone tool.
 We may not have access to the target web server's true hostname, which can prevent access to
 virtually hosted sites.


El nombre del script, las categorías que integran, URL de la documentación y demás info integran lo que la ayuda proporciona. Pero de acá quiero tomar la categoría.

Las categorías nos permiten correr varios scripts a la vez sobre un objetivo. Primero listemos las categorías:

-auth= scripts relacionados con la autenticación de usuarios
-broadcast= en esta categoría se engloban scripts que utilizan peticiones de transmisión para recopilar información de los host que no se listan por broadcasting
-brute= esta categoría es para scripts que utilizan el sistema de fuerza bruta para averiguar las credenciales de usuario en un determinado servicio
-default= estos son los scripts que se ejecutan cuando se ejecuta la opción -sC
-discovery= scripts relacionados con el descubrimiento de servicios y hosts
-dos= esta categoría es para scripts relacionados con ataques de denegación de servicio
-exploit= esta categoría es para scripts que explotan vulnerabilidades de seguridad
-external= esta categoría es para scripts que utilizan datos o servicios de terceros
-fuzzer= esta categoría es para scripts NSE que se centran en fuzzing (envían campos inesperados o aleatorios en cada paquete)
-intrusive= esta categoría es para scripts que pueden bloquear algo o generar mucho ruido en la red
-malware= scripts relacionados con la detección de malware
-safe= esta categoría es para scripts que se consideran seguros en todas las situaciones
-version= esta categoría contiene scripts que extienden la funcionalidad de la detección de versiones
-vuln= esta categoría es para scripts relacionados con vulnerabilidades de seguridad


Si quieren ver que script integran cada categoría, pueden verlo en https://nmap.org/nsedoc/categories/ o bien corriendo:

nmap --script-help <nombre_categoría>


Tener en cuenta que un script puede estar en más de una categoría.

Vamos con un ejemplo práctico, corramos un escaneo de vulnerabilidades (categoria vuln) en un servidor local y vulnerable:

sudo nmap -script vuln 192.168.1.2

Resultados (no pongo todo, pongo los relevantes):

SSL


CSRF


XSS y SQLI

Ahora vamos con un caso real, en un servidor remoto con algunas vulnerabilidades:

sudo nmap -script vuln www.seguridadycontrol.com.mx

Resultados (no pongo todo, pongo los relevantes):

SSL


DOS


Bueno simplemente esto, post corto y directo simplemente para que sepan que tienen en nmap algo más que un simple escáner de puertos y servicios, sino también un potente escáner de vulnerabilidades!

Tags: Seguridad, Redes