Nessus

Sin duda una de las herramientas de seguridad más utilizadas durante años en todo tipo de entornos Unix ha sido SATAN (Security Analysis Tool for Auditing Networks), desarrollada por dos pesos pesados dentro del mundo de la seguridad: Dan Farmer y Wietse Venema. La tarea de SATAN (o SANTA) era detectar vulnerabilidades de seguridad en sistemas Unix y redes, desde fallos conocidos en el software hasta políticas incorrectas ([Fre98]); el resultado de su ejecución se mostraba en formato HTML, de forma que cualquier administrador podía analizar esa información de una forma muy cómoda. Evidentemente, esta herramienta puede convertirse en peligrosa en las manos de un pirata, por lo que sobre Farmer y Venema llovieron en su día las críticas por el diseño de SATAN; hoy en día, con las ideas de Security through Obscurity y similares ya superadas - esperemos -, nadie duda en reconocer la gran utilidad de este tipo de herramientas analizadoras de vulnerabilidades.

Sin embargo, todo esto sucedía en abril de 1995, y SATAN no se ha actualizado mucho desde entonces (la última versión distribuida es la 1.1.1). Evidentemente, para una herramienta de seguridad este tiempo sin nuevas versiones es demasiado, por lo que en 1998 surgió Nessus, un analizador de vulnerabilidades gratuito, de código fuente libre, y lo más importante: igual de fácil - o más - de utilizar que su predecesor.

La distribución de Nessus consta de cuatro ficheros básicos: las librerías del programa, las librerías NASL (Nessus Attack Scripting Language), el núcleo de la aplicación y sus plugins; es necesario compilar en este orden cada una de esas partes. Además, el programa requiere para funcionar correctamente pequeñas aplicaciones adicionales, como la librería GMP, necesaria para las operaciones de cifrado. La compilación sobre diferentes plataformas Unix no ofrece ningún problema siempre que se realice en el orden adecuado, y se suele limitar a un ./configure, make y make install para cada una de las cuatro partes de Nessus.

Una vez hemos compilado e instalado el programa necesitamos en primer lugar generar - como root - una clave de un solo uso para un usuario de Nessus:
luisa:~/nessus# nessusd -P toni,prueba
Generating primes: .................q............................;
Retrying:          ....q...pg
luisa:~/nessus#
Podemos verificar que el nombre de usuario se ha añadido correctamente utilizando la opción `-L':
luisa:~/nessus# nessusd -L
                toni - user password
luisa:~/nessus#
Ahora podemos lanzar ya la parte servidora de Nessus, el demonio nessusd; cuando esté este demonio ejecutándose (escucha peticiones en el puerto 3001 por defecto) podemos conectar a él mediante el cliente nessus. La primera vez que ejecutemos este programa nos pedirá una pass phrase con propósitos de autenticación, frase que se utilizará en ejecuciones posteriores del cliente:
luisa:~$ nessus
Generating primes: .......................q..............pg

   To protect your private key just generated, enter your personal
   pass phrase, now.  Keep that pass phrase secret.  And each time
   when you restart nessus, re-enter that pass phrase when you are
   asked, for.  This prevents anybody else from logging in to the
   nessus server using your account.

   The drawback of a pass phrase is that it will prevent you from being
   able to use nessus(1) in a cron job or in a quiet script.
   If you do not want to use a pass phrase, enter a blank one.

   To change or remove the pass phrase, later on read in the manual
   page nessus(1) about the -C option.

New pass phrase: 
Repeat         : 

luisa:~$
Entraremos entonces en un cómodo interfaz gráfico desde el que mediante el password de usuario creado anteriormente podemos conectar al servidor de Nessus y comenzar el análisis del sistema, especificando las diferentes opciones que el programa nos ofrece a través de dicho interfaz; en la figura 21.1 se muestra el aspecto del entorno ofrecido por Nessus.

Figura 21.1: Interfaz gráfico de Nessus.
Image nessus.png


A pesar de la comodidad de estos interfaces gráficos, muchos usuarios de Unix seguimos prefiriendo la potencia y flexibilidad de la línea de órdenes; Nessus también ofrece la posibilidad de escanear un sistema sin utilizar entorno gráfico, volcando los resultados en un archivo de texto:
luisa:~$ cat entrada
rosita
luisa:~$ nessus -q localhost 3001 toni entrada salida.rosita
Pass phrase: 
luisa:~$
La orden anterior conecta al servidor nessusd situado en el puerto 3001 de la máquina luisa bajo el nombre de usuario toni, y desde ahí lanza un ataque a los sistemas indicados en el archivo entrada (en este caso, sólamente a rosita); los resultados de dicho ataque se depositan tras el escaneo en el archivo salida.rosita, un fichero de texto normal y corriente:
luisa:~$ head -13 salida.rosita
rosita chargen (19/tcp)
rosita ftp (21/tcp)
rosita telnet (23/tcp) INFO The Telnet service is running. This service is 
dangerous in the sense that it is not ciphered - that is, everyone can sniff
the data that passes between the telnet client and the telnet server. This 
includes logins and passwords.
You should disable this service and use ssh instead.
Solution : Comment out the 'telnet' line in /etc/inetd.conf.
Risk factor : Low
rosita smtp (25/tcp)
rosita finger (79/tcp)
rosita www (80/tcp)
rosita sunrpc (111/tcp)
luisa:~$
© 2002 Antonio Villalón Huerta