martes, 2 de junio de 2020

Script colector de eventos McAfee Mvision ePO Cloud

portada_mcafee_mvision_epo_cloud


¡Hola compañeros!

En esta entrada os quiero enseñar uno de mis primeros scripts en Python3 para extraer los eventos de la solución McAfee Mvision ePO Cloud.


Colector de eventos McAfee Mvision ePO Cloud


Trabajando como analistas o en ámbitos dedicados a blueteam,  en algunas situaciones nos vemos en la necesidad de tener que extraer los eventos de las soluciones que gestionamos y añadirlos al SIEM que tengamos para poder realizar la integración, correlación y generación de alertas según umbrales, etc, y de esta forma aportar mayor proactividad al entorno ante situaciones de seguridad.

En este caso, el script ha sido desarrollado para poder extraer los eventos según el cliente que configuremos, permitiéndonos configuraciones individuales de extración de eventos de la solución Cloud.

El script es el siguiente:

Antes de empezar, hay que modificar la variable "self.path" del archivo "Mvision_epo.py" con la ruta donde se encuentre el directorio del script.

Este script consta de varios archivos y directorios que pasaré a detallar:

  • setup.py: Es el primer archivo que debemos ejecutar, ya que se encarga de configurar el cliente y crear un archivo "CFG" donde almacenará la información de este.
  • mvision_epo.py: Es el archivo que se debe ejecutar en segundo lugar, este se encarga de la autenticación y obtención del token access para poder extraer los eventos y almacenarlos en un archivo.log
  • general.cfg: Este archivo contiene los ID de eventos que NO queremos extraer de la ePO de Mvision.
  • Directorio CONF: En este directorio se encuentran los archivos de configuración de los clientes, creados a partir del setup.py. Se crea una vez finalizado el setup.py
  • Archivo CONF: Este archivo contiene las credenciales de autenticación, el client_ID de Mvision, marca de tiempo para control de eventos, numero de eventos extraídos hasta la fecha, etc.


1 - Ejecución de Setup.py


En primer lugar como he comentado, ejecutamos el archivo "setup.py" para configurar el cliente, nos irá pidiendo los datos uno a uno:

ejecucion_script_setup


Una vez configurado el cliente, pasamos a mostrar el archivo creado, en este caso "Prueba1.cfg":

visualizar_archivo_creado

  • client: Nombre de cliente configurado
  • client_ID: Este es el identificador de cliente, lo podemos obtener a través del siguiente enlace una vez estemos logueados: https://auth.ui.mcafee.com/support.html. Se codifica en base64.
  • epo_user: Usuario de acceso a Mvision (podemos crear uno de solo lectura). Se codifica en base64.
  • epo_pass: Contraseña de acceso. Se codifica en base64
  • epo_scope: Alcance de módulos para extraer eventos. Es decir, de que módulos se extraeran, por defecto se han configurado todos.
  • dir_events: Directorio donde se almacenarán los eventos extraídos en un archivo ".log". Unicamente se debe definir el directorio con ruta absoluta.
  • state: Contador del cual nos permite identificar los eventos con un campo numérico (numevent).
  • last_since: Control de tiempo para poder extraer los eventos desde la ultima ejecución, evitando tener que extraer todos cada vez que se ejecuta.


2 - Ejecución de Mvision_epo.py


Como segundo paso, se debe ejecutar el script "Mvision_epo.py" con el argumento cliente, como se muestra en la siguiente imagen:

ejecucion_script_mvision

Nos indica que el script se ha ejecutado correctamente y los eventos han sido recolectados.

Ahora si echamos un ojo al archivo "CFG" del cliente en cuestión, veremos que la variable state y last_since, han sido definidas con otros valores.


3 - Revisión de logs

Una vez se haya ejecutado el script anterior, pasamos a visualizar los eventos recolectados. En este caso voy a mostrar una parte de los logs, ya que no he podido crear un tenant de prueba para la solución:

visualizacion_logs_recolectados

Opcional - Automatización con CRON


Como estaréis pensando, este script sería conveniente que se fuese ejecutando cada X tiempo para ir recolectandos los eventos que van sucediendo en la solución. Acordarse que en la ejecución del archivo, este debe tener el argumento "cliente" para que se ejecute con el archivo "CFG" en cuestión.

Añadimos la ejecución a CRON y de esta forma automatizamos. Unicamente nos quedaría la opción de indicarle al SIEM de donde debe leer los eventos, que en este caso sería de un archivo local.

Para finalizar, indicar como he comentado al principio que ha sido el primer script que he realizado en Python3. por lo que el código podrá ser optimizado de mejor forma, soís libres de ello.

Espero que os pueda servir de ayuda y como digo siempre, cualquier duda, sugerencia, etc, la podéis dejar en los comentarios.

Nos vemos en el próximo artículo.

Saludos!

rekaktz