Bro – IDS. Un sistema de detección de intrusiones basado en políticas especializadas. Parte 2

Ya vimos en la primera parte dedicada a BRO IDS su instalación, configuración y uso básico.

añadimos a trace-summary -r -b

En esta ocasión veremos algunos ejemplos de uso e interpretación de logs, estados de conexión, generación de estadísticas de tráfico, detección de scan de puertos y análisis FTP / fuerza bruta.

Una conexión tcp cualquiera.

Descifrando el log.

Hacemos lo siguiente:

root@snortsensor:/usr/local/bro/bin# ./bro -ieth0 tcp

Se genera el archivo conn.log:

1303289473.098168 0.162969 192.168.1.106 89.248.110.50 http 44044 80 tcp 807 188 S3 X
1303289477.887917 0.146318 192.168.1.106 89.248.110.50 http 44046 80 tcp 813 190 S3 X
1303289468.525970 3.389657 192.168.1.106 89.248.110.50 http 44036 80 tcp 692 255 S3 X
1303289473.096988 0.151350 192.168.1.106 89.248.110.50 http 44043 80 tcp 809 190 S3 X
1303289468.478346 0.149337 192.168.1.106 89.248.110.50 http 44032 80 tcp 820 189 S3 X
1303289473.088892 0.149257 192.168.1.106 89.248.110.50 http 44042 80 tcp 794 190 S3 X
1303289468.479627 0.159630 192.168.1.106 89.248.110.50 http 44033 80 tcp 786 189 S3 X
1303289468.523519 0.155735 192.168.1.106 89.248.110.50 http 44034 80 tcp 794 191 S3 X
1303289477.894834 0.152385 192.168.1.106 89.248.110.50 http 44047 80 tcp 828 190 S3 X
1303289477.588188 3.222440 192.168.1.106 89.248.110.50 http 44045 80 tcp 800 9738 S3 X
1303289468.618150 0.160264 192.168.1.106 89.248.110.50 http 44037 80 tcp 809 190 S3 X
1303289477.897348 0.162653 192.168.1.106 89.248.110.50 http 44048 80 tcp 826 188 S3 X
1303289468.524749 3.406066 192.168.1.106 89.248.110.50 http 44035 80 tcp 708 445 S3 X
1303289472.820252 3.186299 192.168.1.106 89.248.110.50 http 44041 80 tcp 775 7651 S3 X
1303289468.628084 0.164298 192.168.1.106 89.248.110.50 http 44038 80 tcp 806 190 S3 X

y tienemos:

  • 1303289473.098168 Marca de tiempo
  • 0.162969 Duración
  • 192.168.1.106 IP Origen
  • 89.248.110.50 IP destino
  • http Servicio
  • 44044 Puerto origen
  • 80 Puerto destino
  • tcp protocolo
  • 807 Bytes enviados
  • 189 Bytes recividos
  • S3 Estado conexión, en este caso una conexión establecida y cerrada.
  • X Flags

Detectando scan de puertos con Bro.

Con el uso del scan analizer, podemos, de una forma rápida sencilla y sencilla, detectar un scan de puertos en un fichero pcap:

root@snortsensor:/usr/local/bro/bin# ./bro -r /tmp/pcap/captura_nmap_5.cap scan

se generan dos archivos .log:

  • conn.log  logs de todas las conexiones
  • notice.log avisos detectados a través del analizador scan

si abrimos conn.log podemos ver un extracto de log tal como este:

1290693703.150587 ? 213.xx.xx.xx 192.168.1.94 other 36756 554 tcp ? ? S0 X cc=1
1290693718.151608 ? 213.xx.xx.xx 192.168.1.94 other 36757 554 tcp ? ? S0 X cc=1
1290693733.152641 ? 213.xx.xx.xx 192.168.1.91 other 36756 554 tcp ? ? S0 X cc=1

donde (lo hemos visto ya más arriba):

  • Marca de tiempo: 1290693703.150587
  • Duración: ? (no se indica)
  • Origen: 213.xx.xx.xx
  • Destino: 192.168.1.94
  • Servicio: other ó http, etc
  • Puerto origen: 36756
  • Puerto Destino: 554
  • Protocolo: tcp
  • Bytes enviados: ? (no se indica porque no se envían datos)
  • Bytes recividos: ? (no se indica porque no se envían datos)
  • Estado conexión: S0 (intento de conexión sin ninguna respuesta)
  • Flags: X (significa que no se inició ninguna conexión a nivel local)
  • Tags / información: cc=1 

