Taller de Sistemas de detección de intrusiones SNORT

download Taller de Sistemas de detección de intrusiones SNORT

of 49

Transcript of Taller de Sistemas de detección de intrusiones SNORT

Taller de Sistemas de deteccin de intrusiones SNORT1 - Objetivos~- Cmo funciona Snort en todas sus facetas, instalacin y configuracin //(sistemas Windows)//. interpretacin y configuracin de las alertas. Creacin de reglas (//Snort rules//). ~- Creacin de reglas desde cero, es decir, capturando paquetes considerados maliciosos en nuestra red, interpretndolos para sacar los datos que nos permitan crear los patrones y reglas snort. //Por ejemplo: detectar un ping desde un Windows 2000 usando un sniffer (Ethereal) y, analizando los paquetes de datos, averiguar qu datos son los que nos permiten saber que se trata de un ping, que proviene de un host con S.O. Windows 2000 y de qu manera implementarlo en un regla para que a partir de ese momento siempre nos detecte el ping.// ~- Prcticas y ejemplos de creacin de reglas, etc.

2 - Reglas SNORT 6-11-02Aqu disponis la recopilacin de las ltimas reglas snort actualizadas al 6-11-02, creo recordar. Tambin tienes un archivo *.rules con reglas especiales que no vienen incluidas en Snort por defecto. //Hay que tener cuidado, porque contiene tambin el fichero de configuracin de snort por defecto (snort.conf) y no conviene pisarlo que el personalizado que cada uno tenga.// Uno de los archivos de reglas //(vision18.rules)// contiene reglas para detectar ataques DDoS, troyanos, detectores de Sniffers, etc." ~- Enlace relacionado: Honeynet in spanish// (aadido por maty)//

3 - Breve descripcin~- Un IDS o Sistema de Deteccin de Intrusiones es una herramienta de seguridad que intenta //detectar o monitorizar los eventos// ocurridos en un determinado sistema informtico o red informtica 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 prevencin y de alerta anticipada ante cualquier actividad sospechosa. //No estn diseados para detener un ataque, aunque s pueden generar ciertos tipos de respuesta ante stos.// ~- Los IDS: //aumentan la seguridad de nuestro sistema, vigilan el trfico de nuestra red, examinan los paquetes analizndolos en busca de datos sospechosos y detectan las primeras fases de cualquier ataque como pueden ser el anlisis de nuestra red, barrido de puertos, etc.//

4 - Tipos de IDSSegn sus caractersticas

1. HIDS (Host IDS) Protege contra un nico Servidor, PC o host. Monitorizan gran cantidad de eventos, analizando actividades con una gran precisin, determinando de esta manera qu procesos y usuarios se involucran en una determinada accin. Recaban informacin del sistema como ficheros, logs, recursos, etc, para su posterior anlisis 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 informtica.

2. NIDS (Net IDS)

Protege un sistema basado en red. Actan sobre una red capturando y analizando paquetes de red, es decir, son sniffers del trfico de red. Luego analizan los paquetes capturados, buscando patrones que supongan algn tipo de ataque. Bien ubicados, pueden analizar grandes redes y su impacto en el trfico suele ser pequeo. Actan mediante la utilizacin 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 slo trabajan a nivel TCP/IP, tambin lo pueden hacer a nivel de aplicacin. 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, ms que proteger, monitoriza la actividad entre varias redes. Tiene una visin global.

Por el tipo de respuesta

o

Pasivos

Son aquellos IDS que notifican a la autoridad competente o administrador de la red mediante el sistema que sea, alerta, etc. Pero no acta sobre el ataque o atacante.

o

Activos

Generan algn tipo de respuesta sobre el sistema atacante o fuente de ataque como cerrar la conexin o enviar algn tipo de respuesta predefinida en nuestra configuracin.

Snort puede funcionar de las dos maneras.

5 - Arquitectura de un IDSNormalmente la arquitectura de un IDS, a grandes rasgos, est formada: ~1) 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. ~1) Reglas que contienen los datos y patrones para detectar anomalas de seguridad en el sistema. ~1) Filtros que comparan los datos snifados de la red o de logs con los patrones almacenados en las reglas. ~1) Detectores de eventos anormales en el trfico de red.

~1) Dispositivo generador de informes y alarmas. En algunos casos con la sofisticacin 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: ~1) Decodificador de paquetes ~1) Motor de deteccin ~1) Loggins y alertas Evidentemente, son parte de la arquitectura global de un IDS que hemos comentado lneas ms arriba.

