Está en la página 1de 23

A5 Detecci n de o ataques en red con Snort

Joaqun Garca Alfaro

Indice

5.1. Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1. Origen de Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2. Arquitectura de Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3. Consideraciones de seguridad con Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.4. Utilizaci n de ACID como interfaz gr ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o a Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

c FUOC

A5 Deteccion de ataques en red con Snort

3 4 6 12 13 22 23

5.1. Snort .

Snort es una completa herramienta de seguridad basada en c digo abierto para la creaci n o o de sistemas de detecci n de intrusos en entornos de red. Cuenta con una gran popularidad o entre la comunidad de administradores de redes y servicios. Gracias a su capacidad para la captura y registro de paquetes en redes TCP/IP, Snort puede ser utilizado para implementar desde un simple sniffer de paquetes para la monitorizaci n del tr co de una peque a red, o a n hasta un completo sistema de detecci n de intrusos en tiempo real. o

Mediante un mecanismo adicional de alertas y generaci n de cheros de registro, Snort o ofrece un amplio abanico de posibilidades para la recepci n de alertas en tiempo real acerca o de los ataques y las intrusiones detectadas.

Tal y como indica el autor de la aplicaci n, como monitor de red, Snort se comporta o como una aut ntica aspiradora (de ah su nombre) de datagramas IP, ofreciendo diferentes e posibilidad en cuanto a su tratamiento. Desde actuar como un simple monitor de red pasivo que se encarga de detectar el tr co maligno que circula por la red, hasta la posibilidad de a enviar a servidores de cheros de registro o servidores de base de datos todo el tr co a capturado.

Pero, aparte de unas estupendas caractersticas como sniffer de paquetes y generador de alertas e informes, Snort tiene muchas otras caractersticas que le han permitido conver tirse en una de las soluciones software m s completas para la construcci n de sistemas a o de detecci n en entornos de red basados en reconocimiento de patrones. Snort debera o considerarse como un NIDS ligero*. Este calicativo de ligero signica que, como IDS, su dise o e implementaci n le permite poder funcionar bajo diferentes sistemas operatin o vos y que sus funciones como mecanismo de detecci n podr n formar parte en distintos o a productos de seguridad (incluso comerciales).
* En ingles, lightweight NIDS (Network Intrusion Detection System).

La popularidad de Snort se ha incrementado estos ultimos a os en paralelo al incremen n to de popularidad de sistemas operativos de c digo abierto como puede ser el sistema o operativo GNU/Linux o la familia de sistemas operativos de BSD (NetBSD, OpenBSD y FreeBSD).

Pero su naturaleza como producto de c digo abierto no le limita a estar disponible unicamente o bajo este tipo de sistemas operativos. Snort puede funcionar bajo soluciones comerciales como, por ejemplo, Solaris, HP-UX, IRIX e incluso sistemas Microsoft Windows.

Desde el punto de vista del motor de detecci n, Snort estara incluido en la categora o de detecci n basada en usos indebidos. Mediante un reconocimiento de rmas, Snort o contrastar todo el tr co capturado en sus reglas de detecci n. a a o

c FUOC

A5 Detecci n de ataques en red con Snort o

Una regla de detecci n no es m s que un conjunto de requisitos que le permitir n, en o a a caso de cumplirse, activar una alarma. Por ejemplo, una regla de Snort que permitira vericar el uso de aplicaciones peer-to-peer para el intercambio de cheros a trav s de e Internet vericara el uso de la cadena GET en servicios diferentes al puerto tradicional del protocolo HTTP. Si un paquete capturado por Snort coincide con esta sencilla regla, su sistema de noticaci n lanzar una alerta indicando lo sucedido. Una vez que la alerta sea o a lanzada, puede ser almacenada de distintas maneras y con distintos formatos como, por ejemplo, un simple chero de registro del sistema, una entrada en una base de datos de alertas, un evento SNMP, etc.

A continuaci n veremos los orgenes de Snort, as como un an lisis de su arquitectura o a y algunas de sus caractersticas m s destacables. Veremos tambi n algunos problemas de a e seguridad que existen tras la utilizaci n de Snort y la forma de solventarlos. o

5.1.1. Origen de Snort

De forma muy resumida, podemos denir Snort como un sniffer de paquetes con funcionalidades adicionales para el registro de estos, generaci n de alertas y un o motor de detecci n basado en usos indebidos. o

Snort fue desarrollado en 1998 bajo el nombre de APE. Su desarrollador, Marty Roesch, trataba de implementar un sniffer multiplataforma (aunque su desarrollo inicial se hizo para el sistema operativo GNU/Linux) que contara con diferentes opciones de clasicaci n o y visualizaci n de los paquetes capturados. Marty Roesch implement Snort como una o o aplicaci n basada en la librera libcap (para el desarrollo de la captura de paquetes) lo o cual garantizaba una gran portabilidad, tanto en la captura como en el formato del tr co a recogido.

