Nmap NSE Scripting. Breve reseña para creación y ejecución scripts NSE nmap. Parte 1

Desde hace algunas versiones, Nmap ha potenciado su motor de Scripting. Una funcionalidad que permite la ejecución de scripts para la realización de diversas tareas de descubrimiento, detección, expotación de diversas vulnerabilidades, etc. Nmap, además, incluye diversos scripts, programados en Lua, preparados para ejecutar y/o modificar según nuestras necesidades.

Ya disponible la Parte 2 de esta serie dedicada a Nmap Scripting.

nmap

Desde aquí vamos a realizar una breve reseña y explicación de como ejecutar y crear nuestros propios scripts nmap mediante Nmap Scripting Engine (NSE).

Cuando nmap detecta un puerto o un host, inmediatamente realiza una llamada al intérprete Lua con el script correspondiente, de esta forma, las funcionalidades de nmap son mucho mayores. Vamos a ver todo esto….

Ejecutando scripts NSE.

Para habilitar el motor NSE usaremos la opción -sC. De esta forma, por defecto, cuando nmap detecta un host o puerto, automáticamente busca el script correspondiente para las pruebas necesarias. con –sC activamos, entonces, la forma más básica de ejecución de scripts con las categorías de safe e intrusive (lo vemos un poco más abajo). También se puede hacer con -A:

Para ejecutar un script, tan solo tenemos que suar las notación:

--script (categoría|directorio|nombre|all)
Tenemos también:
  • –script-args para pasar argumentos al script

  • –script-trace nos muestra información de comunicaciones internas realizadas por el script

  • –script-updatedb para actualizar la base de datps de los script contenida en /scripts
Dentro de categoría tenemos las siguientes:
  • safe modo inofensivo para el objetivo.
  • intrusive algo más intrusivo que el anterior pero, casi seguro, no causará problemas en el objetivo.Tener en cuenta wue usará algunas contraseñas prefijadas en los scripts y es posible que genere logs en el objetivo. Hay que tener cuidado pues.
  • malware para descubrimiento de malware y similares
  • version mayor potencia en la detección de versiones. Requiere -sV
  • discovery distintas pruebas de descubrimento en una red «interrogando» al los distintos servicios
  • vulnerability testeo de una vulnerabilidad en concreto

Vamos con algunos ejemplos. Buscando una vulnerabilidad (Webdav) en concreto:

nmap -PN -p81 –script http-iis-webdav-vuln 192.168.1.XXX

Nmap scan report for 192.168.1.XXX

Host is up (0.00s latency).
PORT   STATE SERVICE
81/tcp open  hosts2-ns
MAC Address: 00:xx:xx:F1:xx:xx (D-Link))

Nmap done: 1 IP address (1 host up) scanned in 1.74 seconds

Bien, tranquilos que no hay poroblema.  No tiene la vulnerabilidad.  Otra cosa es que nos apareciese esta información en la salida:

|_ http-iis-webdav-vuln: WebDAV is ENABLED. Vulnerable folders discovered: /secret, /webdav

Entonces el host 192.168.1.XXX si tendría la vulberabilidad.

Vamos con otro ejemplo para detectar Conficker. En este caso vamos a activar también –script-trace:

nmap –script-trace –script smb-check-vulns -p445 192.168.1.11

nos saldrá cantidad de información (por ello no pongo la captura, probad vosotros), pero al final nos sale:

Host script results:
| smb-check-vulns:
|   MS08-067: NOT VULNERABLE
|   Conficker: Likely CLEAN
|   regsvc DoS: CHECK DISABLED (add ‘–script-args=unsafe=1’ to run)
|_  SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add ‘–script-args=unsafe=1’ to r
un)

Tranquilos NOT VULNERABLE.

Si le quitamos el  –script-trace no nos sale tanta información y

nmap –script smb-check-vulns -p445 192.168.1.11

Starting Nmap 5.21

