|

TALLER de Sistemas de detección de intrusiones.
SNORT
CAPÍTULO I:
-
BREVE DESCRIPCIÓN
-
TIPOS DE IDS
-
ARQUITECTURA
-
DÓNDE COLOCAR UN IDS
-
INTRODUCCIÓN A SNORT
BREVE DESCRIPCIÓN
de un sistema de Detección de Intrusiones (IDS)
- Un IDS o Sistema de Detección de Intrusiones es una herramienta de seguridad que intenta
detectar o monitorizar los eventos ocurridos en un determinado sistema informático o red
informática en busca de intentos de comprometer la seguridad de dicho sistema.
- Los IDS buscan patrones previamente definidos que impliquen cualquier tipo de actividad
sospechosa o maliciosa sobre nuestra red o host.
- Los IDS aportan a nuestra seguridad una capacidad de prevención y de alerta anticipada
ante cualquier actividad sospechosa. No están diseñados para detener un ataque, aunque
sí pueden generar ciertos tipos de respuesta ante éstos.
- Los IDS: aumentan la seguridad de nuestro sistema, vigilan el tráfico de nuestra red, examinan los
paquetes analizándolos en busca de datos sospechosos y detectan las primeras fases de cualquier ataque como pueden
ser el análisis de nuestra red, barrido de puertos, etc.
TIPOS DE IDS
Según sus características
1. HIDS (Host IDS)
Protege contra un único Servidor, PC o host. Monitorizan gran cantidad de eventos, analizando actividades
con una gran precisión, determinando de esta manera qué procesos y usuarios se involucran en una determinada
acción. Recaban información del sistema como ficheros, logs, recursos, etc, para su posterior análisis
en busca de posibles incidencias. Todo ello en modo local, dentro del propio sistema. Fueron los primeros IDS en
desarrollar por la industria de la seguridad informática.
2. NIDS (Net IDS)
Protege un sistema basado en red. Actúan sobre una red capturando y analizando paquetes de red, es
decir, son sniffers del tráfico de red. Luego analizan los paquetes capturados, buscando patrones que
supongan algún tipo de ataque.
Bien ubicados, pueden analizar grandes redes y su impacto en el tráfico suele ser pequeño. Actúan
mediante la utilización de un dispositivo de red configurado en modo promiscuo (analizan ,"ven"
todos los paquetes que circulan por un segmento de red aunque estos nos vayan dirigidos a un determinado equipo).
Analizan el trafico de red, normalmente, en tiempo real. No sólo trabajan a nivel TCP/IP, también lo
pueden hacer a nivel de aplicación.
Las capas del TCP/IP y las del modelo OSI, y su correspondencia:
*A este tipo de IDS pertenece Snort.
3. DNIDS
Este tipo de IDS, más que proteger, monitoriza la actividad entre varias redes. Tiene una visión
global.
|
Por el tipo de respuesta
Son aquellos IDS que notifican a la autoridad competente o administrador de la
red mediante el sistema que sea, alerta, etc. Pero no actúa sobre el ataque o atacante.
Generan algún tipo de respuesta sobre el sistema atacante o fuente de
ataque como cerrar la conexión o enviar algún tipo de respuesta predefinida en nuestra
configuración.
Snort puede funcionar de las dos maneras.
ARQUITECTURA DE UN IDS
Normalmente la arquitectura de un IDS, a grandes rasgos, está formada:
- La fuente de recogida de datos. Estas fuentes pueen ser un log, dispositivo de red, o como en
el caso de los IDS basados en host, el propio sistema.
- Reglas que contienen los datos y patrones para detectar anomalías de seguridad en el
sistema.
- Filtros que comparan los datos snifados de la red o de logs con los patrones
almacenados en las reglas.
- Detectores de eventos anormales en el tráfico de red.
- Dispositivo generador de informes y alarmas. En algunos casos con la sofisticación suficiente como para
enviar alertas via mail, o SMS.
Esto es a modo general. Ya veremos que cada IDS implementa la arquitectura de manera diferente.
Snort, por ejemplo, tiene una arquitectura dividida en tres subsistemas:
- Decodificador de paquetes
- Motor de detección
- Loggins y alertas
Evidentemente, son parte de la arquitectura global de un IDS que hemos comentado líneas más
arriba.
DÓNDE COLOCAR EL IDS
Una actitud paranoica por nuestra parte nos podría llevar a instalar un IDS en cada host ó en cada
tramo de red. Esto último sería un tanto lógico cuando se trata de grandes redes, no es nuestro
caso ahora. Lo lógico sería instalar el IDS en un dispositivo por donde pase todo el tráfico de
red que nos interese.
Dificultades
- Un problema de los IDS es cuando queremos implementarlos en redes commutadas ya que no hay segmento de red
por donde pase todo el tráfico.
- Otro problema para un IDS son las redes con velocidades de tráfico muy altas en las cuales es
difícil procesar todos los paquetes.
Posición de IDS

