Documente Academic
Documente Profesional
Documente Cultură
Nessus
Introducción
Como hemos venido comentando desde estas páginas en varias oportunidades, una
estrategia efectiva respecto de la seguridad de los activos de información en las
organizaciones, requiere no solo de las políticas y procedimientos adecuados, sino
también de la ejecución de un conjunto de acciones tendientes a que aquellos
lineamientos generales, planteados precisamente como parte fundamental de la política
de seguridad corporativa, sean llevados a cabo.
En tal sentido, comienzan a aparecer una serie de recursos al alcance del profesional,
entre los que se encuentran por ejemplo las evaluaciones de seguridad en todas sus
formas. Hacking Ético, Test de Intrusión Controlados y Análisis de Vulnerabilidades
entre otros, son considerados una pieza clave al momento de evaluar la postura de
seguridad de una organización.
Ahora bien, lo cierto es que en definitiva, al momento de llevar a cabo este tipo de
evaluaciones, comienzan a ser requeridas una serie de herramientas concretas y de
orientación específica, a partir de las cuales nos sea posible automatizar aquellos
aspectos que relacionados con las practicas de testeo, colaborarán en forma directa a la
hora de detectar la existencia de deficiencias o vulnerabilidades en los esquemas de
seguridad de la red o host objetivo.
Con esta premisa en mente, el presente artículo apunta a presentar al lector una de las
herramientas Open Source (Al menos por ahora... ver recuadro) mas utilizadas por las
organizaciones y profesionales de seguridad alrededor del mundo, en sus proyectos de
evaluación de la seguridad: Nessus, el escáner de vulnerabilidades por excelencia.
Antes de empezar...
Para comenzar, me gustaría dejar claro algunos aspectos con los cuales deberás estar en
sintonía a fin de aprovechar el contenido de este artículo.
Ahora bien, ¿Qué es una vulnerabilidad? ¿Cual es la func ión de un escáner de seguridad
remota tal como Nessus? ¿Cual es su relación con las prácticas de Vulnerability
Assessment o Evaluación de Vulnerabilidades?
Bien... ahora que nos hemos puesto de acuerdo en algunas cuestiones básicas, veamos
que es lo que ha convertido a Nessus, en la herramienta de seguridad favorita de la
mayoría de los profesionales de seguridad a nivel mundial!!.
Acerca de Nessus...
Tal como se menciona en su sitio web oficial, el inicio del proyecto “Nessus”, data del
año 1998, momento en el cual Renaud Deraison comenzara a trabajar en el, con la idea
de dotar a la comunidad de un escáner remoto de seguridad el cual fuera fácil de utilizar
y actualizar, lo suficientemente poderoso y por sobre todas las cosas libre y de código
abierto.
Hoy, casi veinte años después del comienzo de este proyecto, Nessus ostenta un lugar
de privilegio entre los productos de su tipo, es considerado un estándar de facto y se
estima que el mismo es utilizado por 100.000 organizaciones alrededor de mundo.
Sin lugar a dudas, muchos son los motivos que han hecho de Nessus, una herramienta
“Estrella”, aunque probablemente gran parte de su éxito se deba a la maravillosa
arquitectura sobre la cual se encuentra construido. Esta se basa en una serie de
componentes fundamentales para su ejecución, entre los cuales se encuentran las
porciones Cliente/Servidor y una serie de Plugins específicamente desarrollados para
lanzar las más diversas pruebas de seguridad. Pero... veamos brevemente cual es la
función principal de dichos componentes:
Pero este es solo un beneficio mas respecto de las ventajas que presupone una estructura
client/server para un escáner de vulnerabilidades. Otro aspecto quizás más importante,
se encuentre relacionado con la escalabilidad que brinda precisamente este tipo de
arquitectura, en la cual al mejorar las características de potencia de la porción servidor,
se notara un incremento directamente proporcional respecto de la velocidad con la que
serán llevadas a cabo las tareas de escaning.
Por ultimo, pero no menos importante, déjame mencionar que para las organizaciones,
la posibilidad de instalar varios servidores internos con Nessus, les permitirá coordinar
escaneos de vulnerabilidades simultáneos en los diferentes segmentos de red,
distribuyendo la carga y adaptando el scheduler a los requerimientos de la compañía.
Nessus Plugin’s
Instalando Nessus
Bien, creo que es hora de poner manos a la obra e instalar Nessus en nuestro BOX, a
efectos de poder indagar un poco mas acerca de el. Si has leído alguno de mis artículos
anteriores, probablemente sepas que últimamente he estado trabajando con Gentoo
Linux, pues me ha resultado una distribución sencillamente impresionante!! y si a esto
le sumamos el hecho de que debido principalmente a su concepción, Gentoo me permite
aprovechar al máximo el hardware existente en mi vieja Laptop IBM ThinkPad :D sin
dudas entenderás mi elección :D
Claro que esta no es la única ventaja, otra de ellas es la existencia del magnifico
manejador de paque tes “Portage” provisto por Gentoo, sin el cual sencillamente no
podría vivir.... :D bien... dejemos el fanatismo de lado... hablando seriamente, los
ejemplos mostrados a continuación se corresponderán entonces con la particular
instalación de Nessus en Gentoo Linux, a pesar de ello, siéntete libre de llevar tu
browser hasta el sector de descarga del sitio oficial de Nessus
(http://www.nessus.org/download) y una vez allí descargar los ficheros necesarios para
el tipo de instalación que estés dispuesto a realizar en tu propio sistema. Llegado este
punto tendrás dos opciones entre las cuales podrás optar, la tradicional y recomendada
consistente en la descarga de los ficheros conteniendo el código fuente (opción
recomendada), o un sencillo y práctico “installer” a partir del cual probablemente todo
resulte bastante más fácil para quienes no quieran lidiar con la compilación manual.
Volviendo a Gentoo... como recordaras, la “interfaz” que se utiliza para interactuar con
“Portage” se denomina “emerge”, la cual no es mas que una herramienta a partir de la
cual es posible llevar a cabo todas y cada una de las acciones necesarias a la hora de
instalar o desinstalar un paquete en nuestro BOX.
1. Bien, en primer lugar deberemos actualizar nuestro árbol Portage, a fin de que el
mismo contenga el catalogo completo y actualizado de todas y cada una de las
aplicaciones disponibles. Para esto no tendremos más que ejecutar:
2. Puesto que teóricamente a partir de finalizado el paso anterior, contamos con nuestro
árbol Portage actualizado, ya estamos en condiciones de consultar la existencia de los
paquetes necesarios a efectos de instalar Nessus. Para conocer esta y otra información
volveremos a utilizar emerge, esta vez con el modificador “-p”
fiona ~ # emerge –p nessus
3. Bien, como hemos podido observar producto del paso anterior, la versión 2.2.5 de
Nessus se encuentra disponible dentro de la rama “net-analyzer” de nuestro árbol
Portage, para ser instalada a través de emerge... pero entonces que esperamos!
ejecutemos nuevamente emerge a fin descargar e instalar el ebuild seleccionado
ejecutando el siguiente comando:
Perfecto!! al cabo de algunos minutos, si todo ha salido bien Nessus habrá sido
descargado, instalado y se encontrará listo para ser configurado! a que me refiero con
configurado? bien... al ser ejecutado por primera vez, Nessus requerirá al menos un par
de ajustes antes de poder ser utilizado. Veamos de qué se tratan los mismos:
Por empezar, deberemos crear un usuario valido, el cual será utilizado con la engine
nessusd. Para esto, bastará con ejecutar el siguiente comando en nuestra consola:
fiona ~ # nessus-adduser
Login : MyUser
Authentication (pass/cert) [pass] : pass
Password : MyPassword
User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that renaud2 has the right to test. For instance, you may want
him to be able to scan his own host only.
Please see the nessus-adduser(8) man page for the rules syntax
Enter the rules for this user, and hit ctrl-D once you are done :
(the user can have an empty rules set)
ctrl+d
Login : MyUser
Password : MyPassword
DN :
Rules :
user added.
Ahora que tenemos nuestro usuario, quizás quieras revisar las opciones de
configuración del demonio Nessus (Nessusd), para lo cual podrás editar el fichero que
en Gentoo se aloja por defecto en /etc/nessus/nessusd.conf´, aunque en rigor de verdad
las opciones configuradas por defecto, probablemente sirvan a los efectos de llevar a
cabo tus primeras pruebas.
Ok... a fin de poner a funcionar el la engine, deberemos lanzar el demonio nessusd, para
lo cual bastará con ejecutar el comando mostrado a continuación:
fiona ~ # nessusd –D
fiona ~ # nessus
Bien... este artículo no planea ser una guía paso a paso respecto de la utilización de
Nessus, puesto que en tal sentido no alcanzarían siquiera 1000 páginas, a pesar de ello y
a efectos de quienes aún no hayan tenido oportunidad hasta este momento de interactuar
con Nessus, mencionaremos brevemente los pasos necesarios a los efectos de lanzar un
sencillo escaneo de vulnerabilidades contra alguno de nuestros equipos de prueba
dispuestos a tal fin.
Nessus, antes de cada corrida. De este modo, podremos asegurarnos el contar con los
últimos chequeos de vulnerabilidades disponibles. A tal efecto, Nessus nos provee de un
comando específicamente diseñado con el objeto de realizar esta función:
fiona ~ # nessus-update-plugins
Nota: Las últimas versiones de Nessus, exigen que el usuario realice un sencillo
registro on- line a través de la web, a efectos de obtener y registrar en su
instalación local de Nessus, el código requerido a la hora de realizar la
actualización de la totalidad de los plugins disponibles:
http://www.nessus.org/plugins/index.php?view=register
3. A partir de estar loguedos a través de nuestro cliente con el motor nessusd, muchas
serán las opciones a nuestra disposición a la hora de configurar las opciones a utilizar en
nuestro primero escaneo de vulnerabilidades, aunque sin dudas un aspecto básico será el
de seleccionar los plugins que esperamos sean utilizados como parte de nuestro testeo.
A tal efecto, solo bastará con acceder a la pestaña nombrada precisamente como
“Plugins” y tildar o destildar aquellos scripts o grupos de scripts que creamos necesarios
utilizar.
4. Por ultimo, y teniendo en cuenta que nuestro objetivo es tan solo mostrar los pasos
mínimos y necesarios a los efectos de poner a funcionar nuestro primer escaneo, bastará
con acceder a la pestaña “Target”, escribir la IP o nombre de host del objetivo y
presionar el botón “Start the Scan”, para que Nessus comience a realizar su trabajo.
Ok... hasta aquí hemos dado nuestros primeros pasos con nessus, pero... dediquemos al
menos unos minutos a revisar una de sus posibilidades mas interesantes: la escritura de
nuestros propios chequeos de seguridad!!
Ahora bien... para nuestro ejemplo, hemos decidido escribir un pequeño script que tenga
como única función conectar con un servicio FTP al port 21, leer el banner en el
configurado e informarnos del mismo. Una vez puesto a funcionar, este plugin nos
permitirá revisar nuestra red interna, a efectos de evaluar si alguno de los FTPs internos
instalados, no cumple con la política de la organización en cuanto a la modificación de
banners... manos a la obra!!
if ( description )
{
script_id( 90027);
script_name(english:"FTP Banner Grabbing");
script_description(spanish:"
Este sencillo Script intenta establecer una conexion con un host
remoto al port 21 y extraer su banner.");
soc = open_sock_tcp(21);
if ( ! soc ) exit(0);
banner = recv_line(socket:soc, length:4096);
security_note(port:21, data:"El Servicio FTP Remoto Detectado es : " +
banner, proto:"tcp");
Bien!! Ahora que hemos escrito nuestro primer Plugin, vamos a probarlo contra alguno
de los servers de nuestro laboratorio de pruebas. A tal efecto y puesto que Nessus nos
provee como parte de su instalación estándar, de un potente intérprete de línea de
comandos, mediante la cual podemos ejecutar nuestro NASL de forma ágil y sencilla,
lanzaremos el siguiente comando a través de nuestra consola :
Una vez hecho esto, deberemos restartear el componente servidor de Nessus para que el
plugin sea reconocido y se encuentre disponible a través de la interfaz cliente tal como
se observa en la Figura 10. A tal efecto quizás quieras usar el siguiente comando:
Como habrás notado, la nueva prueba de seguridad construida, ya forma parte del grupo
“Scripts Privados” (Tal como lo definiéramos mediante la sentencia script_family) y
se encuentra apta para ser utilizada como cualquiera de los plugins estándar incluidos en
Nessus!!
Conclusión
serie de tips que seguramente sabrán aprovechar, a la hora de dar sus primeros pasos
con dicha herramienta.
A su vez, como has podido observar hacia el final del artículo, una vez que ha yas
recorrido cada una de las opciones de la interfaz del cliente Nessus, y aprendido la
utilidad de cada una de sus muchas opciones, aún tendrás oportunidad de comenzar a
escribir tus propios Scripts de Verificación o Plugins por medio de NASL!!
A propósito... el script de ejemplo que presentamos en estas páginas, no cumple con los
estándares necesarios para ser considerado un plugin con todas las letras. Esto se debe a
que para que el mismo sea ciento por ciento compatible con los estándares Nessus,
debería contar con algunos aspectos de calidad básicos, ausentes en este sencillo
ejemplo. Mecanismos para verificar si no existe un servidor FTP corriendo en otro
puerto distinto que el 21, consultas respecto de si el puerto se encuentra abierto antes de
intentar efectuar una conexión y una serie adicional de chequeos deberían ser agregados
a nuestro script a efectos de mejorarlo... así que... te animas a investigar por tu cuenta y
hacer los cambios necesarios?
Referencias
http://www.nessus.org
http://www.tenablesecurity.com
http://michel.arboi.free.fr/nasl2ref