Snort empez a distribuirse a trav s del sitio web Packet Storm (http://www.packeto e stormsecurity.com) el 22 de diciembre de 1998, contando unicamente con mil seis cientas lneas de c digo y un total de dos cheros fuente. Por aquella epoca, el uso princi o pal que le dio su autor era como analizador de sus conexiones de red a trav s de un cable e m dem y como debugger de las aplicaciones de red que estaba implementado. o

El primer analizador de rmas desarrollado para Snort (tambi n conocido como analizador e de reglas por la comunidad de desarrollo de Snort) se a adi como nueva funcionalidad de n o la aplicaci n en enero de 1999. Esta nueva funcionalidad permiti que Snort comenzase a o o ser utilizado como detector de intrusiones.

c FUOC

A5 Detecci n de ataques en red con Snort o

Versi on comercial de Snort Aunque Snort esta disponible bajo licencia GPL (GNU Public License), existen productos comerciales basados directamente en Snort y distribuidos por la empresa Sourcere, fundada por el creador de Snort, Marty Roesch. El analisis de estas versiones comerciales quedan fuera del proposito de este material. Para mas informacion, visitad www.sourcefire.com.

Algo m as que un sniffer ... El autor de Snort trataba de indicar con este nombre que su aplicacion era algo mas que un sniffer. La palabra Snort signica en ingles una accion de inhalar o esnifar de forma mas obsesiva y violenta. Ademas, Marty dijo en su momento que ya tena demasiadas aplicaciones que se llamaran a.out y que todos los nombres populares para sniffers, llamados TCP-something ya estaban cogidos.

En diciembre de 1999 apareci la versi n 1.5 de Snort. En esta versi n su autor decidi o o o o una nueva arquitectura basada en plug-ins que a n se conserva en las versiones actuales. A u partir de esta versi n, Marty Roesch abandon la compa a donde trabajaba y se empez a o o n o dedicar a tiempo completo a a adir nuevas funcionalidades para mejorar las capacidades de n conguraci n y facilitar su uso en entornos m s profesionales. Gracias a la gran aceptaci n o a o que su IDS estaba obteniendo entre la comunidad de administradores, Marty pens que o era un buen momento para ofrecer su producto con un soporte para empresas, y obtuvo la nanciaci n necesaria para fundar Sourcere*. o
* En www.sourcefire.com encontrareis mas informacion.

Sin embargo, Snort contin a siendo c digo libre y promete seguir si ndolo para siempre. u o e La ultima versi n disponible de Snort es la 2.1, la cual se presenta con m s de setenta y o a cinco mil lneas de c digo y una restructuraci n total en cuanto al dise o original de su o o n arquitectura inicial.

Aunque el soporte y desarrollo actual de Snort se hace desde Sourcere de forma comercial, existe la versi n libre bajo licencia GNU. Esta versi n puede ser descargada libremente o o desde www.snort.org, permitiendo que cualquier usuario pueda disponer de soporte para las ultimas versiones disponibles y las ultimas actualizaciones de los cheros de reglas para dichas versiones.

Actualmente, Snort cuenta un gran repertorio de accesorios que permiten reportar sus alertas y noticaciones en diferentes gestores de base de datos (como MySQL y Postgres) y un gran n mero de preprocesadores de tr co que permiten poder analizar llamadas RPC y u a escaneo de puertos antes de que estos sean contrastados con el conjunto de reglas asociado en busca de alertas.

Los conjuntos de reglas de Snort tambi n han ido evolucionando a medida que la aplicae ci n lo iba haciendo. El tama o de los ultimos conjuntos de reglas para la ultima versi n o n o Snort disponibles para descargar incrementa de forma similar a la velocidad de aparici n o de nuevos exploits. Estos cheros de reglas se encuentran actualmente clasicados en distintas categoras como, por ejemplo, P2P, ataques de denegaci n de servicio, ataques o contra servicios web, virus, tr co pornogr co, etc. a a

Cada una de estas reglas est n asociadas a un identicador unico (sensor ID, SID), que a permite reconocer y encontrar informaci n acerca del ataque o mal uso detectado. Por o ejemplo, el SID para el ataque SSH banner attack es el 1838. Adem s, gracias al a uso mayoritario de Snort entre la comunidad de administradores de red, otros productos de IDS han adoptado el formato de las reglas de Snort, as como la codicaci n utilizada para o los volcados de los paquetes capturados (basada el libcap).

El soporte de estos cheros de reglas aumenta a diario. De este modo, cualquier usuario de Snort, o de cualquier otro IDS con un formato de reglas compatible, podra crear sus pro pias reglas a medida que vayan apareciendo nuevos ataques y colaborar con la comunidad de desarrollo de Snort para mantener perfectamente actualizada su base de rmas.

c FUOC

A5 Detecci n de ataques en red con Snort o

5.1.2. Arquitectura de Snort

Snort proporciona un conjunto de caractersticas que lo hacen una herramienta de seguri dad muy potente, entre las que destacan la captura del tr co de red, el an lisis y registro a a de los paquetes capturados y la detecci n de tr co malicioso o deshonesto. Antes de nomo a brar con mayor detalle las caractersticas de Snort, es importante conocer y comprender su arquitectura.

Snort est formado por un conjunto de componentes, la mayora de los cuales son plug-ins a que permiten la personalizaci n de Snort. Entre estos componentes destacan los prepoo cesadores, que permiten que Snort manipule de forma m s eciente el contenido de los a paquetes antes de pasarlos al elemento de detecci n, y su sistema de noticaciones y alero tas basados en plug-ins, que permiten que la informaci n reportada pueda ser enviada y o almacenada en distintos formatos y siguiendo distintos m todos. e

La arquitectura central de Snort se basa en los siguientes cuatro componentes:

Decodicador de paquetes o Sniffer

Preprocesador

Motor de detecci n o

Sistema de alertas e informes

Siguiendo esta estructura, Snort permitir la captura y el preprocesado del tr co de la red a a a trav s de los dos primeros componentes (decodicador de paquetes y preprocesador), e realizando posteriormente un chequeo contra ellos mediante el motor de detecci n (seg n o u el conjunto de reglas activadas) y generando, por parte del ultimo de los componentes, las alertas y los informes necesarios.

La siguiente gura muestra la arquitectura b sica de Snort que acabamos de comentar. a

Trfico de red

c FUOC

A5 Detecci n de ataques en red con Snort o

Decodificador de paquetes (sniffer)


paquetes

Preprocesador

Motor de deteccin

Sistema de alertas e informes


Base de datos de alertas y ficheros de registro

Reglas

Observando la gura anterior podemos hacer un smil entre Snort y una m quina mec nica a a para la ordenaci n autom tica de monedas: o a

1) Toma todas las monedas (paquetes de la red recogidos por el decodicador de paquetes o sniffer). 2) Cada moneda se dejar caer por una rampa para determinar a qu grupo de monedas a e pertenece (preprocesador de paquetes). 3) Ordena las monedas seg n el tipo de moneda y las enrolla en forma de canutos seg n u u la categora (motor de detecci n). o 4) Finalmente, el administrador decidir qu hacer con cada uno de los canutos de monea e das ordenadas (sistema de alertas).

