[ anterior ] [ Resumen ] [ Nota de Copyright ] [ Contenidos ] [ siguiente ]

Auditorías de Seguridad en GNU/Linux.
Capítulo 3 Escáneres remotos


3.1 Nmap

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.


3.2 Detectar escáneres remotos

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.


3.2.1 Courtney y Gabriel

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)


3.2.1.1 Adaptar Gabriel a GNU/Linux

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.


3.2.2 Scanlogd


[ anterior ] [ Resumen ] [ Nota de Copyright ] [ Contenidos ] [ siguiente ]
Auditorías de Seguridad en GNU/Linux.
15 feb 1999
Javier Fernández-Sanguino Peña jfs@computer.org