6 - Dnde colocar el IDSUna actitud paranoica por nuestra parte nos podra llevar a instalar un IDS en cada host en cada tramo de red. Esto ltimo sera un tanto lgico cuando se trata de grandes redes, no es nuestro caso ahora. Lo lgico sera instalar el IDS en un dispositivo por donde pase todo el trfico de red que nos interese. Dificultades o o Un problema de los IDS es cuando queremos implementarlos en redes commutadas ya que no hay segmento de red por donde pase todo el trfico. Otro problema para un IDS son las redes con velocidades de trfico muy altas en las cuales es difcil procesar todos los paquetes. Posicin de IDS

o o o

Si colocamos el IDS antes del cortafuegos capturaremos todo el trfico de entrada y salida de nuestra red. La posibilidad de falsas alarmas es grande. La colocacin detrs del cortafuegos monitorizar todo el trfico 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 detrs del cortafuegos para obtener informacin 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 domsticos, que es el propsito de este taller sobre IDS y Snort, podemos colocar el IDS en la misma mquina que el cortafuegos. En este caso actan en paralelo, es decir, el firewall detecta los paquetes y el IDS los analizara.

7 - Introduccin a SNORT

Snort es un IDS o Sistema de deteccin de intrusiones basado en red (NIDS). Implementa un motor de deteccin de ataques y barrido de puertos que permite registrar, alertar y responder ante cualquier anomala previamente definida como patrones que corresponden a ataques, barridos, intentos aprovechar alguna vulnerabilidad, anlisis 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 ms 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 travs de los distintos boletines de seguridad. Este IDS implementa un lenguaje de creacin de reglas flexible, potente y sencillo. Durante su instalacin 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 trfico), registro de paquetes (permite guardar en un archivo los logs para su posterior anlisis, un anlisis 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 creacin personalizada de reglas e interpretacin de las alertas. La colocacin de Snort en nuestra red puede realizarse segn el trfico quieren vigilar: paquetes que entran, paquetes salientes, dentro del firewall, fuera del firewall... y en realidad prcticamente donde queramos. Una caracterstica muy importante e implementada desde hace pocas versiones es FlexResp. Permite, dada una conexin que emita trfico malicioso, darla de baja, hacerle un DROP mediante el envo de un paquete con el flag RST activa, con lo cual cumplira funciones de firewall, cortando las conexiones que cumplan ciertas reglas predefinidas. No slo corta la conexiones ya que puede realizar otras muchas acciones. Veremos ms adelante su funcionamiento y ejemplos.

Formato de la cabecera (header) del TCP

o o o o

Puerto origen (16 bits). Puerto de la mquina origen. Al igual que el puerto destino es necesario para identificar la conexin actual. Puerto destino (16 bits). Puerto de la mquina destino. Nmero de secuencia (32 bits). Indica el nmero de secuencia del primer byte que trasporta el segmento. Nmero de acuse de recibo (32 bits). Indica el nmero de secuencia del siguiente byte que se espera recibir. Con este campo se indica al otro extremo de la conexin que los bytes anteriores se han recibido correctamente. Posicin de los datos (4 bits). Longitud de la cabecera medida en mltiplos de 32 bits (4 bytes). El valor mnimo 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 cdigo o indicadores (6 bits). Los bits de cdigo determinan el propsito y contenido del segmento. A continuacin se explica el significado de cada uno de estos bits (mostrados de izquierda a derecha) si est a 1:

o o o

URG. El campo Puntero de urgencia contiene informacin vlida. ACK. El campo Nmero de acuse de recibo contiene informacin vlida, 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 comunicacin.

PSH. La aplicacin ha solicitado una operacin push (enviar los datos existentes en la memoria temporal sin esperar a completar el segmento). RST. Interrupcin de la conexin actual.

SYN. Sincronizacin de los nmeros de secuencia. Se utiliza al crear una conexin para indicar al otro extremo cual va a ser el primer nmero 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 aplicacin ya no tiene ms datos para enviar. Se utiliza para solicitar el cierre de la conexin actual.

o

Ventana (16 bits). Nmero de bytes que el emisor del segmento est dispuesto a aceptar por parte del destino. Suma de verificacin (24 bits). Suma de comprobacin de errores del segmento actual. Para su clculo se utiliza una pseudo-cabecera que tambin incluye las direcciones IP origen y destino. Puntero de urgencia (8 bits). Se utiliza cuando se estn enviando datos urgentes que tienen preferencia sobre todos los dems 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. Ntese que un mismo segmento puede contener tanto datos urgentes (al principio) como normales (despus de los urgentes). Opciones (variable). Si est presente nicamente se define una opcin: el tamao mximo de segmento que ser aceptado. Relleno. Se utiliza para que la longitud de la cabecera sea mltiplo de 32 bits. Datos. Informacin que enva la aplicacin.

o o

o o o

Tambin se puede usar junto a MySQL o Microsoft SQL, ejecutando consultas SQL a una base de datos. Guarda logs tambin en formato XML.

No se limita slo al anlisis de los protocolos tpicos como ftp, smtp, http, pop3, telnet ... , adems analiza otros: ethernet, arp, decnet, lat, rarp ...

Recompone trfico fragmentado, analiza trfico tipo BackOrifice (independientemente del puerto usado), es capaz de "ver" datos del tipo decode o unicode, traceroute, pings..... Puede actuar como antivirus, aunque esta opcin no es muy recomendable. Es mejor dejar esta tarea a aplicaciones preparadas para ello. Snort como sniffer se basa en las libreras de captura de paquetes libcap que provee a snort de la capacidad de sniffer de paquetes. En windows la librera sera WinPCAP http://winpcap.polito.it/ . Snort puede, para su fcil configuracin y gestin, usarse mediante una interfaz grfica. Aqu hablaremos de IDScenter.

IDSCenter, ahora en su versin 1.09 Beta 2, es una interface grfica que nos sirve para configurar todas las caractersticas de Snort como las alertas, tests, reglas, variables, funcionamiento junto a MySQL o BlackIce Defender, rotacin de logs, notificaciones via mail o sonido, plugins, preprocesadores, FlexResp ...

EJEMPLO de funcionamiento bsico en los tres modos:

o

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)