Tanto el preprocesador como el motor de detecci n y los componentes para la noticaci n o o de alertas son todos plug-ins de Snort. Un plug-in es una aplicaci n desarrollada conforme o la API de plug-ins de Snort. Estas aplicaciones son utilizadas junto con el n cleo del u c digo de Snort, pero est n separadas del mismo, de modo que un cambio en el n cleo de o a u Snort no les afecte.

A continuaci n examinaremos con mayor detalle cada uno de los cuatro componentes o b sicos de Snort que acabamos de ver. a

Decodicador de paquetes

Un sniffer es un dispositivo (software o hardware) que se utiliza para poder capturar los paquetes que viajan por la red a la que es asociado.

En el caso de redes TCP/IP, este tr co acostumbra a ser tr co de datagramas IP, aunque a a tambi n es posible la existencia de tr co de distinto tipo como, por ejemplo, tr co IPX e a a o tr co AppleTalk. Adem s, puesto que el tr co IP consiste tambi n en distintos tipos a a a e de protocolos, como TCP, UDP, ICMP, protocolos de encaminamiento, IPSec, . . . muchos sniffers necesitar n conocer a priori el tipo de tr co para poder interpretar m s adelante a a a los paquetes que van siendo recogidos y poder mostrarlos en un lenguaje comprensible por un administrador de red.

Como muchas otras herramientas relacionadas con la seguridad en redes, los sniffers pueden ser utilizados con objetivos m s o menos deshonestos. Entre los distintos usos que a se le puede dar a un sniffer podemos pensar en an lisis de tr co para la soluci n de a a o congestiones y problemas de red, mejora y estudio del rendimiento de los recursos, captura pasiva de informaci n sensible (contrase as, nombres de usuario), etc. o n

c FUOC

A5 Detecci n de ataques en red con Snort o

As, como el resto de sniffers tradicionales, el decodicador de paquetes de Snort ser el a elemento encargado de recoger los paquetes que m s adelante ser n examinados y clasia a cados por el resto de componentes. Para ello, el decodicador de paquetes deber ser a capaz de capturar todo aquel tr co que le sea posible, para m s adelante pasarlo al sia a guiente componente (el preprocesador) que se encargar de detectar qu tipo de tr co se a e a ha recogido.

En la siguiente gura vemos un esquema del funcionamiento del decodicador de paquetes de Snort.

Preprocesador

A medida que el decodicador de paquetes vaya recogiendo el tr co que pasa por la red, a lo ir entregando al elemento de preprocesado para que lo vaya adaptando y se lo vaya a entregando al motor de detecci n. o

As pues, el preprocesador ir obteniendo paquetes sin tratar (raw paquets) y los vericar a a mediante un conjunto de plug-ins (como, por ejemplo, el plug-in para llamadas RPC o el plug-in de escaneo de puertos). Estos plug-ins vericar n los paquetes en busca de a ciertos comportamientos en estos que le permita determinar su tipo. Una vez determinado el comportamiento del paquete, este ser enviado hacia el motor de detecci n. a o

Esta caracterstica de preprocesamiento es realmente importante para una herramienta de detecci n, ya que es posible la utilizaci n de terceras aplicaciones (en forma de plug-ins) o o que pueden ser activadas y desactivadas seg n las necesidades del nivel de preprocesado. u Por ejemplo, si a un administrador de red no le preocupa el tr co RPC que entra y sale a de su red (y no necesita, por tanto, analizarlo) por cualquier motivo, no tendr m s que a a desactivar el plug-in de RPC y seguir utilizando el resto.

c FUOC

A5 Detecci n de ataques en red con Snort o

Trfico de red paquetes

Decodificador de paquetes (sniffer)

Interfaz en modo promiscuo (eth1)

En la siguiente gura vemos un esquema donde el preprocesador de Snort utiliza dos de sus plug-ins para vericar el tipo del paquete que va recibiendo y pasarlo posteriormente al motor de detecci n. o

Motor de detecci n o

