Ya vimos en la primera parte dedicada a BRO IDS su instalación, configuración y uso básico.
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):
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)
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
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:
Éxito en las conexiones 5,6 y 7.
Veamos las conexiones en 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:
.
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)
En un caso como este tenemos más información en notice.log / alarm.log.
===
Y hasta aquí por hoy. Hasta la próxima.
Hola, muy buen post
Hay alguna forma de realizar el analisis sobre un archivo que contienen tráfico de una red con Bro IDS
Pingback: Bro–IDS. Un sistema de detección de intrusiones basado en políticas especializadas. Parte 3. Bro 2.0. | Seguridad y Redes
Pingback: Bro–IDS. Un sistema de detección de intrusiones basado en políticas especializadas. Parte 4. Bro 2.0. | Seguridad y Redes
Pingback: Bro–IDS. Un sistema de detección de intrusiones basado en políticas especializadas. Parte 4. Bro 2.0. « seguridadyinformatica