Una de las partes fundamentales en el análisis dinámico de códigos maliciosos es la obtención de información a partir de una captura de tráfico. Para lograr este objetivo además de las opciones para hacer gráficos, el uso de filtros en Wireshark para detectar actividad maliciosa suele ser una de las alternativas más utilizada.

Pero no es la única herramienta para lograrlo, por ejemplo Malcom permite examinar estructuras de redes maliciosas facilitando el análisis de las relaciones entre las diversas direcciones IP, dominios y servidores DNS que toman parte en una comunicación C&C, permitiendo procesar rápidamente los datos recolectados y creando gráficos intuitivos que ponen en evidencia las conexiones entre equipos en red. Otra interesante opción para analizar archivos pcap es CapTipper, desarrollada en Python tiene una serie de características que facilita la lectura de estos archivos permitiendo ahorrar tiempo y optimizando el trabajo de auditoría.

Dentro de todo el arsenal de herramientas que se podrían encontrar para realizar este tipo de actividades encontramos Bro, pensado como un sistema de detección de intrusiones (IDS) que corre en plataformas UNIX/Linux y cuyo principal objetivo es permitir el análisis del tráfico de red en busca de actividad sospechosa. Ya de hecho la habíamos utilizado para extraer información de archivos pcap y visualizar las capturas de tráfico de botnets con OpenGraphiti, además de servir para procesar y simplificar la identificación de patrones entre los bots durante la Operación Liberpy.

Dado que es una herramienta bastante útil y que por su facilidad para hacer scripts resulta bastante flexible y adaptable, sobre todo para el análisis forense de una gran cantidad de datos. Vamos a hacer escribir una serie de post con información de cómo utilizar Bro y algunas ideas que podrían resultar relevantes.

Bro 101: Por dónde empezar

Esta herramienta permite analizar la actividad de red a nivel de aplicación para ir comparando este comportamiento con patrones que pudieran ser considerados sospechosos ya sea por el tipo de paquetes que se intercambien o las características de su contenido.

Para iniciar nuestros análisis solo debemos ejecutar el comando para copiar el repositorio directamente desde GitHub. Con estos además de asegurarnos que tenemos la última versión se nos facilitará su actualización:

git clone --recursive git://git.bro.org/org

Una vez tenemos el repositorio en nuestra máquina, solo nos queda instalar algunas dependencias y ejecutar la instalación de nuestra herramienta. Esta herramienta es conocida por sus funcionalidades de IDS, pero en este caso nos va interesar darle una mirada a las características para extraer información de las capturas de tráfico.

Dentro de las características que vale la pena resaltar en la capacidad para analizar grandes volúmenes de tráfico. El funcionamiento de la herramienta como ya lo mencionamos se hace a través de scripts, con los cuales se hace la extracción de información que se esté buscando.

Como resultado de aplicar Bro sobre un archivo pcap resultan varios archivos con información más específica y organizada de acuerdo a las características de cada script. Utilizando la opción más básica de Bro podemos obtener una gran cantidad de información discriminada por protocolos:

bro –r [ruta_archivo_pcap]

Ahora tenemos varios archivos con la información organizada de diferentes manera. Por ejemplo en el archivo http.log se pueden encontrar filtradas las peticiones HTTP de la captura de tráfico. Como se puede ver en la siguiente imagen, algo que puede llamar la atención durante un análisis es la descarga de un archivo ejecutable:

http.log_WLSEl string que está resaltado en amarillo, nos va a permitir hacer seguimiento de este evento en particular a través de los demás archivos generados por la herramienta. Por ejemplo si vamos al archivo conn.log y buscamos esta cadena de caracteres vamos a obtener más información sobre la conexión como el momento en que se llega el primer paquete, las ip y puertos utilizados, la duración de la conexión, el origen de la conexión, entre otra información que podría resultar interesante para el análisis:

conn.log_WLSHasta este punto con el manejo de Bro podemos obtener información similar a la que podríamos encontrar en otras herramientas como Wireshark o CapTipper, solo que organizada de una manera diferente. En nuestro próximo post, vamos a ver como apoyarnos en scripts de Bro para reunir información de diferentes fuentes y que nos quede disponible para su análisis.