Cómo usar scripts de NMAP Script Engine (NSE) en Linux

Cómo usar scripts de NMAP Script Engine (NSE) en Linux

NMAP es una herramienta de exploración y escáner de exploración de redes de comandos populares, potentes y de línea multiplataforma. También puede ayudarlo a obtener una descripción general de los sistemas que conectaron su red; Puede usarlo para encontrar todas las direcciones IP de hosts en vivo, escanear puertos y servicios abiertos que se ejecutan en esos hosts, y mucho más.

Una de las características interesantes de Nmap es el Motor de script nmap (NSE), que le brinda aún más flexibilidad y eficiencia. Le permite escribir sus propios scripts en el lenguaje de programación de Lua, y posiblemente compartir estos scripts con otros usuarios de NMAP.

Leer también: 29 Ejemplos prácticos de comandos NMAP para Linux

Hay cuatro tipos de scripts NSE, a saber:

  • Scripts de prerule - son scripts que se ejecutan antes de cualquiera de las operaciones de escaneo de NMAP, se ejecutan cuando NMAP aún no ha recopilado ninguna información sobre un objetivo.
  • Guiones de host - son scripts ejecutados después de que NMAP ha realizado operaciones normales como el descubrimiento del host, el escaneo de puertos, la detección de versiones y la detección del sistema operativo contra un host de destino.
  • Scripts de servicio - ¿Los scripts se encuentran contra servicios específicos que escuchan en un host de destino?.
  • Scripts posteriores - ¿Se ejecutan los scripts después de que NMAP ha escaneado a todos sus hosts objetivo?.

Luego, estos scripts se agrupan en varias categorías, incluidas las de la autenticación (auténtico), descubriendo los anfitriones (transmisión), bruta fuerza ataca para adivinar credenciales de autenticación (bruto), descubriendo más sobre una red (descubrimiento), causando una negación del servicio (dos), explotando algo de vulnerabilidad (explotar), etc. Varios scripts pertenecen a la categoría predeterminada.

Nota: Antes de avanzar más, debe tomar nota de estos puntos clave:

  • No ejecute scripts de terceros sin mirarlos críticamente o solo si confía en los autores. Esto se debe a que estos scripts no se ejecutan en una caja de arena y, por lo tanto, podrían dañar inesperadamente o maliciosamente su sistema o invadir su privacidad.
  • En segundo lugar, muchos de estos guiones pueden ejecutarse como un prerule o aviso guion. Teniendo en cuenta esto, se recomienda utilizar una prerule para fines de consistencia.
  • Nmap usa el scripts/script.db base de datos para determinar los scripts y categorías predeterminados disponibles.

Para ver la ubicación de todos los scripts NSE disponibles, ejecute la utilidad de localización en la terminal, como esta:

$ localización *.NSE /usr/share/nmap/scripts/acarsd-info.nse/usr/share/nmap/scripts/dirección-info.nse/usr/share/nmap/scripts/afp-bruto.nse/usr/share/nmap/scripts/afp-ls.nse/usr/share/nmap/scripts/afp-path-vuln.nse/usr/share/nmap/scripts/afp-serverinfo.nse/usr/share/nmap/scripts/afp-showmount.nse/usr/share/nmap/scripts/AJP-Auth.nse/usr/share/nmap/scripts/AJP-Brute.nse/usr/share/nmap/scripts/AJP-Headers.nse/usr/share/nmap/scripts/aJP-métodos.nse/usr/share/nmap/scripts/aJP-request.nse/usr/share/nmap/scripts/allseeeingeye-info.nse/usr/share/nmap/scripts/amqp-info.nse/usr/share/nmap/scripts/asn-query.NSE .. 

Los scripts de NSE se cargan utilizando el --guion Flag, que también le permite ejecutar sus propios scripts proporcionando categorías, nombres de archivos de script o el nombre de directorios donde se encuentran sus scripts.

La sintaxis para habilitar scripts es la siguiente:

$ NMAP -SC Target #Load Scripts predeterminados o $ NMAP -Script File Name | Categoría | Directorio | Expresión, ... Target 

Puede ver una descripción de un script con el --guión de script opción. Además, puede pasar argumentos a algunos scripts a través del --script-args y --script-args-archivo Opciones, el último se utiliza para proporcionar un nombre de archivo en lugar de una línea de comandos Arg.

Para realizar un escaneo con la mayoría de los scripts predeterminados, use el -Carolina del Sur bandera o alternativamente usar --script = predeterminado como se muestra.