El motor de detecci n es el coraz n de Snort desde el punto de vista de sistema de deo o tecci n de intrusos. A partir de la informaci n proporcionada por el preprocesador y sus o o plug-ins asociados, el motor de detecci n contrastar estos datos con su base de reglas. o a Si alguna de las reglas coincide con la informaci n obtenida, el motor de detecci n se o o encargar de avisar al sistema de alertas indicando la regla que ha saltado. a

Como ya adalantabamos, el motor de detecci n de Snort se basa en una detecci n de o o usos indebidos a trav s de un reconocimiento de rmas de ataque. Para ello, el motor de e detecci n hace uso de los conjuntos de reglas asociados a Snort. Estos conjuntos de reglas o est n agrupados por categoras (troyanos, buffer overows, ataques contra servicios web, a etc.) y deben ser actualizados a menudo.

Una regla puede estar dividida en dos partes. En primer lugar tenemos la cabecera de la regla, en la que indicamos la acci n asociada a esta en caso de cumplirse (generaci n de un o o chero de registro o generaci n de una alerta), el tipo de paquete (TCP, UDP, ICMP, etc.), o la direcci n de origen y destino del paquete, etc. En segundo lugar est el campo option o a de la regla, donde encontraremos la informaci n que debe contener el paquete (en la parte o de datos, por ejemplo) para que se cumpla la regla.

Snort posee una sintaxis propia para la creaci n de las reglas. Esta sintaxis incluye el tipo o de protocolo, el contenido, la longitud, la cabecera, etc., que permiten especicar hasta el m s minimo detalle de la condici n que ha de darse para que un paquete cumpla dicha a o regla.

c FUOC

A5 Detecci n de ataques en red con Snort o

Preprocesador
paquetes

Motor de deteccin

HTTP encoding plug-in

Port scanning plug-in

Este es un ejemplo de regla de Snort:

alert tcp $EXTERNAL NET any -> $HOME NET 21 (msg:"FTP EXPLOIT STAT * dos attempt"; flow:to server,established; content:"STAT "; nocase; content:"*"; reference:bugtraq,4482; classtype:attempted-dos; sid:1777; rev:1;)

De todos los elementos que hemos visto, el motor de detecci n y la sintaxis utilizada por o las reglas de detecci n son las partes m s complicadas de comprender a la hora de estudiar o a el comportamiento de Snort.

Aun as, una vez que nos pongamos a trabajar con Snort y hayamos aprendido mnimamente la sintaxis utilizada, es bastante sencillo llegar a personalizar y ajustar el comportamiento de la funcionalidad de detecci n de Snort. o

Adem s, los conjuntos de reglas pueden ser activados o desactivados con facilidad para a poder as denir el comportamiento de detecci n deseado seg n el tipo de red donde Snort o u va a ser congurado.

En la siguiente gura podemos ver un sencillo esquema sobre el comportamiento general del motor de detecci n de Snort. o

c FUOC

10

A5 Detecci n de ataques en red con Snort o

Motor de deteccin
paquetes

Sistema de alertas e informes

Reglas

Cumple el paquete con alguna regla?

Si

No

Descartar

Sistema de alertas e informes

Una vez que la informaci n capturada por el decodicador de paquetes de Snort es anao lizada por el motor de detecci n, los resultados deben ser reportados de alguna forma. o Mediante este componente ser posible realizar esta funci n, pudiendo generar los resula o tados en distintos formatos y hacia distintos equipos.

Cuando una alerta es lanzada por el motor de detecci n, esta alerta puede suponer la geneo raci n de un chero de registro (log), ser enviada a trav s de la red mediante un mensaje o e SNMP o incluso ser almacenada de forma estructurada por alg n sistema gestor de base u de datos como, por ejemplo, MySQL o Postgres.

Adem s, es posible la utilizaci n de herramientas alternativas (desarrolladas por tercea o ras partes) que facilitan la visualizaci n y el tratamiento de la informaci n reportada por o o Snort. La mayor parte de estas herramientas est n disponibles para poder ser descargadas a libremente de Internet.

Como en el caso del motor de detecci n y el preprocesador, el sistema de alertas e informes o de Snort tambi n utiliza un esquema de plug-ins para el envo de alertas y noticaciones. e En la siguiente gura podemos ver un esquema sobre c mo funciona este sistema de notio caciones a trav s de plug-ins. e

Motor de deteccin

c FUOC

11

A5 Detecci n de ataques en red con Snort o

Servidor web (frontend)

Servidor de ficheros de registro (syslog)

Base de datos de alertas

Servidor web (frontend)

Sistema de alertas e informes

5.1.3. Consideraciones de seguridad con Snort

Aunque la nalidad de una aplicaci n como Snort es la de mejorar la seguridad de nuestra o red, es muy posible que este tipo de herramientas presenten vulnerabilidades (en su dise o, n en su c digo, en su conguraci n, etc.), por lo que su instalaci n en una red de producci n o o o o puede suponer un nuevo agujero en su seguridad.

Si un atacante consigue hacerse con un sistema donde est funcionando Snort, no ser a a posible poder conar en las alertas y noticaciones que este sistema de detecci n nos est o a ofreciendo. Ser necesario reinstalar todo el sistema y congurarlo de nuevo para poder a volver a conar en el.

