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.
|
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