o

Usando Snort en modo sniffer:

Snort -dev

o

Usando Snort en modo Packet Logger (registro de paquetes):

Snort -dev -l log (Revisemos el contenido de la carpeta log)

EXPLICACIN DE LAS OPCIONES UTILIZADAS:

-l log lo usamos para volcar la informacin la carpeta log que se supone est ubicada en C:\Snort\log. En esta carpeta se estructurarn una serie de directorios con el nombre de la direccin IP del host que genere el trfico o intrusin. Tambin 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 direccin IP y cabeceras TCP/UDP/ICMP, los datos que pasan por la interface de red con informacin bastante detallada.

-h 192.168.4.0/24 es el home network (nuestra red).

-c snort.conf indicamos que SNORT use el fichero de configuracin de Snort con la lista de archivos de reglas y otros parmetros. Esta opcin 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.

8 - INSTALACIN Y CONFIGURACIN DEL IDS CENTEREn los siguientes captulos veremos la instalacin de IDSCenter, uno de los front-end (//interfaz grfico//) de Snort ms usados en sistemas Windows NT/2000/XP. Es licencia GNU General Public Licence //(GNU89)//.

9 - Descarga de IDSCenterEn el momento en que se escribe este captulo, la versin es la 109beta2 http://www.packx.net/packx/html/en/idscenter/index-idscenter.htm http://packetstormsecurity.nl/sniffers/snort/idscenter109beta2.zip Una vez descargado el archivo, lo descomprimimos, y ejecutamos el setup.exe. Seguimos los pasos normales para la instalacin de cualquier programa de Windows. Hay que tener en cuneta tambin que es necesario la instalacin de la librera WinPCAP: http://winpcap.polito.it/.

10 - ConfiguracinUna vez instalado el programa, lo ejecutamos y aparecer en la barra de iconos al lado del reloj:

un icono negro tachado de rojo. Este nuestro icono de IDSCenter. Botn derecho sobre el icono:

y pulsamos sobre Setting, tras lo cual aparecer el front-end de configuracin de Snort con el panel General > Main configuration:

Aqu comentaremos la configuracin de nuestro programa. En este captulo lo configuraremos desde IDSCenter con la configuracin ms bsica. Ms adelante iremos complicando la configuracin y viendo ms opciones.

Desde este panel configuraremos la versin de Snort instalada en nuestro sistema: "Snort 1.8" o "Snort 1.7".

o o o

Snort executable file: localizacin del ejecutable Snort.exe. Disponemos de un botn de navegacin para su facil localizacin. Log file: ubicacin del fichero de texto alert.ids, en el cual se almacenarn los logs de las alertas, intrusiones, etc a nuestro sistema. Log viewer: configura el tipo de salida para nuestros logs generados por Snort. Lo dejaremos de momento en internal logs viewer, aunque como vemos, podemos usar una salida tipo XML.

De momento esto es todo en este panel.

Vamos ahora al panel IDS rules > Snort config

Aqu le diremos a IDSCenter la ubicacin del fichero de configuracin de Snort (snort.conf).

Configuration file (Snort.conf): Ubicacin de snort.conf

Aqu no hace falta configurar nada ms. Ahora slo tendremos que pulsar en el botn "Apply" para cargar snort.conf y nos aparecer su contenido en la ventana.

Para comprobar que todo va bien y no hay errores de momento nos vamos al panel General > Overview:

En la ventana Configuration errors aparecern, si se da el caso, los errores de configuracin que hayamos cometido. Ms abajo en Snort commandline vemos la lnea de comandos que ejecutar Snort. Este paso de General > Overwiew para ver los errores de configuracin lo podemos realizar en cualquier momento.

Panel Log setting > Logging parameters

Aqu entre otras muchas opciones que veremos en prximos captulos, podemos seleccionar la interface de red. til para servidores con dos o ms interfaces de red. Si hacemos algn cambio debemos pulsar "Apply".

Si pulsamos "Test setting" aparecer una ventana DOS donde visualizaremos la ejecucin de Snort en lnea de comando para testear que con nuestra configuracin no existe error alguno.

En este caso vemos que tras la carga de Snort.exe con los parmetros de configuracin establecidos en IDSCenter, el sistema no nos devuelve error alguno y se queda el programa activo y en funcionamiento. Una vez visto esto, podemos cerrar la ventana.

11 - Puesta en marcha de SNORT con IDScenterUna vez realizados estos pasos ya podemos pulsar "Start Snort" que se encuentra arriba a la izquierda del panel que tengamos abierto.

Este icono que ahora aparece tachado dejar de estarlo y Snort entrar en funcionamiento como IDS,.

El panel de configuracin ya podemos cerrarlo. Si pulsamos sobre el icono de Snort > botn derecho del ratn, tendremos un pequeo men de opciones:

Pulsemos "View alerts" y veremos algo parecido a esto:

Este es el contenido del archivo alerts.ids donde se almacenan los logs de las alertas.

Si pulsamos en el men anterior "Open logs folder", aparecer el directorio logs con carpetas correspondientes a las direcciones IP de las mquinas que hayan sido logeadas por Snort, conteniendo detalles sobre la intrusin.

Ya tenemos trabajando a Snort como IDS, pero vamos a adelantar ahora algunas otras configuraciones.

12 - Otras opciones de IDSCenterEn el panel Alerts > Alert notification

Podemos configurar si queremos algn tipo de sonido (.wav) para las alarmas y el modo en que funcionarn stas.

Tambin podemos hacer trabajar conjuntamente Snort con BlackICE para usar las configuraciones de Autoblock que vienen implementadas en BlackICE. Slo tendremos que marcar en la casilla correspondiente e indicar donde esta el archivo de configuracin de BlackICE (recordemos que este cortafuegos software no para la salida al exterior de posibles troyanos, slo detecta y para los intentos de entrada, como el "cortafuegos" interno del XP).

En Alerts > Alert Mail podemos configurar Snort para que nos enve un mensaje va correo electrnico.

Siempre que queramos modificar alguna configuracin desde IDSCenter, una vez que lo hayamos iniciado, debemos parar Snort: "Stop Snort" y aplicar los cambios "Apply". Una vez hecho esto ya podemos otra vez "Start Snort".

Panel IDS rules > Rules/Signatures

En este panel vemos todas las reglas, ya preconfiguradas, que podemos activar/desactivar segn nuestras necesidades. Tambin podemos aadir otros set de reglas que hayamos escrito nosotros mismos.

El resto de configuraciones como Network variables, Preprocesadores, etc lo veremos en el siguiente captulo.

13 - Alert.ids: Fichero de alerta generado por SNORTEl fichero Alert.ids es el archivo donde se almacenarn las alertas y registros de paquetes generados por Snort. Tiene un formato ASCII plano, fcilmente editable por cualquier procesador de textos.

Alert.ids est ubicado en el directorio /log dentro de la carpeta donde se realiz la instalacin, normalmente C:\Snort.

*En este directorio tambin se almacenarn otros ficheros, como los relacionados a salidas o registros del preprocesador de scan de puertos o los registros de alertas asociados a la direccin IP que gener la alerta.

Para mejor comprensin de las alertas generadas por Snort, podemos configurar desde IDSCenter dos tipos de alertas:

1. Set alert mode FAST o Alerta Rpida 2. Set alert mode FULL o Alerta Completa

El modo Alerta Rpida nos devolver informacin sobre: tiempo, mensaje de la alerta, clasificacin , prioridad de la alerta, IP y puerto de origen y destino.

El modo de Alerta Completa nos devolver informacin sobre: tiempo, mensaje de la alerta, clasificacin, prioridad de la alerta, IP y puerto de origen/destino e informacin completa de las cabeceras de los paquetes registrados.

Para configurar estos dos modos:

Panel Log setting > Logging parameters

Marcamos en "Set alert mode (desactivate with Snort MySQL...)" y a continuacin entre Full y Fast. Terminada la operacin Aplicamos la regla ("Apply") y "Start Snort".

Veamos dos ejemplos:

Se trata de dos simples accesos a un servidor proxy ubicado en el puerto 8080 de la mquina destino IP: 192.168.4.15 por parte del host IP: 192.168.4.3 que realiza la conexin mediante el puerto 1382 en el primer caso y 3159 en el segundo.

Snort clasifica o describe esta alerta como un intento de prdida de informacin, clasificado como prioridad 2.

o Modo Alerta Rpida:

09/19-19:06:37.421286 [] [1:620:2] SCAN Proxy (8080) attempt []

[Classification: Attempted Information Leak] [Priority: 2] ...

... {TCP} 192.168.4.3:1382 -> 192.168.4.15:8080

o Modo Alerta Completa:

[] [1:620:2] SCAN Proxy (8080) attempt []

[Classification: Attempted Information Leak] [Priority: 2]

09/19-14:53:38.481065 192.168.4.3:3159 -> 192.168.4.15:8080

TCP TTL:128 TOS:0x0 ID:39918 IpLen:20 DgmLen:48 DF

S* Seq: 0xE87CBBAD Ack: 0x0 Win: 0x4000 TcpLen: 28

TCP Options (4) => MSS: 1456 NOP NOP SackOK

Informacin de la cabecera del paquete:

TCP TTL:128 TOS:0x0 ID:39918 IpLen:20 DgmLen:48 DF

S* Seq: 0xE87CBBAD Ack: 0x0 Win: 0x4000 TcpLen: 28

TCP Options (4) => MSS: 1456 NOP NOP SackOK

14 - CREACIN DE REGLAS CON SNORT==== Introduccin ==== El lenguaje usado por Snort es flexible y potente, basado en una serie de normas que sern las que nos sirvan de gua para la escritura de las reglas. Dentro de estas normas tenemos: ~- la descripcin de cada regla ~- cabecera ~- opciones ~- uso de preprocesadores Dentro del lenguaje Snort de rules //(reglas)// //veremos// el //uso intensivo de nociones de TCP/IP//, en concreto de TCP, flag, nmeros de secuencia, etc, etc, por lo cual es //imprescindible su repaso// para una mejor comprensin. Recomendado el uso tambn de //software de captura de paquetes// tipo Ethereal o TCPdump/Windump para ver en un escenario real la funcin de las nociones aprendidas sobre TCP como:

~- el establecimiento de una conexin TCP //(ver explicacin en el cptulo dedicado a Nmap APNDICE 1.1)// ~- el flujo de datos ~- el uso de flags ~- conexiones half-open usadas en escaneos de puertos ~- etc. ==== Reglas ==== La reglas Snort las podemos dividir en dos secciones lgicas, a saber: //cabecera de la regla y opciones//: ~- La cabecera contiene //la accin de la regla en s, protocolo, IPs, mscaras de red, puertos origen y destino y destino del paquete o direccin de la operacin.// ~- La seccin opciones contiene //los mensajes y la informacin necesaria para la decisin a tomar por parte de la alerta en forma de opciones.// Resumiendo lo visto hasta ahora, //las reglas Snort las dividiremos// de la siguiente manera: @@|| CABECERA ~- //Accin// ~- //Protocolos involucrados// ~- //Direcciones IP// ~//Nmeros de puerto// ~- //Direccin de la operacin// || OPCIONES ~- //Mensaje// ~//Opciones de decisin// || @@ EJEMPLO 1 Veamos ahora un ejemplo de regla Snort para alertar de un //escaneo nmap// del //tipo TCP ping//: alert tcp $EXTERNAL_NET any -> $HOME_NET any //(msg:"Escaneo ping con nmap";flags:A;ack:0; reference:arachnids,28;classtype:attempted-recon; sid:628; rev:1;)// Analicemos esta alerta: CABECERA ~- //Accin de la regla:// alert ~- //Protocolo:// tcp ~- //Direccion IP origen:// $EXTERNAL_NET //(toda la red)// ~- //Puerto IP origen:// any //(cualquiera)// ~- //Direccion IP destino:// $HOME_NET //(toda nuestra red)// ~- //Puerto IP destino:// any //(cualquiera)// ~- //Direccin de la operacin:// -> //(puede ser ->, 192.168.1.0/24 111 //(content:"|00 01 86 a5|"; msg: "mountd access";)// Acceso al //demonio de administracin// mountd de UNIX, el cual tiene tiene diversos problemas de desbordamiento de memoria intermedia, que permiten a un //atacante remoto// obtener //privilegios de administrador// en los sistemas vulnerables. Dos consideraciones: ~1) El orden de la seccin opciones. Primero las opciones y despus el mensaje. El orden, pues, es indiferente. ~1) La opcin //'content'//. Es una de las opciones //ms importantes// ya que nos permite la //bsqueda de contenidos dentro del campo datos del paquete IP//. Se puede aadir //'nocase'// para que la bsqueda de los datos no sea sensible a las maysculas. Estos datos pueden estar en formato hexadecimal, texto plano o binario.

15 - PracticasA. Descifrar la siguiente regla: alert tcp any 110 -> any any (msg:"Virus - Posible Virus-Worm Timofonica"; alert tcp any 110 -> content: "filename=\"TIMOFONICA.TXT.vbs\""; nocase; alert tcp any 110 -> reference:MCAFEE,98674; sid:799; classtype:misc-activity; rev:3;) B. Crear una regla para detectar download de ficheros *.MP3. Una posible solucin: alert tcp $EXTERNAL_NET any -> $HOME_NET any //(msg: "Cuidado, estn descargando MP3";flags: AP; content: ".mp3";)// Teora para esta prctica En TCP cuando una aplicacin desea asegurarse de que todos los datos que han pasado al nivel inferior se han transmitido, es decir, necesita estar segura de que todos los datos pasados a TCP han llegado al destino, se utiliza la funcin PUSH //(enviar inmediatamente o empujar los datos)//. Si se ejecuta una aplicacin de cliente en un equipo con //una implementacin de TCP/IP que no establece el bit PUSH en las operaciones de envo, se pueden producir retrasos en la respuesta//. Por tanto, las aplicaciones dedicadas a la transmisin de datos es norma comn el establecer este bit. Esto lo podemos verificar claramente observando cualquier traza de http://windump.polito.it/ TCPDump/Windump o http://www.ethereal.com/ Ethereal si capturamos alguna trasmisin de informacin entre host de nuestra red. Por otra parte, en cualquier transmisin de datos siempre se envan mensajes de acuse de recibo //(ACK - Acknowledgement)// conforme se van va recibiendo las tramas //(Asentimiento de

datos)//. Resumiendo. En cualquier transmisin de datos, //una vez establecida la conexin TCP// tenemos: ~- Un indicador P es el flag P //(push)// presente en la cabecera del paquete TCP, indicando que se trata de un //paquete normal conteniendo datos//. ~- Un ack=x indica que se est //confirmando la recepcin correcta de datos// hasta un determinado nmero de secuencia.