La marca de tiempo está en formato UNIX. La forma de convertir el log de forma que el formato de tiempo sea entendible es y siguiendo el ejemplo del log anterior que tenemos una IP origen 213.xx.xx.xx….:

root@snortsensor:/usr/local/bro/bin# grep 213.xx.xx.xx conn.log | /usr/local/bro/bin/cf

El resultado:

Nov 25 15:01:43 ? 213.xx.xx.xx 192.168.1.94 other 36756 554 tcp ? ? S0 X cc=1
Nov 25 15:01:58 ? 213.xx.xx.xx 192.168.1.94 other 36757 554 tcp ? ? S0 X cc=1
Nov 25 15:02:13 ? 213.xx.xx.xx 192.168.1.91 other 36756 554 tcp ? ? S0 X cc=1

notice log es en donde realmente nos avisa de los posibles scans detectados:

root@snortsensor:/usr/local/bro/bin# grep 213.xx.xx.xx notice.log | /usr/local/bro/bin/cf

el resultado, bastante entendible (pinchar para agrandar):

scan analizador bro ids notice.log

En /usr/local/bro/share/bro/scan.bro podemos modificar una serie de variables para afinar y personalizar los resultados.

Estadísticas con trace-summary.

Se trata de un script de python que elabora estadísticas (en algunos casos parecidas a las de tshark) a partir de archivos de logs bro tal como conn.log.

Antes que nada, tendremos que instalar el paquete:

  • PySubnetTree (en mi caso lo he instalado desde el gestor de paquetes de Ubuntu).

como siempre, un ejemplo:

root@snortsensor:/usr/local/bro/bin# python trace-summary -c conn.log

(pinchar para agrandar)

estadísticas bro ids conn.log con trace-summary

La informaciónque tenemos es muy clara, no necesita explicación salvo la columna de estado de conexión (States):

  • S3 conexión establecida y cerrada
  • RSTO se establece conexión y se aborta mediante un RST por el host que originó la conexión.
  • S1 la conexión está establecida y aún no terminada

Otro ejemplo. Ahora resolvemos nombres de host (-r) y los porcentajes serán por bytes (-b) y no por número de paquetes:

root@snortsensor:/usr/local/bro/bin# python trace-summary -r -b -c conn.log

añadimos a trace-summary -r -b

En State o estado de la conexión aparecen otros estados.

  • SO intento de conexión sin ninguna respuesta
  • REJ intento de conexión que ha sido rechazada.

Ejemplo de análisis FTP.

Vamos usar bro y ftp.bro para analizar una  intento de conexión FTP en tiempo real. añadimos alarm también:

root@snortsensor:/usr/local/bro/bin# sudo ./bro -C -ieth0 ftp alarm

Se generan los logs:

  • alarm.log
  • ftp.log
  • conn.log

Alarm.log ya nos dá alguna pista:

bro alarm.bro alarm.log conexiones ftp OK

Éxito en las conexiones 5,6 y 7.

Veamos las conexiones en conn.log:

detalle conexion bro conn.log

Vemos el password usado para la conexión FTP y los intentos en conexiones en 1,2,3 y 8 con los passwords usados para los intentos.

Finalmente en un extracto del ftp.log tenemos las acciones realizadas para la conexión #4:

bro ftp.log

.

Ataque FTP por fuerza bruta con nmap scripting.

Abajo una muestra de conn.log de la detección de uso de nmap con el script (nmap –script ftp-brute -p21 xx.xx.xx.xx)

nmap script ftp-brute bro ftp.log

En un caso como este tenemos más información en notice.log / alarm.log.

===

Y hasta aquí por hoy. Hasta la próxima.

Esta entrada fue publicada en Bro-IDS, Seguridad y redes. Guarda el enlace permanente.

4 respuestas a Bro – IDS. Un sistema de detección de intrusiones basado en políticas especializadas. Parte 2

  1. Julio César dijo:

    Hola, muy buen post

    Hay alguna forma de realizar el analisis sobre un archivo que contienen tráfico de una red con Bro IDS

  2. Pingback: Bro–IDS. Un sistema de detección de intrusiones basado en políticas especializadas. Parte 3. Bro 2.0. | Seguridad y Redes

  3. Pingback: Bro–IDS. Un sistema de detección de intrusiones basado en políticas especializadas. Parte 4. Bro 2.0. | Seguridad y Redes

  4. Pingback: Bro–IDS. Un sistema de detección de intrusiones basado en políticas especializadas. Parte 4. Bro 2.0. « seguridadyinformatica

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s