Você está na página 1de 6

Bro - IDS.

Un Sistema De Deteccin De Intrusiones Basado


En Polticas Especializadas.
alfonn 23-03-2011 GTM 1 @ 14:24
Seguimos con la serie dedicada a motores IDS / NIDS. Hemos visto y seguiremos viendo, ya que es
parte importante de la temtica de este blog, el IDS Snort y Suricata.

En esta ocasin vamos a iniciar una serie de artculos dedicados a Bro, un sistema de deteccin
de intrusiones para UNIX/Linux Open Source que analiza el trfico de red en busca de actividad
sospechosa. su carcterstica principal es que sus reglas de deteccin estn basados en scricd en
lenguaje nativo que suponen polticas (policies) que son las encargadas de detectar, generar logs
o eventos y acciones a nivel de sistema operativo.
Este artculo est especialmente dedicado a mi bro Dabo (@daboblog).

Qu es Bro.

Bro es un sistema de deteccin de intrusiones para UNIX/Linux Open Source que analiza el trfico
de red en busca de actividad sospechosa.
Analiza la actividad a nivel de aplicacin y por comparacin con patrones considerados
sospechosos, es decir, por caractersticas del trfico y contenido. Algunas caractersticas
importantes de Bro son la gran capacidad de anlisis a nivel de protocolo y las polticas
especializadas y configurables y la capacidad de ser una herramienta de anlisis
forense.Tambin es importante destacar el elevado rendimiento y capacidad de gestionar gran
volumen de trfico.
Las alertas pueden ser configuradas de tal forma que puedan generar eventos de log, alertas en
tiempo real y hasta ejecucin de comandos de sistema.
Bro dispone de una serie de scripts o Policies escritos en un lenguaje nativo de Bro. Estas
polticas describenqu tipo de actividades se consideran sospechosas. En base a esto, disponemos
de una gran cantidad de polticas para la deteccin de las actividades sospechosas ms comunes.
Estas policies suponen una especie de capa ms en la estructura de Bro. Estos policies generarn,
dado el caso, cientos de eventos depndiendo del tipo de protocolo / script.
Las polticas o policies, adems de generar logs por actividad sospechosa, puede generar logs de
actividad normal.
Mediante el uso del lenguaje de scripts de polticas o policies, podemos crear polticas especficas
para nuestro entorno de red o un actividad concreta que deseemos detectar.
Podemos ejecutar Bro para deteccin en tiempo real usando una determinada interface de red o
leyendo un fichero .pcap.

Instalando y configurando Bro.


Si hemos instalado herramientas del tipo

Wireshark, Snort , Suricata, etc, tenemos casi todo

lo necesario. En mi caso he necesitado instalar como requisito previo:

ncurses-dev
libssl-dev
python2.6-dev

Comenzamos:
wget http://www.bro-ids.org/download/bro-1.5.3.tar.gz
tar xzf bro-1.5.3.tar.gz
cd bro-1.5.3
./configure
make
make install-broctl

Configuramos Bro.

Bro se encuentra en /usr/local/bro por defecto.


Archivos de configuracin en /usr/local/bro/etc
Archivo de configuracin: /usr/local/bro/etc/broctl.cfg
Configuramos la interface en /usr/local/bro/etc/node.cfg
Configuramos nuestra red usando notacin CIDR en /usr/local/bro/etc/networks.cfg

Una vez realizados los cambios que considerenos:


en /usr/local/bro/bin ejecutamos sudo python broctl install :
alfon@alfonubuntu:/usr/local/bro/bin$ sudo python broctl install
removing old policies in /usr/local/bro/share/bro/.site ... done.
creating policy directories ... done.
installing site policies ... done.
generating broctl-layout.bro ... done.
generating analysis-policy.bro ... done.
generating local-networks.bro ... done.
updating nodes ... done.

Ejecutando Bro.