16 - Reglas Snort para casos varios1.- W32.Sircam.Worm@mm 2001-07-20 -- W32.Sircam.Worm@mm alert tcp any any -> any 25 (msg:"Virus - Posible W32.Sircam.Worm@mm"; content: "Te mando este archivo para que me des tu punto de vista"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Posible W32.Sircam.Worm@mm"; content: "Espero me puedas ayudar con el archivo que te mando"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Posible W32.Sircam.Worm@mm"; content: "Espero te guste este archivo que te mando"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Posible W32.Sircam.Worm@mm"; content: "Este es el archivo con la informaci=n que me pediste"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Posible W32.Sircam.Worm@mm"; content: "I send you this file in order to have your advice"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Posible W32.Sircam.Worm@mm"; content: "I hope you can help me with this file that I send"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Posible W32.Sircam.Worm@mm"; content: "I hope you like the file that I sendo you"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Posible W32.Sircam.Worm@mm"; content: "This is the file with the information that you ask for"; nocase; rev:2;) alert tcp any any -> any 25 (msg:"Virus - Posible VBS.VBSWG2.X@mm Worm"; content: "name=\"Homepage.HTML.vbs\""; nocase; rev:1;) 2.- Reglas para escaneos nmap varios zardoz~/src/snortrules>grep -i nmap * icmp.rules:alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP Nmap2.36BETA or HPING2 Echo ";itype:8;dsize:0; reference:arachnids,162;) icmp.rules:alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP PING NMAP"; dsize: 0; itype: 8; reference:arachnids,162;) scan.rules:alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"SCAN nmap fingerprint attempt";flags:SFPU; reference:arachnids,05;) scan.rules:alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"SCAN nmap TCP";flags:A;ack:0;

