Professional Documents
Culture Documents
1 - 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.
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 IDS
Segn 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.
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:
3. DNIDS
Este tipo de IDS, ms que proteger, monitoriza la actividad entre varias redes. Tiene una visin global.
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.
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.
5 - Arquitectura de un IDS
Normalmente 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.
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.
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.
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 ...
Snort -dev
-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.
-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.
9 - Descarga de IDSCenter
En 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 - Configuracin
Una 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.
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.
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.
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:
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.
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".
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.
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.
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".
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.
~- 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 ->, <-, <>)// OPCIONES ~- //Mensaje:// msg ~- //Opciones:// flags:A;ack:0; reference:arachnids..(1) Un poco de teora: ~- flags://A// Establece el contenido de los flags o banderas TCP, en este caso ACK //(puede tener varios valores y operadores que veremos ms adelante)//. ~- ack://// Caso particular para valor ACK=0, es el valor que pone nmap para TCP ping scan. ~- reference://arachnids,28// Referencia un a un Advisory, alerta tipo Bugtrac, etc.
~- classtype:attempted-recon Categora de la alerta segn unos niveles predefinidos y prioridades (//veremos ms adelante las categoras).// ~- sid://628// Identificacin nica para esta regla snort segn unos tramos determinados. ~- rev://1// Identificacin de la revisin o versin de la regla. EJEMPLO 2 En el //manual oficial// del Snort como primer ejemplo tenemos: alert tcp any any -> 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 - Practicas
A. 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.
reference:arachnids,28;) zardoz~/src/snortrules>
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.
As que la cuestin es cmo averiguar el resto de datos y, sobre todo, qu traza deja un ping enviado desde windows 2000.
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.
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.
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)
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"
alert ICMP $EXTERNAL any -> $INTERNAL any (msg: "ICMP ping en Windows 2000."; dsize: 32; itype: 8; content: "abcdefghijklmnopqrstuvwabcdefghi"; depth: 32;)
o dsize: tamao de datos. comprobacin del tamao del contenido del paquete.
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.
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 # snort-sigs@lists.sourceforge.net # 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).
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.
-h <hn> Home network = <hn> -i <if> Listen on interface <if> -I Add Interface name to alert output -k <mode> Checksum mode //(all,noip,notcp,noudp,noicmp,none)// -l <ld> Log to directory <ld> -L <file> Log to this tcpdump file -n <cnt> Exit after receiving <cnt> packets -N Turn off logging (alerts still work) -o Change the rule testing order to Pass|Alert|Log -O Obfuscate the logged IP addresses -p Disable promiscuous mode sniffing -P <snap> Set explicit snaplen of packet //(default: 1514)// -q Quiet. Don't show banner and status report -r <tf> Read and process tcpdump file <tf> -R <id> Include 'id' in snort_intf<id>.pid file name -s Log alert messages to syslog -S <n=v> Set rules file variable n equal to value v -T Test and report on the current Snort configuration -U Use UTC for timestamps -v Be verbose -V Show version number -W Lists available interfaces. //(Win32 only)// -w Dump 802.11 management and control frames -X Dump the raw packet data starting at the link layer -y Include year in timestamp in the alert and log files -z Set assurance mode, match on established sesions //(for TCP)// -? Show this information <Filter Options> are standard BPF options, as seen in TCPDump
05/21-11:00:30.467731 192.168.2.1:139 -> 192.168.2.5:1025 TCP TTL:128 TOS:0x0 ID:47513 IpLen:20 DgmLen:1500 DF MODO SNIFFER Con esta opcin -v iniciamos //snort visualizando en pantalla las cabeceras de los paquetes TCP/IP//, es decir, en modo sniffer. Esta opcin es el modo verbouse y mostrar las cabeceras IP, TCP, UDP y ICMP. Si queremos, adems, visualizar los campos de datos que pasan por la interface de red, aadiremos -d. C:\Snort20\bin>snort -vd Running in packet dump mode Log directory = log Initializing Network Interface \Device\NPF_{604C8AE3-5FAC-45A5-BFAA-81175A8C32BF} ..... =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= 05/21-11:06:18.943887 192.168.4.5:3890 -> 192.168.4.15:8080 TCP TTL:128 TOS:0x0 ID:33216 IpLen:20 DgmLen:40 DF*A Seq: 0xE3A50016 Ack: 0x8B3C1E4D Win: 0xFAF0 TcpLen: 20 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= 05/21-11:06:18.962018 192.168.4.5:3890 -> 192.168.4.15:8080 TCP TTL:128 TOS:0x0 ID:33217 IpLen:20 DgmLen:681 DF *AP* Seq: 0xE3A50016 Ack: 0x8B3C1E4D Win: 0xFAF0 TcpLen: 20 47 45 54 20 68 74 74 70 3A 2F 2F 77 77 77 2E 6F GET http://www.x 6D 65 6C 65 74 65 2E 63 6F 6D 2E 62 72 2F 73 75 xxxx.com.br/xx 70 65 72 6F 6D 65 6C 65 74 65 2F 64 6F 77 6E 6C xxxxxxx/downl 6F 61 64 73 2F 64 65 66 61 75 6C 74 2E 61 73 70 oads/default.asp 20 48 54 54 50 2F 31 2E 30 0D 0A 55 73 65 72 2D HTTP/1.0..User -41 67 65 6E 74 3A 20 4D 6F 7A 69 6C 6C 61 2F 34 Agent: Mozilla/4 2E 30 20 28 63 6F 6D 70 61 74 69 62 6C 65 3B 20 .0 (compatible; 4D 53 49 45 20 36 2E 30 3B 20 57 69 6E 64 6F 77 MSIE 6.0; Window 73 20 4E 54 20 35 2E 30 29 20 4F 70 65 72 61 20 s NT 5.0) Opera 37 2E 31 31 20 20 5B 65 6E 5D 0D 0A 48 6F 73 74 7.11 [en]..Host 3A 20 77 77 77 2E 6F 6D 65 6C 65 74 65 2E 63 6F : www.xxxxx.co 6D 2E 62 72 0D 0A 41 63 63 65 70 74 3A 20 74 65 m.br..Accept: te 78 74 2F 68 74 6D 6C 2C 20 69 6D 61 67 65 2F 70 xt/html, image/p 6E 67 2C 20 69 6D 61 67 65 2F 6A 70 65 67 2C 20 ng, image/jpeg, 69 6D 61 67 65 2F 67 69 66 2C 20 69 6D 61 67 65 image/gif, image 2F 78 2D 78 62 69 74 6D 61 70 2C 20 2A 2F 2A 3B /x-xbitmap, */*; 71 3D 30 2E 31 0D 0A 41 63 63 65 70 74 2D 4C 61 q=0.1..Accept-La ...... Aadiendo la opcin -e, snort nos mostrar //informacin ms detallada//. Nos mostrar las cabeceras a nivel de enlace.
MODO PACKET LOGGER //(registro de paquetes)// Con estas opciones, //y dependiendo del trfico en nuestra red//, veremos gran cantidad de informacin pasar por nuestra pantalla, con lo cual sera interesante //registrar, guardar estos datos a disco para su posterior estudio//. Entraramos entonces en snort como packet logger o registro de paquetes. C:\Snort20\bin>snort -dev -l ./log La opcin -l indica a snort que debe //guardar los logs en un directorio determinado//, en este caso //C:\Snort20\bin\log//. Dentro de la carpeta log se crear una estructura de directorios donde se archivarn los logs. Podemos: -h// indicar la ip de la red a registrar// C:\Snort20\bin>snort -vde -l ./log -h 192.168.4.0/24 Running in packet logging mode Log directory = ./log -b que el //formato de los logs sea en modo binario// es decir, el modo que entiende TCPDump o Windump, para estudiar ms a fondo con los potentes filtros de estos programas los logs de snort. //La salida del logs en el caso de la opcin de salida binaria ya no ser una estructura de directorios, si no, un slo archivo.// C:\Snort20\bin>snort -l ./log -b Running in packet logging mode Log directory = ./log Ventajas de utilizar esta opcin -b ~- //N////o har falta indicarle IP alguna de nuestra red// ( -h ). ~- //Guardar todo en un mismo archivo y recoger datos de toda nuestra red// ~- Tampoco sern necesarias las opciones -de ~- Ni la opcin -v. Lectura del archivo binario generado El archivo generado por snort en modo binario tambin podemos leerlo con este usando la opcin: -rnombrearchivo.log Eleccin de interface de red Otra opcin a toma en cuenta es -i para //indicar a snort qu interface de red usar// en el caso de que tengamos dos o ms. ~- Si usamos snort para Win32: C:\Snort20\bin>snort -vde -i 1 ~- Para Linux/UNIX.
# snort -vde -i eth0 ~- Para averiguar las interfaces de que disponemos en Win32, usaremos la opcin -W. C:\Snort20\bin>snort -W
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.// C:\Snort20\bin>snort -A full -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf [] [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 SOCKET Snort manda las alertas a travs de un socket//, para que las escuche otra aplicacin.// Est opcin es para Linux / UNIX. # snort -A unsock -c snort.conf CONSOLE En modo console el programa imprime las alarmas en pantalla. C:\Snort20\bin>snort -A console -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf NONE Se desactivan las alarmas. # snort -A none -c snort.conf SMB Permite a Snort realizar llamadas al cliente de SMB //(cliente de Samba, en Linux)//, y enviar mensajes de alerta a hosts Windows //(WinPopUp)//. Evidentemente este modo es para sistemas Linux / UNIX. Se ha de tener presente: ~- Para activar este modo de alerta, //se debe compilar Snort con el conmutador de habilitar alertas SMB// //(enable -smbalerts)//.
~- Para usar esta caracterstica enviando un WinPopUp a un sistema Windows, aadiremos a la lnea de comandos de snort: -M WORKSTATIONS SYSLOG El programa Snort enva las alarmas al syslog. C:\Snort20\bin>snort -A console -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf -s //Este modo dispone de varios parmetros, que estudiaremos ms adelante.// EVENTLOG Funcionando en este modo se registra las alertas para visualizarse a travs del visor de sucesos de un sistema windows. Esta opcin //se activar// mediante -E y slo para Win32. -PROXIMAMENTE En //prximos captulos// avanzaremos en la //creacin de reglas snort//, explicando todas las opciones y seguiremos con Snort //en lnea de comandos// con la configuracin del archivo //snort.conf//.
Para Windows disponemos de varios programas que hacen de servidor syslog. Veamos uno de ellos. Se trata de Kiwi Syslog Daemon, aunque puede ser otro cualquiera.
http://www.kiwisyslog.com/products.htm#syslog
Una vez instalado el servidor syslog, procedemos a configurarlo para que escuche por un determinado puerto y as Snort pueda de forma remota enviar los logs a travs de la red.
UDP Port (1-65535): 514 (en este caso 514, aunque puede ser cualquiera)
Configurando IDSCenter
Vamos a icono de IDSCenter pulsamos con el ratn en "Setting", para cargar el GUI de configuracin de Snort. Pulsamos en "Stop Snort" para realizar los siguientes cambios:
IDS Rules > Output plugins Add > Syslog alert plugins
Log setting > Logging parameters marcamos "Log to remote syslog (-s)"
Facility: LOG_LOCAL7
Priority: LOG_ALERT
marcamos:
LOG_CONS
LOG_PERROR
LOG_NDELAY
LOG_PID
Para terminar pulsamos arriba del panel "Apply" para cargar la configuracin en el archivo snort.conf y "Start Snort" para activar Snort.
A medida que Snort genere alertas basadas en las reglas activadas, las ir enviando al syslog remoto a travs del puerto UDP que hayamos designado y veremos las alertas en la consola del syslog y sern grabadas en el directorio /log del servidor.
Si tenemos Snort corriendo sin el GUI IDSCenter podemos tambin realizar esta operacin aadiendo (-s) a nuestra lnea de comandos Snort y modificando el archivo de configuracin de Snort (snort.conf).
En Snort, tan slo tendremos que aadir como hemos apuntado, la opcin (-s). Ejemplo:
Ahora vamos al fichero de configuracin de snort (snort.conf). Nos posicionamos en la seccin de configuracin de plugins de salida:
################################################################
################################################################
Aadimos una lnea de tal forma que nos quede de esta manera:
################################################################
################################################################
################################################################
################################################################
Es decir, que en snort.conf indicamos tambin el host y puerto del syslog remoto. De esta manera podemos prescindir del aadido -s 192.168.4.3:514 en la lnea de comandos de Snort.
Mediante Windump o TCPDump verificamos que Snort est enviando las alertas al syslog:
Snort est enviando correctamente al syslog que corre en el host 192.168.4.3 las alertas al puerto UDP 514.
Vemos en la consola del syslog remoto que efectivamente las alertas aparecen correctamente.