$ nmap -sc scanme.nmap.org o $ nmap --script = default ScanMe.nmap.org o $ nmap --script predeterminado ScanMe.nmap.organizar 
Salida de muestra
Comenzando nmap 7.01 (https: // nmap.org) en 2017-11-15 10:36 IST IST NMAP SCAN Report para ScanMe.nmap.org (45.33.32.156) El host está arriba (0.Latencia 0027s). No se muestra: 999 Puertos filtrados Servicio Estatal de Puerto 80/TCP Abrir http | _http-title: adelante y escanear! NMAP HECHO: 1 dirección IP (1 host) escaneada en 11.74 segundos 

Para usar un script para el propósito apropiado, puede, en primer lugar, obtener una breve descripción de lo que realmente hace, por ejemplo, cabezales http.

$ nmap --script-help http-headers scanme.nmap.organizar 
Salida de muestra
Comenzando nmap 7.01 (https: // nmap.org) al 2017-11-15 10:37 IST HTTP-HEADER CATEGORES: Discovery Safe https: // nmap.org/nsedoc/scripts/http-headers.HTML realiza una solicitud principal de la carpeta raíz ("/") de un servidor web y muestra los encabezados HTTP devueltos. 

Cargando scripts NSE para realizar escaneos NMAP

Puede seleccionar o cargar scripts para realizar un escaneo en diferentes métodos explicados a continuación.

Usando el nombre del script

Una vez que sepa lo que hace un script, puede realizar una exploración al usarlo. Puede usar un script o ingresar una lista separada por comas de nombres de scripts. El siguiente comando le permitirá ver los encabezados HTTP configurados en el servidor web en el host de destino.

$ nmap --script http-headers scanme.nmap.organizar 
Escanear encabezados HTTP
Comenzando nmap 7.01 (https: // nmap.org) en 2017-11-15 10:39 Informe de escaneo NMAP ist para ScanMe.nmap.org (45.33.32.156) El host está arriba (0.27S LATENCIA). No se muestra: 996 Puertos cerrados Servicio Estatal de puertos 22/TCP Open SSH 80/TCP Open HTTP | HTTP-HEADERS: | Fecha: miércoles 15 de noviembre de 2017 05:10:04 GMT | Servidor: apache/2.4.7 (Ubuntu) | Acepta-Rangos: bytes | Vary: Aceptar en codificación | Conexión: Cerrar | Tipo de contenido: texto/html | | _ (Tipo de solicitud: cabezal) 179/TCP Filtrado BGP 31337/TCP Open Elite NMAP LIS: 1 dirección IP (1 host) escaneada en 20.96 segundos 

Uso de categorías

También puede cargar scripts de una categoría o desde una lista de categorías separadas por comas. En este ejemplo, estamos utilizando todos los scripts en la categoría predeterminada y de transmisión para llevar a cabo un escaneo en el host 192.168.56.1.

$ nmap --script predeterminado, transmisión 192.168.56.1 
Escanear un host

Usando * comodín

Esto es útil cuando desea seleccionar scripts con un patrón de nombre de d. Por ejemplo, cargar todos los scripts con nombres que comienzan con ssh, Ejecute el comando a continuación en el terminal:

$ nmap --script "ssh-*" 192.168.56.1 
Cargar scripts usando comodines-

Usando expresiones booleanas

También puede seleccionar scripts utilizando expresiones booleanas que puede construir utilizando el y, o, y no operadores. Y los nombres en una expresión booleana pueden ser una categoría, un nombre de archivo de guion.db, o todo.

El siguiente comando cargará scripts desde las categorías predeterminadas o de transmisión.

$ nmap --script "predeterminado o transmisión" 192.168.56.10 

Que es equivalente a:

$ nmap --script predeterminado, transmisión 192.168.56.10 

Para cargar todos los scripts omitiendo los de los vuln categoría, ejecute este comando en la terminal.

$ nmap --script "no vuln" 192.168.56.10 

El siguiente comando parece un poco complicado, pero es fácil de entender, selecciona scripts en las categorías predeterminadas o de transmisión, dejando de lado a los que tienen nombres que comienzan con SSH-::

$ nmap --script "(predeterminado o transmisión) y no ssh-*" 192.168.56.10 

Es importante destacar que es posible combinar categorías, nombres de scripts, un directorio que contenga sus scripts personalizados o una expresión booleana para cargar scripts, así:

$ NMAP-Script Broadcast, Vuln, SSH-Auth-Methods,/Path/To/Custom/Scripts 192.168.56.10 

Pasando argumentos a los guiones de NSE

A continuación se muestra un ejemplo que muestra cómo pasar argumentos a los scripts con el -script-args opción:

$ nmap --script mysql-audit --script-args "mysql-audit.nombre de usuario = 'root', \ mysql-audit.contraseña = 'Password_here', MySQL-Audit.FileName = 'nselib/data/mysql-cis.auditoría'" 

Para pasar un número de puerto, use el -pag Opción NMAP:

$ nmap -p 3306 --script mysql-audit --script-args "mysql-audit.nombre de usuario = 'root', \ mysql-audit.contraseña = 'Password_here', MySQL-Audit.FileName = 'nselib/data/mysql-cis.auditoría'" 

El comando anterior ejecuta una auditoría de la configuración de seguridad del servidor de base de datos MySQL en partes de la Cis mysql v1.0.2 punto de referencia. También puede crear sus propios archivos de auditoría personalizados útiles para otras auditorías MySQL.

Eso es todo por ahora. Puede encontrar más información en la página del hombre NMAP o consulte el uso de NSE.

Para comenzar a escribir sus propios scripts NSE, consulte esta guía: https: // nmap.org/libro/nse-tutorial.html

Conclusión

Nmap es una herramienta realmente poderosa y útil que cada administrador del sistema o red necesita en su arsenal de seguridad - NSE Simplemente le agrega más eficiencia.

En este artículo, te presentamos el Motor de script nmap y observó cómo encontrar y usar los diversos scripts disponibles en diferentes categorías. Si tiene alguna pregunta, no dude en escribirnos a través del formulario de comentarios a continuación.