Está en la página 1de 45

Introduccin a conceptos de IDS y tcnicas avanzadas con Snort

Isc. Guillermo R. Castillo Yam Isc. Pablo I. Villegas Berny

Temas
Introduccin a IDS
Tipos Tcnicas de deteccin Problemas

Modificando paquetes
Snort INLINE Ejemplos

Snort
Open Source Add-ons Mayor performance

Visualizacion Snort IDS en la realidad Para seguir leyendo

Creacin de reglas
Examinar trafico Ejemplos
2

Introduccin a IDS
(IDS) Sistema de Deteccin de intrusos Es el proceso de monitorear computadoras o redes, hace referencia a un mecanismo que, sigilosamente, escucha el trfico en la red para detectar actividades anormales o sospechosas, y de este modo, reducir el riesgo de intrusin. Tipos
Host IDS Network IDS Hybrid IDS
3

Introduccin a IDS
Network IDS
El grupo N-IDS (Sistema de deteccin de intrusiones de red), que garantiza la seguridad dentro de la red.

Host IDS
El grupo H-IDS (Sistema de deteccin de intrusiones en el host), que garantiza la seguridad en el host.

Introduccin a IDS
Un N-IDS necesita un hardware exclusivo. ste forma un sistema que puede verificar paquetes de informacin que viajan por una o ms lneas de la red para descubrir si se ha producido alguna actividad maliciosa o anormal. El N-IDS pone uno o ms de los adaptadores de red exclusivos del sistema en modo promiscuo. ste es una especie de modo "invisible" en el que no tienen direccin IP. Tampoco tienen una serie de protocolos asignados. Es comn encontrar diversos IDS en diferentes partes de la red. Por lo general, se colocan sondas fuera de la red para estudiar los posibles ataques, as como tambin se colocan sondas internas para analizar solicitudes que

Introduccin a IDS

Introduccin a IDS
El H-IDS se encuentra en un host particular. Por lo tanto, su software cubre una amplia gama de sistemas operativos como Windows, Solaris, Linux, HP-UX, Aix, etc. El H-IDS acta como un daemon o servicio estndar en el sistema de un host. Tradicionalmente, el H-IDS analiza la informacin particular almacenada en registros (como registros de sistema, mensajes, lastlogs y wtmp) y tambin captura paquetes de la red que se introducen/salen del host para poder verificar las seales de intrusin (como ataques por denegacin de servicio, puertas traseras, troyanos, intentos de acceso no autorizado, ejecucin de cdigos malignos o ataques de desbordamiento de bfer).

Tcnicas de Deteccin
El trfico en la red (en todo caso, en Internet) generalmente est compuesto por datagramas de IP. Un N-IDS puede capturar paquetes mientras estos viajan a travs de las conexiones fsicas a las que est sujeto. Un N-IDS contiene una lista TCP/IP que se asemeja a los datagramas de IP y a las conexiones TCP. Puede aplicar las siguientes tcnicas para detectar intrusiones: Verificacin de la lista de protocolos: Algunas formas de intrusin, como "Ping de la muerte" y "escaneo silencioso TCP" utilizan violaciones de los protocolos IP, TCP, UDP e ICMP para atacar un equipo. Una simple verificacin del protocolo puede revelar paquetes no vlidos e indicar esta tctica comnmente utilizada.