Imaginemos, por ejemplo, que el sistema de detecci n que hemos instalado en la red y o donde est funcionando Snort tiene un puerto de SSH abierto para ofrecer la posibilidad a de trabajo remoto contra dicho sistema. Adem s, el sistema almacena las alertas en una a base de datos local y ejecuta un servidor de HTTP y HTTPS para ofrecer una interfaz web segura hacia las alertas y noticaciones reportadas por Snort y almacenadas en la base de datos local.

En este supuesto, el sistema de detecci n que hemos instalado en la red es igual de vulneo rable (o incluso m s) que cualquiera de los sistemas que queremos proteger. Para empezar, a este sistema de detecci n tiene abiertos toda una serie de puertos TCP, por ejemplo: SSH o (puerto 22), HTTP (puerto 80), HTTPS (puerto 443) y posiblemente MySQL (puerto 3306) o Postgres (puerto 5432). La mayor parte de los servidores que ofrecen estos servicios presentan deciencias de seguridad y, dependiendo de las versiones y de las condiciones de conguraci n, es posible que puedan ser explotados para realizar un ataque de intrusi n. o o

En ese momento, cualquiera que tenga acceso a dicha red podr realizar un escaneo de a puertos con alguna herramienta como, por ejemplo, Nmap, y tratar de realizar una captura de paquetes en caso de disponer de un equipo donde pueda colocar la tarjeta de red en modo promiscuo (o realizar un envenenamiento de ARP). Supongamos que dicho atacante encuentra, entre la informaci n obtenida, que existen deciencias en alguno de los servio cios anteriores y logra realizar con exito un ataque de intrusi n en el sistema donde Snort o est funcionando. En este caso, el sistema de detecci n dejar de ofrecer informaci n de a o a o conanza y sus alertas carecer n de valor. a

Aparte de las deciencias de seguridad que pudiesen existir en los servidores del ejemplo anterior, tambi n es posible encontrar este tipo de deciencias en el propio c digo de Snort. e o Aunque en la corta existencia de esta aplicaci n el n mero de incidentes de seguridad o u reportados por la comunidad de desarrolladores y de usuarios no es demasiado elevada (seguramente gracias a su dise o minimalista y basado en cadenas de plug-ins), es posible n encontrar versiones de Snort que presenten deciencias de programaci n que puedan ser o explotadas bajo ciertas condiciones.

c FUOC

12

A5 Detecci n de ataques en red con Snort o

Por el momento, algunas de las deciencias reportadas contra versiones antiguas de Snort cuentan con la posibilidad de poder realizar una denegaci n de servicio contra el n cleo de o u la aplicaci n (dependiendo de c mo haya sido congurado) y algunas deciencias de deso o bordamientos de buffer relacionadas con algunos de los plug-ins desarrollados por terceras partes. Aun as, y a diferencia de muchas otras herramientas de seguridad, Snort cuenta con un historial de deciencias de seguridad realmente muy bajo.

5.1.4. Utilizaci n de ACID como interfaz graca o

El prop sito de instalar Snort en una red no es unicamente obtener informaci n (intentos o o de intrusi n), sino analizar tal informaci n y poder tomar las acciones necesarias en funo o ci n de los datos obtenidos. Si el n mero de reglas activadas es elevado y el tr co de la o u a red aumenta con facilidad, no ser del todo sencillo analizar la informaci n reportada por a o Snort a no ser que utilicemos herramientas de visualizaci n adecuadas. o

Por otro lado, la faceta interesante de un sistema de detecci n como Snort no es simpleo mente registrar eventos o alertas, sino ser capaz de reaccionar a los intentos de intrusi n en o un periodo de tiempo razonablemente corto. As pues, ser necesario el uso de segundas a aplicaciones que ayuden a consolidar y analizar la informaci n reportada por Snort, con el o objetivo de alertar a los administradores de la red de los intentos de intrusi n analizados. o

Actualmente, existe un gran n mero de utilidades para trabajar con las alertas generadas u por Snort. Algunas de estas herramientas son mantenidas por la propia comunidad de desarrolladores de Snort, aunque tambi n podemos encontrar aplicaciones desarrolladas por e terceras partes. Este es el caso de la interfaz ACID (Analysis Console for Intrusion Databases) desarrollada dentro del proyecto AIRCERT del centro de coordinaci n CERT de o Carnegie Mellon. En el momento de escribir este documento, ACID es probablemente la mejor soluci n basada en software libre para el an lisis de las alertas y eventos reportados o a por Snort.

ACID es b sicamente un conjunto de scripts escritos en PHP que proporcionan una ina terfaz entre un navegador web y la base de datos donde Snort ir almacenando las alertas. a Aunque se trata de una herramienta a n en construcci n, su desarrollo cuenta ya con m s u o a de cuatro a os de experiencia. Durante este tiempo, ACID se ha convertido en una hern ramienta muy potente para la consolidaci n y el an lisis de alertas generadas por Snort. o a Aunque inicialmente ACID fue pensado para procesar unicamente informaci n reportada o por Snort, actualmente ACID es independiente de la base de datos de Snort y puede procesar informaci n de otros productos. Por ejemplo, es posible combinar ACID para analizar o informaci n reportada a trav s de netlter, o mensajes de control de acceso generados por o e productos de Cisco. Otras de las caractersticas que podemos destacar de ACID son las siguientes:

Decodicaci n y visualizaci n de paquetes TCP/IP. o o