NSE: Script Scanning completed.
Nmap scan report for 192.168.1.11
Host is up (0.00s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 00:13:72:82:11:A1 (Dell)

Host script results:
| smb-check-vulns:
|   MS08-067: NOT VULNERABLE
|   Conficker: Likely CLEAN
|   regsvc DoS: CHECK DISABLED (add ‘–script-args=unsafe=1’ to run)
|_  SMBv2 DoS (CVE-2009-3103): CHECK DISABLED (add ‘–script-args=unsafe=1’ to r
un)

Nmap done: 1 IP address (1 host up) scanned in 1.77 seconds

Bien, seguimos. Supongamos que tenemos un servidor o granja Citrix. Para las vulnerabilidades y/o características específicas, descubrimiento, etc de Citrix también disponemos de scritps específicos. Es decir, nmap no provee también de script para plataformas concretas.

Vamos con un ejemplo a explorar si hay algún servidor o granja citrix y realizar una enumeración de las aplicaciones publicadas:

nse scripts scripting nmap

Enmarcado en rojo las aplicaciones publicadas.

Otra salida podría ser, a la hora de buscar el servidor y aplicaciones:

nse scripts scripting nmap 

.

Paso de argumentos a un script.

Hemos dicho que para pasar argumentos a un script usamos la opción —script-args. La forma de hacerlo lo vemos con un ejemplo.

Vamos realizar, ya descubierto los servicios de un determinado host, un ataque por fuerza bruta para descubir vulberabilidades respecto a  debilidades en las contraseñas o passoword de nuestro servidor:

nmap –script citrix-brute-xml –script-args=userdb=,passdb=passdb,ntdomain=domainp 80,443,8080

Como vemos, en el ejmplo, realizamos una llamada al script (citrix-brute-xml), pasamos con –script-args una serie de agumentos que son:

  • userdb para la base de datos de usuarios
  • passdb para la base de datos de contraseñas o passwords
  • ntdomain para el dominio nt del servidor (ya descubierto en el ejemplo anterior).

cada uno de estos valores lo sustituimos por una base de datos concreta. Nmap  en la carpeta \nselib\data dispone de dos:

  • passwords.lst
  • usernames.lst
  • ntdomain se supone lo hemos descubierto.

NOTA: En algunos scripts las bases de datos usuarios/paswwords .lst se usan por defecto.

Todo esto es válido para el servicio Citrix PN Web Agent Service de Citrix activo.

Filtrando los Scripts.

¿ Es posible usar una serie de script y otros no ?. ¿ Es posible filtralos ?. Pues si, Nmap NSE dispone un filtro usando AND y NOT para realizar este tipo de tareas. Como siempre lo vemos con un ejemplo. supongamos que queremos ejecutar una serie de scripts smb o http. Hay muchos, pero queremos usar unos y otros no. Usaremos todos los scripts http pero no los de enumeración:

–script=»http-* and not http-enum»

nse scripts scripting nmap

.

Podemos  incluso indicar el método de forma filtrada:

–script=»malware and not intrusive»

———–

Hata aquí por hoy. En la próxima y última entrega destriparemos un script, lo analizaremos, y veremos como crear nuestros propios scripts.

Esta entrada fue publicada en Herramientas, Nmap, Seguridad y redes. Guarda el enlace permanente.

6 respuestas a Nmap NSE Scripting. Breve reseña para creación y ejecución scripts NSE nmap. Parte 1

  1. Dabo dijo:

    Brutal Alfon, me encanta -;)

  2. Alfonn dijo:

    Especialmente dedicado para tí 😉

  3. Gustavo dijo:

    De donde se baja script nuevos? Como se los implementa?

  4. Alfon dijo:

    Hola Gustavo. En principio con cada nuva versión los scripts añadidos o modificados vienen ya por defecto. También loss puedes descargar desde aquí http://nmap.org/nsedoc/

  5. Pingback: Nmap Scripting Engine (NSE) : Parte 1 | NetJNL

  6. Pingback: Nmap Scripting Engine (NSE) : Parte 2 | NetJNL

Deja un comentario