Vulnerability Scanning con Nessus y Nmap

INTRODUCCIÓN

En esta nueva entrada vamos a repasar muy brevemente los conceptos de Vulnerability Scanning o escaneo de vulnerabilidades y que utilidades como pentesters o analistas de seguridad tenemos a mano para probar.

Cómo contamos siempre en nuestro curso de «Red Team Nivel 1 Hacking Fundamentals» las tareas de escaneo de vulnerabilidades están por regla general asociadas a la fase de un pentest llamada «Scanning y Enumeración», tal y cómo se muestra en el gráfico a continuación:

Si bien en algunos frameworks técnicos de seguridad, algunos de los nombres de estas fases puede cambiar, en nuestro caso nos gusta ponerlo y contextualizarlo de esta manera ya que la «actividad» en sí de correr un escaneo de vulnerabilidades es la parte técnica en cuestión, al igual que cuando corremos un port scanning.

Luego si, de acuerdo a cómo se ve en el gráfico, vendría la fase del «análisis» en dónde se aplica más una capa de análisis e inteligencia en entender el/los tipos de vulnerabilidades encontradas y recolectadas en la actividad técnica de escaneo, y el impacto y severidad de las mismas.

Cuando estamos trabajando en la fase de «Análisis de vulnerabilidades» tenemos que analizar y contextualizar ciertas características cómo las siguientes:

  • Resúmen de la vulnerabilidad.
  • CVSS Score: Scoring de severidad (0 a 10)
  • CWE: Catalogación (ejemplo: «Injección de código debido a manejo indebido de parámetros ingresados)
  • Tipo: Ejecución de código, denegación de servicio, acceso a información sensible, etc.
  • Impacto: (Confidencialidad, Integridad y Disponibilidad)
  • Complejidad: Dificultad técnica para explotarla, circunstancia necesarias y requeridas para su explotación.
  • Autenticación: ¿Es necesario contar con credenciales para explotar la vulnerabilidad?

Recomendamos como lectura obligatoria y complementaria a este post el documento de especificación de «First» y el esquema de categorización de las vulnerabilidades (CVSS por Common Vulnerability Scoring System), que además se puede bajar en PDF para leer off line, desde el siguiente sitio:

https://www.first.org/cvss/v3.1/specification-document

Entonces, cuando corremos un escaneo de vulnerabilidades lo que estamos buscando como pentesters es identificar si un sistema es débil o susceptible de ser afectado o atacado de alguna manera (Hardware, Software, sistemas operativos, etc.) para entonces si, ir identificando los diferentes vectores de ataque, dados por:

  • Identificación de vulnerabilidades en versiones de aplicaciones y sistemas operativos.
  • Gestión de parches (Patch Manager)
  • Configuraciones por defecto.
  • Vulnerabilidades técnicas y funcionales.
  • Identificar vulnerabilidades tecnológicas y humanas.

Cuando realizamos las tareas técnicas de escaneo de vulnerabilidades es cuando nos topamos también con la disyuntiva de que herramienta utilizar. Es muy amplio el mercado y además cambian de acuerdo al foco y contexto en el que se las usa.

Porqué decimos contexto y foco?, porque no es lo mismo un escaneo de vulnerabilidades a nivel de infraestructura (SO Windows, *Nix, Routers, Switches, IIS, Nginx, Apache, Tomcat, etc. etc.) que un escaneo de vulnerabilidades a nivel de aplicaciones web.

En esta entrada o post nos vamos a concentrar más bien en infraestructura, con lo cual vamos a estar mostrando Nessus y Nmap cómo dos herramientas con las que podemos contar y trabajar.

NESSUS