reference:arachnids,28;) zardoz~/src/snortrules>

17 - Practica comentada. Un caso realCrear una regla Snort "desde cero" para la deteccin de ping desde windows 2000.

Para detectar un ping realizado desde fuera de nuestra red, lo primero que debemos saber es qu tipo de datos intervienen en la cabecera del datagrama IP, en la ICMP y los datos.

*La teora TCP/IP nos dice que:

1. un echo request es de tipo 8 para obtener un echo reply (tipo 0)

2. en el campo Protocolo de la cabecera IP debe ir el dato ICMP y poco ms recordaremos.

As que la cuestin es cmo averiguar el resto de datos y, sobre todo, qu traza deja un ping enviado desde windows 2000.

*Formato de peticin y respuesta de eco. Ping echo / echo request:

Para todo esto contamos con un tipo de herramientas llamadas sniffers. Utilizaremos para nuestra prctica Ethereal por ser de los ms intuitivos y fciles de usar e interpretar. Podemos usar tambin TCPDump/Windump.

1. Segundos antes de enviar un ping desde un host emisor pulsamos en Ethereal (o el soft que hayamos elegido para la captura de trazas): Capture > Start.

2. En nuestro host receptor activamos el capturador de paquetes.

3. Enviamos el ping al host receptor, dejando unos segundos para que "termine" el ping y pulsamos Stop en el panel de captura del host receptor