- Si colocamos el IDS antes del cortafuegos capturaremos todo el tráfico de entrada y salida de nuestra
red. La posibilidad de falsas alarmas es grande.
- La colocación detrás del cortafuegos monitorizará todo el tráfico que no sea
detectado y parado por el firewall o cortafuegos, por lo que será considerado como malicioso en un
alto porcentaje de los casos . La posibilidad de falsas alarmas muy inferior.
- Algunos administradores de sistemas colocan dos IDS, uno delante y otro detrás del
cortafuegos para obtener información exacta de los tipos de ataques que recibe nuestra red ya que si el
cortafuegos está bien configurado puede parar o filtras muchos ataques.
En ambientes domésticos, que es el propósito de este taller sobre IDS y Snort,
podemos colocar el IDS en la misma máquina que el cortafuegos. En este caso actúan en paralelo,
es decir, el firewall detecta los paquetes y el IDS los analizaría.
INTRODUCCION A SNORT
Snort es un IDS o Sistema de detección de intrusiones basado en red (NIDS).
Implementa un motor de detección de ataques y barrido de puertos que permite registrar, alertar y
responder ante cualquier anomalía previamente definida como patrones que corresponden a ataques, barridos,
intentos aprovechar alguna vulnerabilidad, análisis de protocolos, etc conocidos. Todo esto en tiempo
real.
Snort (www.snort.org) está disponible bajo licencia GPL,
gratuito y funciona bajo plataformas Windows y UNIX/Linux. Es uno de los más usados y dispone
de una gran cantidad de filtros o patrones ya predefinidos, así como actualizaciones constantes ante casos
de ataques, barridos o vulnerabilidades que vayan siendo detectadas a través de los distintos boletines de
seguridad.
Este IDS implementa un lenguaje de creación de reglas flexible, potente y sencillo. Durante su
instalación ya nos provee de cientos de filtros o reglas para backdoor, ddos, finger, ftp, ataques web, CGI,
escaneos Nmap....
Puede funcionar como sniffer (podemos ver en consola y en tiempo real qué ocurre en
nuestra red, todo nuestro tráfico), registro de paquetes (permite guardar en un archivo los
logs para su posterior análisis, un análisis offline) o como un IDS normal (en este caso
NIDS).
En este taller daremos una importancia mayor a su funcionamiento como NIDS y, sobre todo, a la creación
personalizada de reglas e interpretación de las alertas.
La colocación de Snort en nuestra red puede realizarse según el tráfico quieren vigilar:
paquetes que entran, paquetes salientes, dentro del firewall, fuera del firewall... y en realidad
prácticamente donde queramos.
Una característica muy importante e implementada desde hace pocas versiones es FlexResp. Permite, dada una
conexión que emita tráfico malicioso, darla de baja, hacerle un DROP mediante el envío de un
paquete con el flag RST activa, con lo cual cumpliría funciones de firewall, cortando las
conexiones que cumplan ciertas reglas predefinidas. No sólo corta la conexiones ya que
puede realizar otras muchas acciones. Veremos más adelante su funcionamiento y ejemplos.
Formato de la cabecera (header) del TCP