Creaci n de diagramas y estadsticas basadas en fechas, horas, rmas, protocolo, etc. o

c FUOC

13

A5 Detecci n de ataques en red con Snort o

Alertas de Snort Si tratais de poner en marcha Snort en una red congestionada y con un numero razonable de rmas de deteccion activadas, la cantidad de alertas lanzadas por Snort puede alcanzar la centena en poco tiempo. Este enorme volumen de informacion no sera facil de tratar con la utilizacion de un simple navegador de cheros de registro.

Roman Danyliw Aunque dentro del proyecto colaboran distintas personas, el codigo de ACID sigue siendo mantenido por su creador original, Roman Danyliw. ACID puede ser descargado libremente desde la url http://acidlab.sourceforge.net/

Interfaz para la realizaci n de b squedas y creaci n de consultas. Los resultados de o u o

estas acciones se devolver n de forma estructurada con informaci n para facilitar la a o comprensi n de las alertas lanzadas por Snort. En esta informaci n se resaltar n las o o a direcciones de origen/destino, los puertos de origen/destino, estado de las banderas TCP/IP (TCP/IP ags), etc. Gesti n de alarmas. Se proporciona la posibilidad de crear grupos de alarmas l gicos, o o

donde almacenar la informaci n de los incidentes que sean necesario destacar. Tamo bi n existen opciones de manejo de las alarmas, permitiendo la eliminaci n de falsos e o positivos, exportaci n a trav s de correo electr nico y/o almacenamiento de las alertas o e o encontradas en la base de datos.

La estructura de ACID es multinivel y f cilmente escalable. Puede ser utilizado tanto en a un sistema aislado de la red, como con distintos equipos repartidos en diferentes capas de la red. La siguiente gura muestra la parte l gica del sistema: o

Navegador

Como se puede ver en la gura anterior, ACID trabaja con las alertas que diferentes sensores de Snort ir n depositando en una base de datos. Un conjunto de scripts escritos en a lenguaje PHP se encargar n de realizar las consultas pertinentes a la base de datos y transa formar los resultados en HTML para poder navegar desde un cliente de HTTP por los resultados ofrecidos por ACID. Los SGBD soportados por ACID son ocialmente PostgreSQL y MySQL, aunque es posible modicar el c digo de la aplicaci n para poder trabajar con o o otros SGBD basados en SQL y soportados por PHP. Respecto al servidor de HTTP, ACID puede funcionar correctamente bajo cualquier servidor web que soporte PHP4. Aun as, es posible encontrarse con complicaciones con seg n qu servidores a causa de las restricciu e

c FUOC

14

A5 Detecci n de ataques en red con Snort o

Red monitorizada

3Com

Snort
3Com

Snort

Base de datos

Red monitorizada

Servidor HTTP/ACID

Navegador

Navegador

ones relacionadas con la generaci n de gr cas y estadsticas. Esta parte de la aplicaci n o a o est especialmente pensada para funcionar en un sistema GNU/Linux, junto con el servidor a de HTTP Apache.

La instalaci n y conguraci n de los prerrequisitos b sicos de ACID en un sistema GNU/Linux o o a (conjunto de sensores de Snort, servidor de HTTP Apache, int rprete de lenguaje PHP4, e libreras gr cas necesarias, SGBD, etc.) no ser n detallados en el presente documento, a a pues escapan a la nalidad del mismo. As pues, veremos a continuaci n un ejemplo de o c mo utilizar ACID en un sistema con los anteriores prerrequisitos ya instalados y cono gurados.

Suponiendo que tenemos ACID correctamente instalado en un sistema GNU/Linux con direcci n IP 172.16.77.2, trataremos de acceder a la interfaz principal de ACID deso de un cliente de HTTP a trav s de la URL http://172.16.77.2/acid/. Si es la e primera vez que accedemos a ACID, nos aparecer en el navegador la siguiente pantalla: a

El motivo de la pantalla anterior no es m s que anunciarnos que existen algunas tablas de la a base de datos que a n no han sido generadas. Normalmente, la base de datos que utilizar u a Snort viene en un chero de consultas SQL para un SGBD MySQL o PostgreSQL. Pero en dicho chero no vienen las tablas que utilizar ACID para indexar las tablas de Snort. a Si pulsamos sobre el enlace Setup page, el servidor ejecutar el script necesario para a generar las tablas requeridas.

c FUOC

15

A5 Detecci n de ataques en red con Snort o

Si todo va bien, es decir, el gui n se ejecuta correctamente en el servidor y las tablas o necesarias para el funcionamiento de ACID se crean correctamente, aparecer en nuestro a navegador la siguiente pantalla:

A partir de este momento, podemos empezar a utilizar ACID. Como veremos en las siguientes im genes, su utilizaci n es muy sencilla. Nada m s entrar, veremos la pantaa o a lla principal de ACID. Parte de la informaci n que veremos en esta pantalla son las eso tadsticas generales de la actividad reportada con Snort: el nombre y la categora de las alertas que han sido lanzadas, el n mero de alertas agrupado por protocolos, porcentajes u de alertas lanzadas, etc.

Cada una de estas informaciones se ofrece en forma de enlace. Pulsando sobre cualquiera de estos enlaces, podremos entrar y seleccionar la informaci n correspondieno te. Por el momento, la unica informaci n reportada es el nombre de la base de da o tos (snort@localhost), la marca de tiempo de la ultima consulta realizada (16 de abril de 2003) y la versi n del esquema utilizado. Por el momento, y tal como indica o la etiqueta time window, ninguna alerta habr sido reportada. a