4. Buscamos en la secuencia de captura o traza, la informacin de envo de ping usando el protocolo ICMP.

Pulsando encima de la informacin nos saldr algo paracido a esto en Ethereal:

Frame 61 (74 on wire, 74 captured) Arrival Time: Jun 28, 2002 09:04:11.247973000 Time delta from previous packet: 0.000060000 seconds Time relative to first packet: 1.864325000 seconds Frame Number: 61 Packet Length: 74 bytes Capture Length: 74 bytes Ethernet II

Destination: 00:04:76:9a:66:a6 (INFOGRAFIA5) Source: 00:01:02:9f:7b:0d (INFOGRAFIA3) Type: IP (0x0800) Internet Protocol, Src Addr: INFOGRAFIA3 (192.168.4.3), Dst Addr: INFOGRAFIA5 (192.168.4.5) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 60 Identification: 0x6aaa Flags: 0x00 .0.. = Don't fragment: Not set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 128 Protocol: ICMP (0x01) Header checksum: 0x46be (correct) Source: INFOGRAFIA3 (192.168.4.3) Destination: INFOGRAFIA5 (192.168.4.5) Internet Control Message Protocol Type: 0 (Echo (ping) reply) Code: 0 Checksum: 0x4e5c (correct) Identifier: 0x0200 Sequence number: 05:00 Data (32 bytes)