- Puerto origen (16 bits). Puerto de la máquina origen. Al igual que el puerto destino es
necesario para identificar la conexión actual.
- Puerto destino (16 bits). Puerto de la máquina destino.
- Número de secuencia (32 bits). Indica el número de secuencia del primer byte que trasporta
el segmento.
- Número de acuse de recibo (32 bits). Indica el número de secuencia del siguiente byte que
se espera recibir. Con este campo se indica al otro extremo de la conexión que los bytes anteriores se han
recibido correctamente.
- Posición de los datos (4 bits). Longitud de la cabecera medida en múltiplos de 32 bits
(4 bytes). El valor mínimo de este campo es 5, que corresponde a un segmento sin datos (20
bytes).
- Reservado (6 bits). Bits reservados para un posible uso futuro.
- Bits de código o indicadores (6 bits). Los bits de código determinan el propósito y
contenido del segmento. A continuación se explica el significado de cada uno de estos bits (mostrados de
izquierda a derecha) si está a 1:
URG. El campo Puntero de urgencia contiene información válida.
ACK. El campo Número de acuse de recibo contiene información válida, es decir, el segmento
actual lleva un ACK. Observemos que un mismo segmento puede transportar los datos de un sentido y las confirmaciones
del otro sentido de la comunicación.
PSH. La aplicación ha solicitado una operación push (enviar los datos existentes en la
memoria temporal sin esperar a completar el segmento).
RST. Interrupción de la conexión actual.
SYN. Sincronización de los números de secuencia. Se utiliza al crear una conexión para indicar al
otro extremo cual va a ser el primer número de secuencia con el que va a comenzar a transmitir (veremos que no
tiene porqué ser el cero).
FIN. Indica al otro extremo que la aplicación ya no tiene más datos para enviar. Se utiliza para
solicitar el cierre de la conexión actual. |
- Ventana (16 bits). Número de bytes que el emisor del segmento está dispuesto a aceptar por
parte del
destino.
- Suma de verificación (24 bits). Suma de comprobación de errores del segmento actual. Para
su cálculo se utiliza una pseudo-cabecera que también incluye las direcciones IP origen y destino.
- Puntero de urgencia (8 bits). Se utiliza cuando se están enviando datos urgentes que tienen
preferencia sobre todos los demás e indica el siguiente byte del campo Datos que sigue a los datos urgentes. Esto
le permite al destino identificar donde terminan los datos urgentes. Nótese que un mismo segmento puede contener
tanto datos urgentes (al principio) como normales (después de los urgentes).
- Opciones (variable). Si está presente únicamente se define una opción: el tamaño
máximo de segmento que será aceptado.
- Relleno. Se utiliza para que la longitud de la cabecera sea múltiplo de 32 bits.
- Datos. Información que envía la aplicación.
También se puede usar junto a MySQL o Microsoft
SQL, ejecutando consultas SQL a una base de datos. Guarda logs también en formato
XML.
No se limita sólo al análisis de los protocolos típicos como ftp, smtp, http, pop3, telnet
... , además analiza otros: ethernet, arp, decnet, lat, rarp ...

Recompone tráfico fragmentado, analiza tráfico tipo BackOrifice (independientemente del
puerto usado), es capaz de "ver" datos del tipo decode o unicode, traceroute, pings.....
Puede actuar como antivirus, aunque esta opción no es muy recomendable. Es mejor dejar esta tarea a
aplicaciones preparadas para ello.
Snort como sniffer se basa en las librerías de captura de paquetes libcap que provee a snort
de la capacidad de sniffer de paquetes. En windows la librería sería WinPCAP
http://winpcap.polito.it/ .
Snort puede, para su fácil configuración y gestión, usarse mediante una interfaz
gráfica. Aquí hablaremos de IDScenter.

IDSCenter, ahora en su versión 1.09 Beta 2, es una interface gráfica que nos sirve para
configurar todas las características de Snort como las alertas, tests, reglas, variables, funcionamiento
junto a MySQL o BlackIce Defender, rotación de logs, notificaciones via mail o sonido, plugins,
preprocesadores, FlexResp ...
EJEMPLO de funcionamiento básico en los tres modos:
- Usando Snort en modo IDS:
Snort -l log -dev -h 192.168.4.0/24 -c snort.conf
(Revisemos el contenido de la carpeta log)
- Usando Snort en modo sniffer:
Snort -dev
- Usando Snort en modo Packet Logger (registro de paquetes):
Snort -dev -l log
(Revisemos el contenido de la carpeta log)
EXPLICACIÓN DE LAS OPCIONES UTILIZADAS:
| -l log lo usamos para volcar la información la carpeta log que se supone está ubicada
en C:\Snort\log. En esta carpeta se estructurarán una serie de directorios con
el nombre de la dirección IP del host que genere el tráfico o intrusión. También creará
en esta carpeta un archivo (alert.ids) donde registrará las alarmas que genere así como un
archivo de registro de escaneado de puertos (si se da el caso), etc. Contenido de un alert.ids:

-dev imprime en pantalla la dirección IP y cabeceras TCP/UDP/ICMP, los datos que
pasan por la interface de red con información bastante detallada.
-h 192.168.4.0/24 es el home network (nuestra red).
-c snort.conf indicamos que SNORT use el fichero de configuración de Snort con la
lista de archivos de reglas y otros parámetros. Esta opción tiene una variante al cambiarse el archivo
snort.conf por uno de reglas o rules personalizada.
Snort puede obtener los datos desde una interface de red -i eth0 o desde un archivo -r
nombarchivo. Normalmente no hará fata indicarle la interface de red.
|
-Taller IDS-
|