viernes, 19 de junio de 2015

Nmap con script (NSE)

Hasta ahora hemos visto como utilizar Nmap para escanear puertos, descubrir equipos y algunos casos de uso pero esto es solo una pequeña parte de toda la potencia de Nmap. Nmap permite la creación y ejecución de tareas automáticas por medio de scripts, ampliando las funcionalidades originales y pudiéndose utilizar como detectores de vulnerabilidades, para realizar ataques por fuerza bruta o denegación de servicio,...etc. Estos script corresponden a una nueva funcionalidad denominada Nmap Scripting Engine (NSE) y están basados en el lenguaje interpretado Lua.
La comunidad de Nmap tiene disponible una cantidad importante de script que podremos utilizar para distintos fines. Nmap los va incluyendo de manera regular tanto en su SVN como su respectiva documentación.
En general los scripts están agrupados por categorías funcionales. Estas categorías las define cada desarrollador cuando diseña el script y las más comunes son:
  • safe: Scripts muy poco intrusivos que se encargan de descubrir la red.
  • discovery: Scripts que se encargan de descubrir equipos, no garantiza que estos sean silenciosos.
  • vuln: Scripts que comprueban vulnerabilidades ya descubiertas.
  • intrusive: Scripts altamente intrusivos y por lo tanto fáciles de detectar. Pueden saturar la red o los objetivos.
  • external: Scripts que necesitan recursos de red o bases de datos de terceros.
  • brute: Scripts que obtienen de información por fuerza bruta.
  • dos: Scripts que utilizan ataques DoS para sus fines.
  • auth: Scripts que comprueban las autenticaciones en busca de fallas de seguridad.
  • fuzzer: Scripts que mandan paquetes con errores para detectar vulnerabilidades.
  • malware: Scripts que intentan explotar fallos de seguridad por malware instalado en el objetivo.
  • exploit: Estos scripts tienen como objetivo explotar activamente alguna vulnerabilidad.
Para comprobar que categoría tiene un script basta con que lo abramos y chequeemos el apartado de categories. Por ejemplo para ssl-heartbleed.nse en el apartado categories tenemos lo siguiente:

categories = { "vuln", "safe" }

Esto significa que el script ssl-heartbleed pertenece a las categorías vuln y safe y por esto se lanzará en el caso de seleccionar un lanzamiento de todos los script con la categoría vuln.
Como ejemplo podríamos lanzar solo el script ssl-heartbleed.nse o todos los relativos a la categoría vuln de la siguiente manera:

root@metempsicosis:~# nmap -sV -p 443,22,38080,48080 --script=ssl-heartbleed --script-args vulns.showall www.agapornizate.es



root@metempsicosis:~# nmap -sV -p 443,22,38080,48080 --script=vuln --script-args vulns.showall www.agapornizate.es


Como podemos comprobar, al lanzar Nmap con --script=vuln además del script ssl-heartbleed se lanzan el resto de script pertenecientes a la categoría vuln.
Además podemos actualizar los scripts de Nmap de manera automática para que se incluyan los que no tengamos de las siguientes maneras:
  • Con el comando nmap --script-updatedb
  • Realizando un script que recorra todos los archivos del directorio https://svn.nmap.org/nmap/cripts/ y se los descargue con wget.
Como nota adicional, puede haber script que utilicen nuevas versiones de Lua o la librería tsl para Lua. Si esto es así no necesitaremos actualizar todo Nmap, bastará con actualizar nse_main.lua e instalar tls.lua. A continuación pongo ejemplos de cómo actualizar cada una de las partes de Nmap.
1.-Para actualizar nse_main.lua:
  • Entramos en /usr/share/nmap
    • root@metempsicosis:~# cd /usr/share/nmap
  • Realizamos un backup del archivo original nse_main.lua:
    • root@metempsicosis:~# cp nse_main.lua nse_main.lua.orig
  • Descargamos el último nse_main.lua disponible
    • root@metempsicosis:~# wget https://svn.nmap.org/nmap/nse_main.lua
2.-Para una nueva librería como por ejemplo tls.lua:
  • Entramos en el directorio /usr/share/nmap/nselib
    • root@metempsicosis:~# cd /usr/share/nmap/nselib
  • Descargamos la librería:
    • root@metempsicosis:~# wget https://svn.nmap.org/nmap/nselib/tls.lua
3.-Para descargar o actualizar un script como por ejemplo ssl-heartbleed.nse:
  • Entramos en el directorio /usr/share/nmap/scripts:
    • root@metempsicosis:~# cd /usr/share/nmap/scripts
  • Descargamos el script: 
    • root@metempsicosis:~# wget https://svn.nmap.org/nmap/cripts/ssl-heartbleed.nse

No hay comentarios:

Publicar un comentario