c FUOC

16

A5 Detecci n de ataques en red con Snort o

Para comprobar el correcto funcionamiento de Snort, y asegurarnos de que ACID accede sin problemas a las alertas reportadas en la base de datos, realizaremos desde alg n otro u equipo con acceso a la red local una exploraci n de puertos mediante la herramienta Nmap: o

root$nmap 172.16.77.2 22/tcp 111/tcp 993/tcp 995/tcp 1024/tcp open open open open open

Una vez realizada la exploraci n de puertos anterior, veremos c mo, al refrescar la pantalla o o principal, ACID nos informa de que cuatro alertas han sido a adidas a la base de datos de n Snort.

En la gura anterior podemos ver c mo el resto de marcadores de la pantalla principal se o han actualizado. La informaci n m s importante a destacar es que la base de datos recibe o a alertas de un unico sensor, que el n mero total de alertas reportadas es de cuatro y que el u time window es tan s lo de un segundo. Por otro lado, de las cuatro alertas, vemos que o hay tres alertas unicas, organizadas en un total de dos categoras.

Tambi n podemos observar en la gura anterior que dos de las alertas pertenecen a tr co e a TCP, y otras dos pertenecen a tr co ICMP. Respecto a las estadsticas sobre direcciones a IP y puertos TCP y UDP, podemos contrastar tambi n que dos direcciones IP de origen, e dos direcciones IP de destino, y cuatro puertos TCP han sido reportados.

Para elevar un poco m s el n mero de alertas reportadas por Snort, podemos utilizar a u a continuaci n alg n esc ner de vulnerabilidades contra el equipo que alberga el sensor o u a de Snort, o contra alg n equipo que se encuentre dentro de la misma red. El esc ner de u a vulnerabilidades escogido es Raccess.

c FUOC

17

A5 Detecci n de ataques en red con Snort o

Raccess (Remote Access Session) es un esc ner de vulnerabilidades en red que a analiza la integridad de un sistema trantando de obtener un acceso ilegal contra alguno de sus equipos mediante el uso de t cnicas remotas de intrusi n. e o La principal diferencia entre Raccess y otros esc neres de vulnerabilidades similaa res como, por ejemplo, Nessus, es la utilizaci n de ataques reales contra los equipos o a analizar. De este modo, si Raccess encuentra una vulnerabilidad remota en alguno de los equipos analizados, tratar de obtener una cuenta con privilegios de a administrador. Actualmente, Raccess incluye un gran n mero de ataques remotos reales para disu tintos sistemas operativos y funciona sobre sistemas GNU/Linux, BSD y Solaris. Aun as, Raccess no es una herramienta para atacantes. Raccess es una utilidad para administradores y especialistas en seguridad de redes. De hecho, no utiliza t cnicas silenciosas para tratar de pasar desapercibida. Por tanto, se trata de una e herramienta muy ruidosa, cuya utilizaci n es f cil de detectar por las m quinas o a a remotas.

La siguiente imagen muestra la utilizaci n de Raccess contra el equipo 172.16.77.2, o aunque los resultados ofrecidos por Raccess han sido simplicados. Como vemos, tras realizar una primera exploraci n de puertos contra el equipo elegido para la exploraci n, o o Raccess seleccionar de su base de datos de ataques aquellos que coincidan con los sera vicios abiertos, teniendo en cuenta el sistema operativo de destino, el servidor que ofrece cada servicio, etc.

root$raccess 172.16.77.2 ... --Service ssh Port 22: Opened!!-Banner Info: SSH-1.99-OpenSSH_3.1p1 --Checking named version... Named version: 8.2.2-P5 --Service sunrpc Port 111: Opened!!-... ~Scan Completed!! Starting attack session... ... Named exploit Do you want to run this exploit (y/n)? Y ... Wu-ftpd exploit Do you want to run this exploit (y/n)? Y ...

c FUOC

18

A5 Detecci n de ataques en red con Snort o

De nuevo en ACID, si pulsamos sobre la opci n del navegador para refrescar la pantalla o principal, o esperamos a que la interfaz se autorrefresque por s sola, podremos ver c mo o se han actualizado los ndices tras la ejecuci n de algunos de los ataques de explotaci n o o ofrecidos por raccess.

A continuaci n, pulsaremos sobre el enlace que apunta hacia la pantalla de alertas unicas o (Unique alerts) para poder ver un listado de las siete alertas agrupadas por la categora de la regla de detecci n que las ha hecho saltar. Podremos realizar una ordenaci n de o o las alertas, de forma ascendente o descendente, para, m s adelante, visualizar unicamente a aquellas alertas que se producen con mayor frecuencia. Para ello, basta con pulsar sobre la fecha correspondiente (sobre los smbolos > o <) en la cabecera de la columna deseada. La siguiente gura muestra la pantalla de alertas unicas.

Si analizamos la pantalla anterior, vemos c mo cada lnea muestra una de las alertas reporo tadas por Snort. Cada una de estas lneas consta de gran n mero de campos que podremos u seleccionar. Dos de los campos m s interesantes son el campo de clasicaci n de la alerta a o y la referencia hacia la base de datos de ataques (como, por ejemplo, Arachnids o CVE) que contendr la explicaci n del ataque detectado. Esta informaci n, as como la informaci n a o o o relacionada con el resto de los campos, es obtenida de las reglas cuando Snort registra la alerta en la base de datos. Si pulsamos sobre el enlace que apunta hacia Arachnids o CVE,