Nessus es una solución de vulnerability scanning que existe ya hace «muchos» años y es de la empresa Tenable (https://www.tenable.com/).

Originalmente y hasta no hace mucho, Nessus venía en dos sabores, la versión Pro que era la versión paga del producto y la versión gratuita que era la versión «home».

El producto evolucionó muchísimos con los años y hoy lo ofrecen en diferentes versiónes y características como por ejemplo «virtual appliance», en la nube como SaaS, etc. Además hoy, además de la versión Pro, existe una versión llamada «Tenable.IO» la cual además del motor de vulnerability scanning del Pro incorpora otras bondades.

El problema histórico con la versión gratita o «home» era que Tanable tenía como restricción que la misma no podía ser usada en entorno de empresas y tenía muchas limitaciones. Normalmente era más para el uso del hogar.

Hoy eso cambió y Tenable el año pasado liberó una nueva versión de Nessus llamada «Essentials» la cual permite usarla en el ámbito de empresa, limitada a 16 IPs con la misma velocidad, evaluaciones profundas y conveniencia de escaneo sin agente, la cual disfrutan los subscriptores de Nessus Pro (salvando algunos ítems puntuales como el tema de reportes, plantillas de políticas pre definidas, etc.)

Este cambio es excepcionalmente positivo no sólo para nosotros como pentesters sino para Pymes y pequeñas empresas que no tienen la posibilidad de comprar todos los años un producto de 2000 y pico de dólares.

Entonces veamos a Nessus un poco más en profundidad. Lo vamos a descargar de la siguiente dirección o página https://www.tenable.com/downloads/nessus

En este caso y para este tutorial lo vamos a bajar para Kali Linux que es la caja de dónde ejecuto los análisis de seguridad (también se puede bajar el ejecutable para Windows y el proceso va a ser el mismo).

Dentro del Kali abrimos el navegador e ingresamos a la página de referencia. Seleccionar la versión de Nessus para Debian 6, 7, 8, 9 / Kali Linux 1, 2017.3 AMD64 en adelante y guardamos el file cómo se ve:

Luego, una vez bajado el instalador procedemos a su instalación:

Primero posicionarse dentro de la carpeta «Downloads» del directorio de root (o dónde sea que lo hayamos bajado) y luego correr el siguiente comando:

# dpkg -i [Nombre del paquete] o sea:

# dpkg -i Nessus-8.6.0-debian6_amd64.deb

Una vez instalado, para iniciar el demonio de Nessus se debe ejecutar el siguiente comando:

# /opt/nessus/sbin/nessus-service -q –D

También MÁS FACIL, se puede utilizar el siguiente comando, para iniciar Nessus:

# service nessusd start

Una vez que finalizada la instalación de nessus y la ejecución del servidor, abrir la siguiente URL en un navegador web.

https://127.0.0.1:8834

Probablemente nos tire un error de certificado, con lo cual le agregamos la excepción dándole click al botón de «Add Exception» cómo se ve a continuación:

Al abrir la página web lo primero que nos va a pedir es que seleccionemos el producto a instalar, en este caso vamos a seleccionar el Nessus Essentials

Luego a continuación, nos va a pedir que obtengamos un «Activation Code» cómo se ve en la siguiente pantalla, con lo cual completamos todos datos. Este ejemplo lo hago con mis datos personales para la demo:

Luego de completar nuestros datos seleccionamos la opción «Email» con lo cual nos va a llegar un correo con el código, abrimos el correo, seleccionamos el código y lo pegamos en el casillero correspondiente.

Luego por último nos pide crear un usuario y password

Seleccionamos el botón de «Submit» y luego nos toma la configuración como exitosa y automáticamente se pondrá a bajar los plug.ins que luego utilizará para correr los vulnerability assessmets.

Una vez que termina de descargar toda la base de los plug-ins levanta la consola web de Nessus para que ya podamos trabajar en ella:

A partir de acá ya podemos crear una política de escaneo, lo cual podemos clickeando arriba a la derecha el botón de «New Scan», en dónde al hacerlo nos va a generar la siguiente pantalla en dónde podremos elegir una plantilla de escaneo de tipo personalizada cómo por ejemplo para «web application test»

NOTA: En el caso de las políticas de tipo «compliance» las mismas están reservada para la versión Pro, por eso tienen la insignia de «Upgrade».

En el caso de mi demo y para este post selecciono la opción de «Advanced Scan» la cual uno puede configurar de cero.

En este caso voy a escanear una dirección IP de un servidor Linux previamente detectado en una fase anterior de port scanning. Podrían ser varias o todo un rango IP, pero recordemos que en el caso del nessus essentials está limitado a 16 direcciones.

Recomiendo jugar con el producto e ir leyendo la documentación en línea la cual es muy completa. A modo de ejemplo en el armado de dicha política podemos configurar entre otras cosas las credenciales (Si aplica y si las tenemos) los plug-ins, etc.

En nuestros cursos y charlas siempre comentamos que en el caso de los plug-ins es importante deshabilitar los que no se van a usar ya que eso mejora sustancialmente los tiempos de escaneo. Si por ejemplo tengos 2 o 3 equipos ya identificados como servidores windos server XX de que nos serviría que nessus testee todos los plug-ins por ejemplo para Linux/Unix o Cisco u otros?

En este caso el servidor detectado y sobre el que se realiza el test es un Linux, con lo cual deshabilito todos los plug-ins innecesarios y sólo dejo los que deberían probarse:

Seleccionamos abajo el botón «Save» y luego a continuación seleccionamos la política que hemos creado, en mi caso «test» y le damos play o ejecutar a la derecha de la pantalla de la consola:

A partir de la ejecución podemos tomarnos un break para ir a tomar un café ya que Nessus se va a tomar su tiempo. Pero una vez que finalizó podremos hacer click en la política de escaneo, en mi caso «test» y a partir de ahí ver el resultado de la misma.

En mi caso, podemos ver que Nessus encontró varias vulnerabilidades, de las cuales 6 de ellas son «Crítical», una de tipo «High» y 12 vulnerabilidades de tipo «Medium», el resto son «Low» o «Informativas».

Podemos en este caso «exportar» el informe en PDF, HTML o CSV, cómo se ve a continuación, arriba a la derecha.

Además podemos hacer «click» directamente en el resultado y ver todas las vulnerabilidades de mayor a menor criticidad y ver el detalle de cada una de ellas, que en definitiva es como también lo vamos a ver en el reporte:

Cabe aclarar que cómo pentesters deberíamos validar manualmente muchas de estas vulnerabilidades reportadas por la herramienta para evitar cualquier tipo de falso positivo. Luego de probar manualmente los hallazgos, restará sólo encarar un plan de mitigación, ya sea a nivel de actualización de componentes o de parcheo.

NMAP

Vamos a ir terminando la nota con otra opción «free» para hacer tareas de Vulnerability scannning. En este caso con la herramienta de NMAP. Seguramente que más de un lector a esta altura pueda estar preguntándose Nmap?? Nmap para hacer escaneos de vulnerabilidades?

Bueno si, les digo que NMAP puede hacer escaneo de vulnerabilidades. A ver una aclaración más que obvia. NMAP no suplanta a Nessus o incluso no suplanta ni mejora a un Nessus Pro o a un Qualys, por sólo citar a algunos.

Pero NMAP es una herramienta que con los años evolucionó muchísimo y que dejó hace rato de ser un simple port scanner. Por algo se suele decir que es la navaja suiza de los pentesters.

La forma de hacerlo es a través de NSE o NMAP Scripting Engine que son una serie de scripts que vienen por default con la herramienta o inclusive uno puede crear sus propios scripts.

NSE es una poderosa herramienta que permite extender fácilmente los tipos de escaneos que se pueden realizar e incluso realizar tareas de vulnerability assessment.

Los scripts de NMAP son desarrollados en el lenguaje LUA (http://www.lua.org/ ).

En Kali Linux y en general en muchas de las distribuciones basadas en «Debian» la ruta de directorio en el cual se hallan es /usr/share/nmap/script, cómo se ve a continuación:

En el caso del mundo Windows los scripts se encuentran por default en la ruta C:\Program Files (x86)\Nmap\scripts

Estos scripts están ordenados por categorías de la siguiente manera:

La sintaxis para correr un script determinado o incluso una determinada categoría es la siguiente:

# nmap –script (nombre del script) {target}

# nmap –script (categoría) {target}

Entonces por ejemplo si quisierámos correr todos los scripts de la categoría «vul» sólo debería ejecutar «nmap –script vuln {IP target}», cómo se ve a continuación:

De hecho muchos no siempre saben que cuando se corre un escaneo de puerto en NMAP con el flag –A (all) lo que dispara dicho flag son 3 acciones en una:

  • Versión de servicios asociados a puertos.
  • Versión de OS fingerprint (-sO)
  • Correr todos los scripts de la categoría «default»

Recomendamos leer y jugar mucho con NSE ya que es muy pero MUY versátil para muchas tareas. Por ejemplo, además del ejemplo mostrado de escaneo de vulnerabilidades con los scripts de la categoría «vuln» se podría por ejemplo, dentro de la fase de scanning y enumeración correr un script de NMAP llamado dns-brute el cumple con la función de encontrar por fuerza bruta sub dominios asociados. Tarea que solemos hacer con otras herramientas como DNSmap o Fierce.

Un ejemplo de uso de este script NSE sería cómo se muestra a continuación:

#> nmap -p80,443 –script dns-brute clarin.com


Tenemos muchísimas posibilidades. Nmap a través de NSE nos ofrece hoy por hoy scripts para una muy vasta cantidad de operaciones y temas. Otros ejemplos a alto nivel:

Joomla

  • http-joomla-brute.nse

WordPress

  • http-wordpress-brute.nse
  • http-wordpress-enum.nse

Y así sigue la lista, la cual es MUY larga, al final de la entrada les dejo los links oficiales a la documentación.

Por último y antes de terminar esta entrada les quiero dejar dos joyitas que no todo el mundo conoce en materia de NSE de NMAP y que a mí me han ayudado mucho.

Si bien hasta ahora corrimos ejemplos de vulnerability scanning a través de nmap scripting y específicamente con la categoría de Vuln, existe otra forma de hacer con NMAP vulnerability scanning.

Para realizar esta tarea vamos a trabajar con dos scripts de NMAP llamados «nmap-vulners» y «vulscan» los cuales llaman a APIs en su código que van contra varias bases de datos conocidas de vulnerabilidades.

Por ejemplo «vulscan.nse» tiene en su código, las APIs que van contra los siguientes sitios:

Para utilizar estos scripts, sólo debemos instalarlos, para lo cual debemos estar parados en la ruta de los scripts de NMAP y desde allí instalarlos con git clone:

/usr/share/nmap/scripts

Luego estando en el directorio corremos lo siguiente:

# git clone https://github.com/vulnersCom/nmap-vulners.git

# git clone https://github.com/scipag/vulscan.git


Veamos algunos ejemplos de uso. En este caso con el script de nmap-vulners


Como podemos ver nos trae por cada servicio que encuentra todas las vulnerabilidades asociadas de las diferentes bases de datos con su correspondiente nomenclatura de CVE y la referencia a nivel de URL.

Veamos ahora también el uso del script de «vulnscan.nse»


Una opción que se puede realizar y que de hecho recomendamos es que, dado que la información que estos scripts nos devuelven es muchísima, dado al hecho de que justamente van contra varias bases de datos, dentro las APIs que tienen embebidas, es que se le pasen los argumentos que se requieren en particular. Con lo cual podríamos invocar el uso del script contra nuestro objetivo, pero mapeando contra una base de datos de vulnerabilidades y no contra todas al mismo tiempo. Ejemplo:

CONCLUSIÓN

Dado que no queremos que el lector nos venga a tocar el timbre por el tamaño del post vamos a darlo por terminado con lo expresado hasta ahora.

Un tema importante como conclusión y del que hacíamos mención al principio de la nota es que lo importante cuando ejecutamos las tareas escaneos de vulnerabilidades es entender que existen muchas opciones y que todas son válidas, lo importe es el «que» y el «para que» o sea de acuerdo al momento y escenario dado.

Además, adicionalmente hay que entender que es importante conocer estas opciones dado que no siempre vamos a contar en nuestro presupuesto, ya sea como profesionales independientes o así sea que trabajemos en una pequeña empresa, con un servidor licenciado de Qualys Pro o de Nessus Pro u otro similar, con lo cual estas opciones mencionadas nos pueden ayudar, combinadas, a tener un buen programa de vulnerability scanning.

O, en otros casos pueden ser un perfecto complemento para testear manualmente lo que una herramienta como Nessus no brinda y tener un doble control junto con el testeo manual para evitar los falsos positivos antes mencionados.

Todas estas prácticas y muchas más las cubrimos en nuestro curso  de Red Team Nivel 1 – Hacking Fundamentals en dónde pueden chequear la información en el siguiente enlace:

Red Team Hacking

Esperamos que esta entrada les sea realmente de utilidad. Les mandamos un gran saludo a todos nuestros lectores y Happy Hacking!! 😎

Bibliografía recomendada.

A continuación, ponemos a vuestra disposición los links principales relacionado a lo escrito en este post.

NMAP NSE
https://nmap.org/nsedoc/

Nessus Essentials: https://www.tenable.com/products/nessus/nessus-essentials

Proyecto «nmap-vulners»: https://github.com/vulnersCom/nmap-vulners

Proyecto «VulScan.nse»: https://github.com/scipag/vulscan

1 comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *