Nmap es una herramienta para explorar redes y determinar qué servidores están
activos y qué servicios ofrecen. La ventaja con respecto a otras herramientas
es que ofrece múltiples técnicas de escáner. Las versiones más recientes
también ofrecen la posibilidad de detectar el sistema operativo remoto en
función a la implementación del protocolo TCP/IP. El programa dispone incluso,
a partir de la versión 2.0, de un interfaz gráfico realizado con gtk llamado
nmapfe
que permite realizar los escáneres sin necesidad de conocer
las múltiples opciones de línea de comandos disponibles. Se trata de una
herramienta muy útil en conjunción de otras, como scotty
(ver Scotty (antes tkined), Sección 7.1, para conocer
la estructura de la red heterogénea que se está intentando auditar. La
posibilidad de hacer un escáner, además, de un grupo de servidores, permite
extraer rápidamente información que pueda servir para hacer un escáner en mayor
profundidad sobre servidores que posiblementa puedan ser comprometidos.
Dado que las herramientas de seguridad mediante tests remotos (SAINT, SATAN...) pueden convertirse en un arma en manos de una persona que pretenda utilizarla para fines ilícitos, es necesario disponer de programas que sean capaces de avisar al administrador cuando se detecte accesso a la máquina realizados por estos programas con la intención de obtener información o de probar vulnerabilidades.
Este es el caso de Courtney
y Gabriel
, se verá algo
más de éste último más adelante. El primero de ellos es un programa
desarrollado en la Universidad de California por Marvin J. Christensen. Está
diseñado para detectar este tipo de paquetes. Aunque se distribuya indicando
que dectará ataques de SATAN en realidad será capaz de detectar un tipo de
ataques concreto, denominado port scanning, consistente en probar
todos (o un gran número) de los puertos de una máquina (cada puerto está ligado
a un servicio, ver inetd.conf(5)
). Los programas pueden así
encontrar servicios vulnerables o no usados para hacerse una idea más precisa
de los servicios ofrecidos por una máquina.
Se va a estudiar Courtney
para observar el funcionamiento de estos
detectores. Este programa está escrito en Perl, con lo que es más fácil de
interpretar. El flujo de control del programa es como sigue: una vez leídas e
interpretadas las opciones, ejecuta el programa tcpdump
junto con
una reglas de filtro de paquetes. El programa tcpdump
devolverá
todos los paquetes que se lean en una interfaz de red dada que cumplan alguna
de las reglas, estas reglas especifican que, por ejemplo, se deben mostrar los
paquetes dirigidos a diversos puertos. Courtney
leerá de éste
todas las conexiones de interés cuando se produzca alguna, y se apuntará su
origen, posteriormente comprobará si ese mismos origen ha hecho acciones
similares y, si es así, avisa al sistema mediante la llamada a logger
y envía un mensaje de correo al administrador.
Así pues, si un ordenador accediera uno detrás de otro a todos los puertos de
una máquina que tuviera Courtney
, éste empezaría a "hacer
saltar las alarmas" del sistema. Posteriormente el administrador podría
tomar la decisión de cerrar el acceso a la máquina atacante o no, en función de
la política de seguridad de éste.
Se puede ajustar el "nivel de alarma" del programa, que indica bajo qué condiciones se disparará esta. Hay que fijar adecuadamente este nivel ya que si es muy bajo se disparará ante eventos que son perfectamente normales (un usuario de una máquina hace una conexión vía slogin y posteriormente una conexión de FTP), y si es muy alta no se disparará con los denominados "ataques ligeros", que esperan un determinado tiempo antes de realizar la siguiente conexión.
Otro programa de las mismas características es Gabriel, diseñado
originalmente para Solaris 1 y 2. Éste hace algo similar pero utilizando los
filtros de paquetes de estas plataformas (etherfind
y
snoop
respectivamente), pero además incorpora en su configuración
otras formas de avisar al administrador (ver más abajo)
Gabriel es un programa de Los Altos Technologies, Inc., como ya se ha indicado detecta escáneres en la red como SATAN. Pero tiene el aliciente de que es distribuido, los clientes (implementados en gabriel_client.c) avisan de un execeso de accesos a la red y el servidor (implementado en gabriel_server.c) integra la información de estos y avisa de diversas formas al administador: mediante correo electrónico, vía el demonio talk, en la pantalla e incluso a través del teléfono o el beeper si existen las pasarlelas adecuadas (y un módem).
La idea que da lugar a que exista un cliente y un servidor parte del hecho de que SATAN es capaz de realizar tests sobre más de un host de una misma red, e incluso descubrirlos a medida que realiza los tests. Así, puede ser más fácil localizar el segmento de red en que se encuentra el ordenador que está ejecutando SATAN si se recibe la información de todos los ordenadores en varios segmentos.
El cliente esta escrito enteramente en C y muy ligado a su plataforma original, ya que utiliza filtros de paquetes ya existentes, para poder comprobar todos los paquetes iniciales de conexión (ICMP, UDP y TCP). En principio sólo tiene soporte Solaris 1.x o 2.x, y aún no ha sido portado a Linux. Sin embargo este programa sirve como muestra botón de la manera en que se portan este tipo de programas al sistema GNU/Linux. Una de las ventajas fundamentales es que la librería de C de los sistemas UNIX es bastante compatible entre diversas plataformas, con lo que el código original no es necesario casi tocarlo si hace uso de ésta. Otra ventaja es que no hace falta modificar casi el servidor, ya que éste es un shell script que hace uso de programas comúnes en la comunidad UNIX (como awk)
Por tanto las modificaciones para poder portar este programa a Linux serían modificar el cliente para soportar la plataforma Linux haciendo uso de tcpdump, modificar los scripts de shell caso de que hubiera diferencias entre éstas, y modificar el fichero Makefile para poder compilar la versión de Linux.
jfs@computer.org