0000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 abcdefghijklmnop 0010 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69 qrstuvwabcdefghi

Las dos ltimas lneas son los datos (32 bytes) que nos servirn como firma o huella para nuestra regla snort.

Ya sabemos la firma o huella que deja un ping en Windows 2000. Ya slo nos queda crear una regla donde la opcion content tenga los datos "abcdefghijklmnopqrstuvwabcdefghi"

La regla nos quedara entonces:

alert ICMP $EXTERNAL any -> $INTERNAL any (msg: "ICMP ping en Windows 2000."; dsize: 32; itype: 8; content: "abcdefghijklmnopqrstuvwabcdefghi"; depth: 32;)

Donde aparecen nuevos indicadores:

o dsize: tamao de datos. comprobacin del tamao del contenido del paquete.

o itype: tipo de icmp, en este caso para un ping es 8.

o depth: extensin del tamao de datos que se ha de inspeccionar.

De esta prctica podemos desprender que para la creacin de la mayora de las reglas Snort el procedimiento es estudiar las trazas dejadas por cortafuegos y NIDS que supongan algn tipo de ataque o intrusin al sistema que queremos proteger.

Basndonos en el estudio de estas trazas, hallaremos la firma o huella del ataque que nos servir en la creacin de la regla de deteccin.

18 - Instalacin de las reglas creadas