Tcnicas de Deteccin
Verificacin de los protocolos de la capa de aplicacin: Algunas formas de intrusin emplean comportamientos de protocolos no vlidos, como "WinNuke", que utiliza datos NetBIOS no vlidos (al agregar datos fuera de la banda). Para detectar eficazmente estas intrusiones, un N-IDS debe haber implementado una amplia variedad de protocolos de la capa de aplicacin, como NetBIOS, TCP/IP, etc. Esta tcnica es rpida (el N-IDS no necesita examinar la base de datos de firmas en su totalidad para secuencias de bytes particulares) y es tambin ms eficiente, ya que elimina algunas falsas alarmas. Por ejemplo, al analizar protocolos, N-IDS puede diferenciar un "Back Orifice PING" (bajo peligro) de un "Back Orifice COMPROMISE" (alto
4

Tcnicas de Deteccin
Reconocimiento de ataques de "comparacin de patrones": Esta tcnica de reconocimiento de intrusin es el mtodo ms antiguo de anlisis N-IDS y todava es de uso frecuente. Consiste en la identificacin de una intrusin al examinar un paquete y reconocer, dentro de una serie de bytes, la secuencia que corresponde a una firma especfica. Por ejemplo, al buscar la cadena de caracteres "cgi-bin/phf", se muestra un intento de sacar provecho de un defecto del script CGI "phf". Este mtodo tambin se utiliza como complemento de los filtros en direcciones IP, en destinatarios utilizados por conexiones y puertos de origen y/o destino. Este mtodo de reconocimiento tambin se puede refinar si se combina con una sucesin o combinacin de indicadores
4

Tcnicas de Deteccin
Esta tctica est difundida por los grupos N-IDS "Network Grep", que se basan en la captura de paquetes originales dentro de una conexin supervisada y en su posterior comparacin al utilizar un analizador de "expresiones regulares". ste intentar hacer coincidir las secuencias en la base de firmas byte por byte con el contenido del paquete capturado.

Tcnicas de Deteccin
La ventaja principal de esta tcnica radica en la facilidad de actualizacin y tambin en la gran cantidad de firmas que se encuentran en la base N-IDS. Sin embargo, cantidad no siempre significa calidad. Por ejemplo, los 8 bytes CE63D1D2 16E713CF, cuando se colocan al inicio de una transferencia de datos UDP, indican un trfico Back Orifice con una contrasea predeterminada. Aunque el 80% de las intrusiones utilicen la contrasea predeterminada, el 20% utilizarn contraseas personalizadas y no sern necesariamente reconocidas por el N-IDS. Por ejemplo, si la contrasea se cambia a "evadir", la serie de bytes se convertir en "8E42A52C 0666BC4A", lo que automticamente la proteger de que el N-IDS la capture. Adems, la tcnica inevitablemente conducir a un gran nmero de falsas alarmas y falsos positivos.
4

Tcnicas de Deteccin
Existen otros mtodos para detectar e informar sobre intrusiones, como el mtodo Pattern Matching Stateful, y/o para controlar el trfico peligroso o anormal en la red. En conclusin, un perfecto N-IDS es un sistema que utiliza las mejores partes de todas las tcnicas mencionadas anteriormente.

Tcnicas de Deteccin
Tcnicas de deteccin
Anomaly (anomala)
Descubre patrones anmalos comparndolo con los considerados normales Especial inters para la aplicacin de algoritmos genticos y redes neuronales

Signature (firma)
Comparacin de firmas almacenadas contra una porcin de un paquete de red Reduccin de anlisis, subconjunto del total

Target (objetivo)
Ej. Busca modificaciones en un archivo especifico

Funcionamiento del IDS


Reconfiguracin de dispositivos externos (firewalls o ACL en routers): Comando enviado por el N-IDS a un dispositivo externo (como un filtro de paquetes o un firewall) para que se reconfigure inmediatamente y as poder bloquear una intrusin. Esta reconfiguracin es posible a travs del envo de datos que expliquen la alerta (en el encabezado del paquete). Envo de una trampa SNMP a un hipervisor externo: Envo de una alerta (y detalles de los datos involucrados) en forma de un datagrama SNMP a una consola externa como HP Open View Tivoli, Cabletron, Spectrum, etc. Envo de un correo electrnico a uno o ms usuarios: Envo de un correo electrnico a uno o ms buzones de correo para informar sobre

Funcionamiento del IDS


Reconfiguracin de dispositivos externos (firewalls Registro del ataque: Se guardan los detalles de la alerta en una base de datos central, incluyendo informacin como el registro de fecha, la direccin IP del intruso, la direccin IP del destino, el protocolo utilizado y la carga til. Almacenamiento de paquetes sospechosos: Se guardan todos los paquetes originales capturados y/o los paquetes que dispararon la alerta. Apertura de una aplicacin: Se lanza un programa externo que realice una accin especfica (envo de un mensaje de texto SMS o la emisin de una alarma sonora).
5

Funcionamiento del IDS


Envo de un "ResetKill": Se construye un paquete de alerta TCP para forzar la finalizacin de una conexin (slo vlido para tcnicas de intrusin que utilizan el protocolo de transporte TCP). Notificacin visual de una alerta: Se muestra una alerta en una o ms de las consolas de administracin.

Desafos del IDS


Problemas
Existen 2 problemas muy importantes
Falsos positivos y Falsos negativos

Los falsos positivos se pueden dividir en categoras


Reactionary traffic alarms (ej. icmp network
unreacheable)

Equipment-related alarms (ej. load balancers) Protocol violations (ej. outlook express auth=plain) Non malicious alarms (ej. publicamos un shellcode) True false positives

Desafos del IDS


El IPS se sita en lnea dentro de la red IPS y no slo escucha pasivamente a la red como un IDS (tradicionalmente colocado como un rastreador de puertos en la red). Un IPS tiene la habilidad de bloquear inmediatamente las intrusiones, sin importar el protocolo de transporte utilizado y sin reconfigurar un dispositivo externo. Esto significa que el IPS puede filtrar y bloquear paquetes en modo nativo (al utilizar tcnicas como la cada de una conexin, la cada de paquetes ofensivos o el bloqueo de un intruso).

Snort
Open Source
Utiliza tcnicas de deteccin de firmas y anomalas no estadstica Gratuito y con licencia GPL v2 detras esta la empresa Sourcefire, adquirida por Checkpoint Modos de ejecucin
Sniffer y Packet Logger Network IDS IPS con FlexResp o Inline

Snort
Open Source (cont.)
Componentes
Packet Decoder (toma los datos de libpcap o libipq) Preprocesadores o Input plugins

Detection Engine Logging y alertas Output plugins


reportar y depositar alertas en distintos formatos
7

Snort
Add-ons
Facilidad para programarlos Existen ms de 14 preprocesadores.
Port scanning (flow-portscan y sfportscan) Frag2 (ip packet defragmentation) Frag3 (a partir de 2.4.x, mas rapido y por host) Stream4 (tcp stream reassembly y stateful inspection) Stream5 (reemplaza all 4 y al flow) Http-inspect Arp-spoof

Snort
Add-ons (cont.)
No integrados por default
Spp-fnord (multi-architecture mutated NOP sled detector) Spade (statistical packet anomaly detection engine)

Output plugins
Database (mysql, postgres, etc) Syslog XML Traps SNMP Mensajes SMB

Snort
Mayor performance
El anlisis en tiempo real, requiere de muchos recursos de cpu y memoria Optimizacin de reglas, necesidad de entender como funciona el engine Tres formas de aumentar
Mmaped pcap (utilizacion de un shared buffer) en vez de copiar los paquetes de kernel memory a userland memory, se utiliza un shared memory buffer, la libpcap encola paquetes en el buffer y Snort puede leerlos directamente Barnyard (utiliza el output plugin unified) PF_RING (http://www.ntop.org/PF_RING.html)
10

Creando nuevas reglas


Formato de una regla
Rule header (action, protocol, address, port, direction, address, port) Rule options
alert tcp $HOME 22 -> $EXT any \ msg: SSH version 1 support detected; \ flow: to_client, established; \ content: SSH-1.; \ nocase; \ offset: 0; \ depth: 6;)

11

Creando nuevas reglas


Tips para armar reglas eficaces y veloces
Armar el patrn de regla para la vulnerabilidad, no el codigo exploit Utilizar content siempre que sea posible Atrapar las singularidades del protocolo Las reglas poseen naturaleza recursiva Probar valores numricos (2.x)
Byte_test Byte_jmp

12

Creando nuevas reglas


Recursividad en las reglas
buscamos un paquete de size 1 byte con el ; adentro, pensariamos esta regla (Fig. 1) sin embargo si tenemos un paquete de 1000 bytes con todos ;, macheara 1000 veces, para evitarlo. (Fig. 2)
content:|29|; dsize: 1; dsize: 1; content:| 29|;

Fig. 1

Fig. 2

13

Creando nuevas reglas


Examinando trfico
Cuando creamos una regla para un servicio especifico, lo mejor que podemos hacer es analizar el protocolo del mismo. Buscar como funciona, donde estn las fallas o donde pueden estar Utilizar herramientas de sniffing

14

Creando nuevas reglas


Ejemplo
Queremos generar una alerta cuando se intenta loguear un usuario root al ftp

alert tcp any any -> any any 21 \ (content: user root; )

15

Creando nuevas reglas


Ejemplo (cont.)
Tenemos un problema ya que el protocolo acepta

USER ROOT user root user root user<tab>roo t

16

Creando nuevas reglas


Ejemplo (cont.)
Flow: se utiliza para verificar que el trafico este yendo hacia el server y establecido (mantiene un tracking de conexiones) Pcre: es para expresiones regulares Una regla mejor
alert tcp any any -> any 21 \ (flow: to_server, established; \ content: root; \ pcre: /user\s+root/i; )

17

Modificando paquetes
Snort Intrusion Prevention System (IPS)
Necesidad de ser gateway/firewall o bridge, la topologa de la red es dependiente Tener en cuenta que cuando Snort cometa un falso positivo se bloqueara una conexin vlida Un IPS puede loguearse:
Examinar los logs en tiempo real. (ej. SnortGuardian) Utilizar FlexResp o Inline.
Se pueden armar reglas que bloqueen o rechacen las conexiones, de acuerdo a los patrones.
18

Modificando paquetes
Snort Inline
Tambin nos permite modificar el payload de un paquete, esto nos puede servir cuando tenemos un server que no podemos patchear o el patch todava no salio y no podemos desactivar la funcionalidad que posee el bug Limitacin importante, el tamao del paquete macheado y el tamao del paquete modificado deben ser iguales Baja la performance

19

Modificando paquetes
Ejemplo: consultas MySQL
Existen algunos comandos peligrosos
UNION SELECT LOAD_FILE LOAD DATA INFILE SELECT INTO OUTFILE BENCHMAR UFD DROP DATABASE

Algunos se pueden eliminar desde lnea desde my.cnf ej. set-variable=local-infile=0

20

Modificando paquetes
Ejemplo: consultas MySQL (cont.)
Utilizando Inline, eliminamos el drop database

alert tcp any any <> any any \ (msg: mysql replace; \ content: drop database; \ replace: selectLAMER; )

mysql> drop database test; +-------+ | test | +-------+ | LAMER | +-------+ 1 row in set (0.01 sec)

21

Modificando paquetes
Ejemplo: mirando el protocolo MySQL
Levantamos Snort en modo sniffer y ejecutamos un drop database test
HEADER ---------------------------------------------------------------03/10-19:07:09.572760 200.123.146.139:32975 -> 192.168.0.2:3306 TCP TTL:62 TOS:0x8 ID:12232 IpLen:20 DgmLen:73 DF ***AP*** Seq: 0x35C18013 Ack: 0xE0DAC3DA Win: 0x16D0 TcpLen: 32 TCP Options (3) => NOP NOP TS: 156914262 165056290 PAYLOAD ---------------------------------------------------------------11 00 00 00 03 64 72 6F 70 20 74 61 62 6C 65 20 .....drop table 74 65 73 74 31 test1

22

Modificando paquetes
Ejemplo: mirando el protocolo MySQL (cont.)

11 00 00 endian) 00 03 64 72 6F 70 20 d r o p 74 61 62 6C 65 20 t a b l e 74 65 73 74 31 t e s t 1

body length= 17 bytes (little packet= 0 command= QUERY args= drop

args= table

args= test1

23

Modificando paquetes
Ejemplo: mirando el protocolo MySQL (cont.)
Usando Inline le decimos que dropee el paquete (Fig. 1) Con FlexResp no utilizamos libipq, rst_snd enva TCP-RST e icmp_all enva paquetes unreacheable (Fig. 2)
reject tcp $EXT any -> $HOME 3306 \ (msg: mysql drop reject; \ content: drop table; \ offset: 5; ) alert tcp $EXT any -> $HOME 3306 \ (msg: mysql replace; \ content: drop table; \ offset: 5; \ resp: rst_snd, icmp_all; )

Fig. 1

Fig. 2

24

Modificando paquetes
Ejemplo: mirando el protocolo MySQL (cont.)
Supongamos que existe un bug en los query MySQL, y se produce cuando el tamao del paquete es mayor a 4095 (0x0FFF) (Fig. 1) Hacemos una regla que si el paquete query es mayor dispare una alerta (Fig. 2)
00 10 00 XX 03 body length= 0x1000 (4096) (little endian) packet= 0 command= 0x03 == QUERY alert tcp $EXT any (msg: mysql cmd byte_test: 3, >, little; \ content: |03|; offset: 4; ) -> $HOME 3306 \ query > 4095; \ 4095, 0, \

Fig. 1
25

Fig. 2

Modificando paquetes
Ejemplo: evitando un buffer overflow
Analizando el exploit para Arkeia Network Backup Client, el bo se produce cuando un paquete de tipo 77 es enviado con la seccion de datos muy grande. Mirando el protocolo. (Fig. 1)
alert tcp $EXT any -> $HOME 617 \ (msg: arkeia bo; \ 4d|; \ Hacemos una regla (Fig. content:|00 2) depth:2; \ byte_test: 2, >, 23, 6; \ 10 00 2-bytes type 77 request isdataat:31; \ # hay datos ? XX XX XX XX 4-bytes ? content:!|00|; \ # != 0x00 nn nn 2-bytes size (big) offset: 8; \ ... seccion datos depth:23; )

Fig. 1
26

Fig. 2

Modificando paquetes
Ejemplo: detectando un SQL injection y un XSS
flow:to_server, established; \ uricontent:.cgi; \ META CHARS (') (--) (#) pcre:"/(\%27)|(\')|(\-\-)|(\%23)|(#)/i"; STORE PROCEDURE EXEC SP XP pcre:"/exec(\s|\+)+(s|x)p\w+/ix"; UNION pcre:"/((\%27)|(\'))union/ix"; XSS (<) (>) pcre:"/((\%3C)|<)[^\n]+((\%3E)|>)/i";

27

Visualizacin
Necesidades y problemtica
Grandes cantidades de informacion Necesidad de descubrir patrones Data mining Correlacion con otros IDS / Firewall / Netflow Web frontends: BASE, BASE+ (Acid obsoleto) NSM: Sguil SQL (alertas estan en DB)

28

Snort IDS en la realidad


Necesidades y problemtica
Capacitacin, conectar un IDS en la red sin customizarlo no tiene sentido alguno Know-How en networking, para entender y armar las reglas Recursos para ver las alertas, tampoco sirve tener el mejor IDS configurado y no mirar los logs porque genera muchos falsos positivos Actualizacin constante en materia de seguridad Por lo general cuando los recursos no alcanzan, se busca tercerizar la seguridad interna
28

Para seguir leyendo


El paper original se lo pueden bajar de
http://people.baicom.com/~agramajo/notes/ids2005.pdf Snort docs
http://www.snort.org/docs/

Security Focus Archive IDS


http://www.securityfocus.com/infocus/ids

Listas de seguridad
Full-Disclosure, FOCUS-IDS, Vuln-Dev

Bugs exploits
http://www.packetstormsecurity.org/ http://cve.mitre.org/cve/ http://www.osvdb.org/

29

Preguntas?

Gracias

30