c FUOC

19

A5 Detecci n de ataques en red con Snort o

podremos ver una explicaci n detallada de la alerta lanzada. El campo de clasicaci n, o o por otro lado, ayuda a agrupar las alertas por categoras. En la siguiente gura, podemos ver la informaci n reportada por Arachnids respecto a uno de los ataques reportados por o Snort tras ejecutar Racess.

c FUOC

20

A5 Detecci n de ataques en red con Snort o

Finalmente, si pulsamos sobre el identicador de alguna de las alertas, pasaremos a ver la informaci n relacionada con el paquete que provoc la alerta. Como vemos en la siguiente o o gura, cada paquete registrado por Snort es mostrado por ACID de manera no codicada. As, veremos la informaci n relacionada con los ags TCP (si los hay), las opciones y el o contenido del paquete, la direcci n IP de origen y destino del datagrama IP, el payload del o paquete, etc. Esta informaci n puede ser de gran utilidad para determinar si efectivamente o la alerta lanzada es una alerta real, o si por el contrario es una falsa alarma. En este caso, podremos realizar los ajustes necesarios sobre Snort para tratar de reducir el n mero de u falsas alarmas.

c FUOC

21

A5 Detecci n de ataques en red con Snort o

Resumen

En este m dulo hemos realizado una primera aproximaci n a Snort, una herramienta para o o la detecci n de intrusos basada en software libre. El objetivo principal de Snort es ayudar o a los administradores de una red a realizar una vigilancia continuada del tr co de la red a en busca de intentos de intrusi n o usos indebidos en la misma. o

Al inicio del m dulo hemos repasado brevemente los orgenes de la herramienta y hemos o estudiado de modo general su arquitectura y su forma de trabajar. Tambi n hemos visto ale gunas de las deciencias existentes en Snort, incluyendo como problem tica la posibilidad a de falsos positivos y falsos negativos por parte del producto.

Otra problem tica a la hora de utilizar Snort, al igual que ocurre con otras herramientas a similares, es la dicultad de navegar y analizar la gran cantidad de alertas o avisos de seguridad que se producir n. Generalmente, entre el tr co normal de una red conectada a a a Internet encontraremos una elevada cantidad de intentos de intrusi n o ataques en general. o As pues, si instalamos un sensor de Snort en una red de similares caractersticas, con un volumen de tr co elevado, es muy probable que el n mero de alertas supere el millar en a u poco tiempo.

Actualmente, existe un gran n mero de aplicaciones basadas en software libre para realizar u tareas de consolidaci n de informaci n y an lisis de las alertas de Snort. Estas aplicaciones o o a ser n un buen complemento para tratar de ajustar la base de rmas de Snort, reduciendo a as el primero de los inconvenientes comentados, y ayudando en las tareas de an lisis y a consolidaci n para solucionar el segundo problema. o

De las distintas soluciones existentes hemos visto ACID como interfaz de consultas y de navegaci n sobre las alertas de Snort. ACID es una herramienta interactiva con interesantes o funcionalidades para la exploraci n y an lisis de informaci n. No se trata de una interfaz o a o exclusiva para Snort, sino que puede ser utilizada como interfaz de otras herramientas similares. Desarrollada dentro del proyecto AIRCERT del centro de coordinaci n CERT o de Carnegie Mellon, ACID o Analysis Console for Intrusion Databases es, en el momento de escribir esta documentaci n, la mejor soluci n basada en software libre para el an lisis o o a de las alertas y eventos reportados por Snort.

A lo largo de la ultima secci n, hemos visto c mo ACID proporciona los medios oportunas o o para ejecutar las consultas oportunas a la base de datos de alertas. Se trata de una interfaz muy sencilla de utilizar, con un gran n mero de funcionalidades para facilitar el trabajo u del analista como, por ejemplo, agrupaci n de alertas por categoras, visualizaci n a alto o o nivel de los paquetes responsables de generar las alertas, estadsticas de las alertas por protocolo, etc. Otras funcionalidades, como la generaci n de informes y gr cas, son o a tambi n f cilmente realizadas mediante la utilizaci n de esta interfaz. e a o

c FUOC

22

A5 Detecci n de ataques en red con Snort o

Bibliografa
[1] Beale, J.; Foster, J. C.; Posluns J. ; Caswell, B. (2003). Snort 2.0 Intrusion Detection. Syngress Publishing.

[2] Eyler, P. (2001). Networking Linux: A Practical Guide to TCP/IP. New Riders Publishing.

[3] Rehman, R. (2003). Intrusion Detection Systems with Snort. Advanced IDS Techniques Using Snort, Apache, MySQL, PHP, and ACID. Prentice Hall PTR.

[4] Stanger, J.; Lane, P. T.; Danielyan E. (2001). Hack Proong Linux: A Guide to Open Source Security. Syngress Publishing, Inc.

[5] Toxen, B. (2000). Real World Linux Security: Intrusion Prevention, Detection, and Recovery. Prentice Hall PTR.

c FUOC

23

A5 Detecci n de ataques en red con Snort o

También podría gustarte