Las reglas Snort de ubican en ficheros .rules (snort rules). Aqu vemos parte del contenido de uno de estos ficheros:

# (C) Copyright 2001,2002, Martin Roesch, Brian Caswell, et al. # All rights reserved. # $Id: virus.rules,v 1.16 2002/08/18 20:28:43 cazz Exp $ #

# VIRUS RULES #

# # NOTE: These rules are NOT being actively maintained. # # # If you would like to MAINTAIN these rules, e-mail # [email protected] # alert tcp any 110 -> any any (msg:"Virus - SnowWhite Trojan Incoming"; content:"Suddlently"; sid:720; classtype:misc activity; rev:3;) alert tcp any 110 -> any any (msg:"Virus - Possible pif Worm"; content: ".pif"; nocase; sid:721; classtype:misc-activity; rev:3;)

alert tcp any 110 -> any any (msg:"Virus - Possible NAVIDAD Worm"; content: "NAVIDAD.EXE"; nocase; sid:722; classtype:misc-activity; rev:3;)

alert tcp any 110 -> any any (msg:"Virus - Possible MyRomeo Worm"; content: "myromeo.exe"; nocase; sid:723; classtype:misc-activity; rev:3;)

alert tcp any 110 -> any any (msg:"Virus - Possible MyRomeo Worm"; content: "myjuliet.chm"; nocase; sid:724; classtype:misc-activity; rev:3;)

alert tcp any 110 -> any any (msg:"Virus - Possible MyRomeo Worm"; content: "ble bla"; nocase; sid:725; classtype:misc-activity; rev:3;)

alert tcp any 110 -> any any (msg:"Virus - Possible MyRomeo Worm"; content: "I Love You"; sid:726; classtype:misc-activity; rev:3;)

alert tcp any 110 -> any any (msg:"Virus - Possible MyRomeo Worm"; content: "Sorry... Hey you !"; sid:727; classtype:misc-activity; rev:3;)

alert tcp any 110 -> any any (msg:"Virus - Possible MyRomeo Worm"; content: "my picture from shake-beer"; sid:728; classtype:misc-activity; rev:3;) Crearemos un fichero como este personalizado para almacenar nuestras reglas creadas (lo importante de este fichero de texto plano son las reglas, el resto -con la marca # - es slo a ttulo informativo).

Estos ficheros .rules se almacenan en el directorio raz de Snort (por defecto).

Instalacin de las reglas desde IDSCenter

Panel de IDSCenter > IDS rules > Rules/Signatures

Con el navegador del panel buscamos nuestro archivo con las reglas o regla creada (.rules), la aadimos al set con "Add" y aplicamos con "Apply".

Esta operacin la realizaremos, como ya comentamos en el TEMA 8, con Snort parado Stop Snort, una vez hecho todo el proceso lo volveremos a iniciar con los cambios aplicados.

19 - SNORT EN LINEA DE COMANDOSYa adelantamos algo sobre usar Snort en lnea de comando en el captulo I de esta serie. Ahora nos adentraremos en el uso de Snort de esta forma, //abandonando por completo IDSCenter y cualquier GUI intermedia//. Aprenderemos tambin a configurar: ~- Reglas ~- Preprocesadores ~- y otras opciones desde el archivo de configuaciones de snort: //snort.conf.// Todos los ejemplos, mientras no se indique lo contrario, sern vlidos para win32 y Linux / UNIX. C:\Snort20\bin>snort -*> Snort!