Seguridad Informárica
Snort
Snort
Roberto Gómez Cárdenas
[email protected]
http://homepage.cem.itesm.mx/rogomez
Lámina 1
Dr. Roberto Gómez
Snort
• Escrito por Martín Roesch (1998)
– fundador de sourcefire (www.sourcefire.com)
• Es una version ligera de IDS de red que
se basa en libpcap, y corre en UNIX
• Gratuito
• Puede lograr búsquedas de contenido
en paquetes de IP
– después a través de un logging, le avisa al
administrador de seguridad si ha habido
alguna actividad inusual
Lámina 2
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
1
Seguridad Informárica
Snort
SNORT
• Provee a los administradores de seguridad con la
información suficiente para tomar decisiones
adecuadas.
• Puede ayudar cuando se encuentran hoyos de
seguridad y no se haya liberado su “parche” o
cuando por pólitica de seguridad no se pueda
instalar el “parche” sin antes ser probado.
• Disponible bajo la licencia GNU (General Public
License) y su código fuente está disponible.
Lámina 3
Dr. Roberto Gómez
SNORT
• Sniffer basado en libpcap que puede ser utilizado como
NIDS ya que cuenta con capacidad de analizar, a través
de reglas, el contenido completo de cada paquete que
circula por la red.
• Utiliza reglas definidas por el administrador de
seguridad para buscar patrones y detectar actividad
hostil (buffer overflows, STEALTH portscans, CGI
attacks, etc.) dentro de la red.
• Existen bases de datos conocidas con las huellas de
ataques más comunes
(http://www.whitehats.com/ids/index.html)
Lámina 4
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
2
Seguridad Informárica
Snort
SNORT vs TCPdump
• ¿Porqué se puede decir que SNORT no es un simple
sniffer?
• SNORT es distinto a TCPdump ya que éste no tiene
capacidad de analizar el “payload” de los paquetes.
• SNORT puede decodificar hasta la capa de aplicación,
por lo tanto también, capa transporte, capa red, capa
enlace.
• La salida que entrega SNORT es más legible que la
entregada por TCPdump.
Lámina 5
Dr. Roberto Gómez
SNORT
• Los 3 elementos básicos de SNORT son:
1. decodificador de paquetes
2. motor de detección
3. subsistema de “logeo” y alerta
Lámina 6
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
3
Seguridad Informárica
Snort
Plataformas
• Snort corre en casi cualquier versión de UNIX,
incluyendo:
– Linux (originalmente desarrollado para y en)
– OpenBSD
– FreeBSD
– Solaris
– HP-UX
– AIX.
– Windows ( ¿porque no? )
Plataformas de
hardware como
Sparc, Alpha y los
x86.
Lámina 7
Dr. Roberto Gómez
Donde se obtiene
• Versión actual 2.6
• Página snort
– http://www.snort.org
• Las firmas se pueden bajar de
– http://www.snort.org
– http://www.whitehats.ca
– http://www.silicondefense.com
Lámina 8
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
4
Seguridad Informárica
Snort
Instalando snort en ambientes
Unix
• Bajar y compilar
– Snort (.src.rpm, .rpm, .src.tar.gz)
– Reglas actuales
– Libnet (si no se tiene instalado)
• Unix:
• Windows:
http://www.packetfactory.net/libnet
netgroup-serv.polito.it
– Libpcap (si no se tiene instalado)
• Unix:
• Windows: netgroup-serv.polito.it/winpcap
www.tcpdump.org/release/libpcap
Lámina 9
Dr. Roberto Gómez
Archivos instalados
• /root/Downloads/snort-2.4.3/etc/
– contiene los archivos de configuración
• /var/log/snort
– contendrá las bitácoras generadas por snort
– NO lo instala es necesario crearlo
• /usr/bin/snort
– contiene el ejecutable de snort
Lámina 10
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
5
Seguridad Informárica
Snort
Pasos previos para usar snort
• Crear el directorio de bitacoras
– mkdir /var/log/snort
• Bajar los archivos de reglas
– http://www.snort.org/pub-bin/downloads.cgi
– subscription release, registered user release, unregistered user release,
Community Rules
•
Instalar los archivos de reglas
– cd /root/Downloads/snort-2.4.3/
– tar -zxvf snortrules-pr-2.4.tar.gz
– se crearán dos directorios: ~/rules y ~/doc/signatures
• Trasladarse al directorio donde se encuentran las reglas y el
archivo de configuracion
– cd /root/Downloads/snort-2.4.3/etc
– snort
Lámina 11
Dr. Roberto Gómez
Una prueba rápida
• Ejecutar siguiente comando dentro del directorio
/etc/snort
toto@cognac:3> snort –A console *
• Desde otra máquina, utilice nmap para generar eventos
para que los detecte snort
toto@tequila:3> nmap – Sp <IP máquina con snort>
• Se debe ver una alerta como la que sigue:
03/27-15:18:06.911226 [**] [1:469:1] ICMP PING NMAP [**]
[Classification: Attempted Information Leak] [Priority: 2]
{ICMP} 192.168.1.20 -> 192.168.1.237
Lámina 12
* posible tener definir ubicación archivo configuracio: snort -A console -c etc/snort.conf
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
6
Seguridad Informárica
Snort
Modos operación snort
• sniffer
– solo lee los paquetes que circulan por la red y los
despliega
• packet logger
– almacena paquetes en el disco
• network intrusion detection system
– analiza tráfico que coincida con una regla definida y
realiza una determinada acción especificada en la
regla
Lámina 13
Dr. Roberto Gómez
Modo sniffer
• snort –v
– despliega los encabezados de los paquetes TCP/IP en
la pantalla
– solo despliega los encabezados de IP y
TCP/UDP/ICMP nada más
• snort –vd
– despliega tanto los datos como los encabezados
• snort –vde
– lo mismo que antes, y además despliega los
encabezados de la capa de enlace
Lámina 14
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
7
Seguridad Informárica
Snort
Modo packet logger
• Posible almacenar paquetes en el disco, para lo cual
es necesario especificar un directorio
snort –dev –l ./log
• Capturar paquetes relativos a la red 192.168.1.0
tipo C, todos los paquetes serán registrados en los
subdirectorios del directorio log
snort –dev –l ./log –h 192.168.1.0/24
• En redes alta velocidad, es posible almacenar
paquetes en forma más compacta (modo binario:
formato tcpdump)
snort –l ./log –b
Lámina 15
Dr. Roberto Gómez
Leyendo lo almacenado
• Posible leer lo almacenado con un snifer que
soporte fomato binario tcpdump
– tcpdump o ethereal
• Se puede usar snort con la opción –r, que lo pone
en modo playback
• Paquetes en formato tcpdump pueden ser
procesados por snort
snort –dv –r packet.log
Lámina 16
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
8
Seguridad Informárica
Snort
Modo NIDS
• Para habilitar el modo de detección de intrusos en
red es necesario teclear:
snort –dev –l ./log –h 192.168.1.0/24 –c snort.conf
– donde snort.conf es el archivo de las reglas
– si no se especifica directorio salida, se tomará como
default /var/log/snort
• No se recomienda la opción –v
• En muchos casos no es necesario verificar los
encabezados de enlace de datos
snort –d –h 192.168.1.0/24 –l ./log -c snort.conf
Lámina 17
Dr. Roberto Gómez
Elementos configuración snort
• Existen tres formas de indicarle a Snort como actuar
– snort.conf configura variables, preprocesadores, salidas y
conjuntos de reglas activas
– archivos .rules define las huellas (signatures) actuales
– opciones a nivel línea de comandos, las cuales sobreescriben
las opciones en el archivo snort.conf
• Snort correrá con el archivo snort.conf por default
– se aconseja configurarlo de acuerdo a la actividad de la red
monitoreada
– de esta forma se puede ahorrar tiempo al examinar los
resultados
Lámina 18
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
9
Seguridad Informárica
Snort
Ejemplo archivo snort.conf
# Step #1: Set the network variables:
# var HOME_NET $eth0_ADDRESS
var EXTERNAL_NET $HOME_NET
# Step #2: Configure preprocessors
preprocessor frag2
preprocessor bo
# Step #3: Configure output plugins
#
# output log_tcpdump: snort.log
# output trap_snmp: alert, 7, trap -v 2c -p 162 myTrapListener myCommunity
# Step #4: Customize your rule set
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
Lámina 19
Dr. Roberto Gómez
Comentarios snort.conf
• La indica a snort:
– cual es la red local
– que herramientas usar para preprocesar paquetes
• paquetes fragmentados/defragmentados
– que herramientas usar para formatear las bitácoras de salida
• por ejemplo: habilitar XML
• Mayoría opciones: dejar la opción por default y solo
ajustar la dirección red local, por ejemplo:
var HOME_NET [192.168.1.0/24,10.120.0.0/16]
Lámina 20
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
10
Seguridad Informárica
Snort
Diseño reglas en snort
Archivos y sintaxis
Lámina 21
Dr. Roberto Gómez
Archivos de reglas
finger.rules
smtp.rules
• bad-traffic.rules
•
•
• dos.rules
• web-coldfusion.rules
• web-frontpage.rules
• web-attacks.rules
•
• backdoor.rules
• porn.rules
• attack-responses.rules
icmp.rules
exploit.rules
ftp.rules
rpc.rules
ddos.rules
web-cgi.rules
web-iis.rules
sql.rules
netbios.rules
shellcode.rules
info.rules
local.rules
scan.rules
telnet.rules
rservices.rules
dns.rules
tftp.rules
web-misc.rules
x11.rules
misc.rules
policy.rules
icmp-info.rules
virus.rules
Lámina 22
Dr. Roberto Gómez
Dr. Roberto Gómez Cárdenas
11
Seguridad Informárica
Snort
Ejemplo archivo .rules
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP ISS Pinger";
content:"|495353504e475251|";itype:8;depth:32; reference:arachnids,158;
classtype:attempted-recon; sid:465; rev:1;)
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP L3retriever Ping";
content: "ABCDEFGHIJKLMNOPQRSTUVWABCDEFGHI"; itype: 8; icode: 0; depth: 32;
reference:arachnids,311; classtype:attempted-recon; sid:466; rev:1;)
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP Nemesis v1.1 Echo";
dsize: 20; itype: 8; icmp_id: 0; icmp_seq: 0;
content: "|0000000000000000000000000000000000000000|"; re
Comentarios de: Snort (0)
No hay comentarios