Dada la complejidad de Bro, iremos estudiando sus caractersticas poco a poco y sus variadas
fomas de funcionamiento. Toda basado en la prctica.
De momento vamos con lo ms simple para inr entendiendo Bro.
Un uso bsico puede ser el siguiente:
> /usr/local/bro/bin$ sudo ./bro -f "tcp" -r captura_smtp.pcap smtp
Se trata de un anlisis offline, le decimos a Bro que lea el archivo archivo.pcap, aadimos un
filtro BPF para tcp y que aplique la policy o script de poltica smtp.bro que se encuentra
en: /usr/local/bro/share/bro
La ejecucin de esta lnea de bro con la poltica smtp.bro, genera los siguientes alrchivos .log:

conn.log
notice.log
smtp.log

conn.log contiene informacin de las conexiones independientemente del protocolo y poltica


usada. Aqu el resultado de nuestro ejemplo aplicado a un server honeypot virtual:

notice.log est a 0. Lo explicar ms adelante.


smtp.log es el resultado de la policy smtp.log. Para el ejemplo, este es el resultado de aplicar
bro a unserver virtual honeypot (es solo una parte, falta la zona timestamp e IPs origen / destino
ya que el log es bastante extenso):

Ejecutando Bro con mltiples polticas.


> /usr/local/bro/bin$ sudo ./bro -r /home/alfon/lan031110.cap scan alarm tcp smtp http
Genera los siguientes logs:

alarm.log
conn.log
http.log est a 0
notice.log
smtp.log est a 0

Si editamos alarm.log nos encontramos con esta lnea:


1288814614.603440 PortScanSummary 20x.xx.xxx.xx2 scanned a total of 20 ports
Si editamos notice.log nos encontramos con esta lnea:
1288814614.603440:PortScanSummary:NOTICE_ALARM_ALWAYS::20x.xx.xx.xx2::::::::20:209.85.2
27.132 scanned a total of 20 ports:$

Ejecutandobro en tiempo real.


Lo hacemos de la forma:
alfon@alfonubuntu:/usr/local/bro/bin$ sudo ./bro -ieth0 tcp alarm smtp http

Configurando con bro.cfg

Esiste, en la carpeta que hemos descomprimido para instalar Bro, una serie de scrips para
configuracin y otras utilidades.
En este caso nos interesa bro_config para la creacin de un fichero de configuracin bro.cfg.
Ejecutamos el script:
alfon@alfonubuntu:~/bro-1.5.3/scripts$ sudo ./bro_config

nos preguntar si queremos crear bro.cfg y decimos que si.

ahora nos pregunta sobre la ubicacin de logs en /usr/local/bro/archive

usuario para ejecutar bro

interface, en mi caso eth0

otra serie de preguntas..... lo podemos dejar como est

a email reports decimos que si e indicamos el mail

nos pregunta sobre encriptacin para los mail

ejecutar una funcin para determinar el rango de red


Ahora copiamos bro.cfg en /usr/local/bro/etc. En su momento veremos este archivo.
Existe otro script de perl muy interesante que lo veremos ms adelante. Este script se encuentra
en /bro-1.5.3/scripts/perl/script y es site-report.pl, lo copiamos a /usr/local/bro/bin para usaro
en su momento.

Ejecutando Bro con broctl. Broctl centro de control.


En base a la configuracin que hemos visto de:

broctl.cfg

node.cfg
networks.cfg

podemos ejecutar broctl para desplegar un centro de contro para la configuracin de bro. Esta
es la mejor manera de configurar bro y la que est ahora en uso sustituyendo al sistema antiguo
broccolite.
La manera de ejecutar broctl es:
alfon@alfonubuntu:/usr/local/bro/bin$ sudo ./broctl
Tenemos una consola (BroControl).

Si queremos activarBro: [BroControl] > start

Para ayuda: [BroControl] >help


Por ejemplo: incimos Bro con start y vemos el estado con status:
Name
Type
Host
Status
Pid Peers Started
bro
standalone localhost running
8516 0
23 Mar 13:38:10
ahora hacemos [BroControl] > scripts para ver una lista de scripts / policies que se ejecutan y la
jeracqua.
En este momento tenemos Bro ejecutndose. Salimos con exit y bro seguir ejecutndose. Si
hacemos toplo vemos.
En este momento tenemos actividad en /usr/local/bro/logs/current.Se est registrando toda la
actividad:
alfon@alfonubuntu:/usr/local/bro/logs/current$ ls -l
total 44
170 2011-03-23 13:55 alarm.log
0 2011-03-23 13:55 broctl.log
d4096 2011-03-23 13:55 certs
16384 2011-03-23 13:56 conn.log
0 2011-03-23 13:55 dns.log
0 2011-03-23 13:55 ftp.log
0 2011-03-23 13:55 http.log
0 2011-03-23 13:55 icmp.log
0 2011-03-23 13:55 irc-bots.log
0 2011-03-23 13:55 irc.detailed.log
0 2011-03-23 13:55 irc.log
115 2011-03-23 13:55 mail.log
0 2011-03-23 13:55 notice.log
0 2011-03-23 13:55 pop3.log
1995 2011-03-23 13:59 remote.log
0 2011-03-23 13:55 signatures.log
0 2011-03-23 13:55 smtp.log
0 2011-03-23 13:55 ssh.log
0 2011-03-23 13:55 ssl.log
18 2011-03-23 13:55 stderr.log
0 2011-03-23 13:55 stdout.log

8192 2011-03-23 13:59 weird.log


0 2011-03-23 13:55 worm.log
Editamos alarm.log:
t=1300884937.770530 no=PortScan na=NOTICE_ALARM_ALWAYS es=bro sa=192.168.1.5 p=1096/tcp num=50 msg=192.168.1.5\ has\
scanned\ 50\ ports\ of\ 192.168.1.106 ta$

Usando broctl vemos que obtenemos de este log mayor informacin. Vreemos su formato en el
prximo captulo.
Editamos weird.log:
Observamos claramente el tipo de informacin de este tipo de log.
1300884922.499851 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum
1300884937.763084 192.168.1.5/49635 > 192.168.1.106/ssh: bad_TCP_checksum
1300884937.890885 192.168.1.106/58844 > 192.168.1.245/dns: bad_UDP_checksum
1300884937.963542 192.168.1.5/49826 > 192.168.1.106/ssh: bad_TCP_checksum
1300884938.070815 192.168.1.5/49827 > 192.168.1.106/ssh: bad_TCP_checksum
1300884938.178196 192.168.1.5/49828 > 192.168.1.106/ssh: bad_TCP_checksum
1300884938.292406 192.168.1.5/49829 > 192.168.1.106/ssh: bad_TCP_checksum
1300884938.400810 192.168.1.5/49830 > 192.168.1.106/ssh: bad_TCP_checksum
1300884938.508303 192.168.1.5/49831 > 192.168.1.106/ssh: bad_TCP_checksum
1300884938.630239 192.168.1.5/49838 > 192.168.1.106/ssh: bad_TCP_checksum
1300884938.701615 192.168.1.5/49841 > 192.168.1.106/ssh: baroque_SYN
1300884938.701627 192.168.1.5/49841 > 192.168.1.106/ssh: bad_TCP_checksum
1300884938.787513 192.168.1.106/1 > 192.168.1.5/49844: spontaneous_RST
1300884938.823629 192.168.1.5/49845 > 192.168.1.106/1: spontaneous_FIN
1300885009.275644 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum
1300885009.542581 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum
1300885009.726829 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum
1300885009.890607 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum
1300885010.063698 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum
1300885010.103528 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum
1300885010.127833 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum
1300885010.699427 192.168.1.5/2268 > 192.168.1.106/ssh: bad_TCP_checksum

-------Queda an mucho que ver para entender y comenzar a sacar partido a Bro-IDS. Nos vemos
pues en el siguiente artculo.
Y como siempre.. hasta aqu por hoy. Hasta la prxima.

Você também pode gostar