Recoger registros de EDR de Carbon Black

Disponible en:

En este documento se explica cómo recoger registros de Carbon Black EDR de entornos en la nube y locales mediante AWS S3. El analizador extrae campos de mensajes con formato JSON, CSV o syslog, los normaliza y los asigna al UDM. Gestiona varios tipos de eventos de Carbon Black, como conexiones de red, eventos de procesos, modificaciones de archivos, cambios en el registro y coincidencias de IOC, y enriquece los datos con información sobre amenazas y dispositivos cuando está disponible.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso privilegiado a AWS IAM y S3.
  • Acceso privilegiado a Carbon Black EDR en la nube o en las instalaciones.

Configurar Carbon Black EDR on-premise

Configurar un segmento de Amazon S3 para el entorno local

  1. Crea un segmento de Amazon S3 siguiendo esta guía del usuario: Crear un segmento.
  2. Guarda el nombre y la región del bucket para usarlos más adelante.
  3. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  4. Selecciona el usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  7. Selecciona Servicio de terceros como Caso práctico.
  8. Haz clic en Siguiente.
  9. Opcional: añade una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. En la sección Políticas de permisos, haz clic en Añadir permisos.
  15. Selecciona Añadir permisos.
  16. Seleccione Adjuntar políticas directamente.
  17. Busca y selecciona la política AmazonS3FullAccess.
  18. Haz clic en Siguiente.
  19. Haz clic en Añadir permisos.

Instalar cb-event-forwarder en un servidor EDR local

  1. Instala el repositorio CbOpenSource si aún no está presente:

    cd /etc/yum.repos.d
    curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
    
  2. Instala el RPM con YUM:

    yum install cb-event-forwarder
    
  3. Si usas EDR 7.1.0 o una versión posterior, ejecuta la siguiente secuencia de comandos para definir los permisos adecuados que necesita EDR:

    /usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
    

Configurar cb-event-forwarder para generar registros JSON

  1. Abre el archivo de configuración:

    sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
    
  2. Modifica los siguientes parámetros:

    [event_forwarder]
    output_format=json   # Enable JSON format
    output_type=s3       # Send logs to AWS S3
    s3_bucket_name=YOUR-S3-BUCKET-NAME
    s3_region=YOUR-S3-BUCKET-NAME
    s3_access_key_id=YOUR_AWS_ACCESS_KEY
    s3_secret_access_key=YOUR_AWS_SECRET_KEY
    s3_prefix=carbonblack/edr/logs
    
  3. Para guardar y salir con el teclado, haz lo siguiente:

    • Ctrl + X, luego Y y, por último, Intro.
  4. Inicia cb-event-forwarder:

    sudo systemctl enable cb-event-forwarder
    sudo systemctl restart cb-event-forwarder
    sudo systemctl status cb-event-forwarder
    

Configurar Carbon Black Cloud Event Forwarder para S3

Crear un segmento de AWS S3

  1. Inicia sesión en la consola de administración de AWS.
  2. Asegúrate de que la región de AWS coincida con la región de Event Forwarder:
    1. En la página Consola de AWS, busca la región.
    2. Usa el menú desplegable para seleccionar la región correcta de tu Event Forwarder.
    3. En la siguiente lista se indica la región de AWS aplicable a cada URL de Carbon Black EDR.
      • "instance-alias".my.carbonblack.io - Región: Este de EE. UU. (N. Virginia) (us-east-1)
      • "instance-alias".my.cbcloud.de - Región: Europa (Fráncfort) (eu-central-1)
      • "instance-alias".my.cbcloud.sg Región: Asia Pacífico (Singapur) (ap-southeast-1)
  3. Selecciona Servicios.
  4. Ve a la consola de S3.
  5. Haz clic en Crear segmento para abrir el asistente Crear segmento.
    1. En Nombre del segmento, introduce un nombre único para el segmento (por ejemplo, CB-EDR).
    2. Comprueba que el campo Región tenga el valor predeterminado que has seleccionado antes.
    3. Actualiza los valores predeterminados de Bloquear acceso público para permitir el acceso público (es necesario para ingerir los registros en Google SecOps).
    4. Selecciona Crear segmento.

Configurar el segmento de S3 para permitir que Event Forwarder escriba eventos

  1. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  2. Selecciona el usuario creado.
  3. Selecciona la pestaña Credenciales de seguridad.
  4. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  5. Selecciona Servicio de terceros como Caso práctico.
  6. Haz clic en Siguiente.
  7. Opcional: añade una etiqueta de descripción.
  8. Haz clic en Crear clave de acceso.
  9. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
  10. Haz clic en Listo.
  11. Selecciona la pestaña Permisos.
  12. En la sección Políticas de permisos, haz clic en Añadir permisos.
  13. Selecciona Añadir permisos.
  14. Seleccione Adjuntar políticas directamente.
  15. Busca la política AmazonS3FullAccess.
  16. Selecciona la política.
  17. Haz clic en Siguiente.
  18. Haz clic en Añadir permisos.

Configurar el reenvío de eventos en la consola de EDR

  1. Inicia sesión en VMware Carbon Black Cloud.
  2. Vaya a la pestaña Reenviador de eventos.
  3. Habilita los eventos que quieras que el producto suba a S3.
  4. Ve a Salida y tipo y selecciona S3.
  5. Proporciona el nombre del segmento de S3 con el siguiente formato: <region>:<bucket-name> (por ejemplo, us-east-1:cb-edr).
  6. Selecciona el archivo upload AWS credentials (subir credenciales de AWS) en formato INI.
  7. A continuación, se muestra un ejemplo de perfil:

    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
    AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    Default region name [None]: us-east-1
    
  8. Haz clic en Guardar y reinicia el servicio para que los cambios se apliquen.

Configurar feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Registros de EDR de Carbon Black).
  5. Selecciona Amazon S3 V2 como Tipo de fuente.
  6. Seleccione Carbon Black EDR como Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifique los valores de los siguientes parámetros de entrada:

    • URI de S3: el URI del segmento.
      • s3:/BUCKET_NAME
        • Sustituye BUCKET_NAME por el nombre real del segmento.
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
  9. Haz clic en Siguiente.

  10. Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
action security_result.detection_fields[?key == 'action'].value Valor del campo action del registro sin procesar.
cb_server intermediary.hostname Valor del campo cb_server del registro sin procesar.
cb_version metadata.product_version Valor del campo cb_version del registro sin procesar.
child_pid target.process.pid (para eventos de ingress.event.childproc) El valor del campo child_pid del registro sin procesar cuando type es ingress.event.childproc.
child_process_guid target.process.product_specific_process_id (para eventos de ingress.event.childproc) "CB:" concatenado con el valor del campo child_process_guid del registro sin procesar cuando type es ingress.event.childproc.
child_username target.user.userid (para eventos de ingress.event.childproc) El valor del campo child_username del registro sin procesar cuando type es ingress.event.childproc.
childproc_guid target.process.product_specific_process_id (para eventos de endpoint.event.procstart) "CB:" concatenado con el valor del campo childproc_guid del registro sin procesar cuando type es endpoint.event.procstart.
childproc_hash.0 target.process.file.md5 (para eventos de endpoint.event.procstart) El primer elemento de la matriz childproc_hash del registro sin procesar cuando type es endpoint.event.procstart.
childproc_hash.1 target.process.file.sha256 (para eventos de endpoint.event.procstart) El segundo elemento de la matriz childproc_hash del registro sin procesar cuando type es endpoint.event.procstart.
childproc_name target.process.file.full_path (para eventos de endpoint.event.procstart) El valor del campo childproc_name del registro sin procesar cuando type es endpoint.event.procstart.
childproc_pid target.process.pid (para eventos de endpoint.event.procstart) El valor del campo childproc_pid del registro sin procesar cuando type es endpoint.event.procstart.
childproc_publisher.0.name security_result.detection_fields[?key == 'childproc_publisher_name'].value (para eventos de endpoint.event.procstart) "childproc_publisher_name:" concatenado con el valor de childproc_publisher.0.name del registro sin procesar cuando type es endpoint.event.procstart.
childproc_publisher.0.state security_result.detection_fields[?key == 'childproc_publisher_state'].value (para eventos de endpoint.event.procstart) "childproc_publisher_state:" concatenado con el valor de childproc_publisher.0.state del registro sin procesar cuando type es endpoint.event.procstart.
childproc_reputation security_result.detection_fields[?key == 'childproc_reputation'].value (para eventos de endpoint.event.procstart) El valor del campo childproc_reputation del registro sin procesar cuando type es endpoint.event.procstart.
childproc_username target.user.userid (para eventos de endpoint.event.procstart) El valor del campo childproc_username del registro sin procesar cuando type es endpoint.event.procstart.
clientIp principal.ip, principal.asset.ip Valor del campo clientIp del registro sin procesar.
cmdline target.process.command_line (para eventos de feed.query.hit.process y feed.storage.hit.process) y additional.fields[?key == 'cmdline_*'].value.string_value (para eventos de watchlist.storage.hit.process) Valor del campo cmdline del registro sin procesar cuando type es feed.query.hit.process o feed.storage.hit.process. En el caso de los eventos watchlist.storage.hit.process, se almacena en additional.fields con la clave "cmdline_*".
command_line target.process.command_line (para eventos de ingress.event.procstart) El valor del campo command_line del registro sin procesar cuando type es ingress.event.procstart.
comms_ip intermediary.ip Valor del campo comms_ip del registro sin procesar.
computer_name principal.hostname, principal.asset.hostname Valor del campo computer_name del registro sin procesar.
crossproc_api additional.fields[?key == 'crossproc_api'].value.string_value (para eventos de endpoint.event.apicall) El valor del campo crossproc_api del registro sin procesar cuando type es endpoint.event.apicall.
crossproc_guid additional.fields[?key == 'crossproc_guid'].value.string_value (para eventos de endpoint.event.crossproc) El valor del campo crossproc_guid del registro sin procesar cuando type es endpoint.event.crossproc.
crossproc_hash.0 additional.fields[?key == 'crossproc_md5'].value.string_value (para eventos de endpoint.event.crossproc) El primer elemento de la matriz crossproc_hash del registro sin procesar cuando type es endpoint.event.crossproc.
crossproc_hash.1 additional.fields[?key == 'crossproc_sha256'].value.string_value (para eventos de endpoint.event.crossproc) El segundo elemento de la matriz crossproc_hash del registro sin procesar cuando type es endpoint.event.crossproc.
crossproc_name target.process.file.full_path (para eventos de endpoint.event.crossproc) El valor del campo crossproc_name del registro sin procesar cuando type es endpoint.event.crossproc.
crossproc_publisher.0.name security_result.detection_fields[?key == 'crossproc_publisher_name'].value (para eventos de endpoint.event.crossproc) "crossproc_publisher_name:" concatenado con el valor de crossproc_publisher.0.name del registro sin procesar cuando type es endpoint.event.crossproc.
crossproc_publisher.0.state security_result.detection_fields[?key == 'crossproc_publisher_state'].value (para eventos de endpoint.event.crossproc) "crossproc_publisher_state:" concatenado con el valor de crossproc_publisher.0.state del registro sin procesar cuando type es endpoint.event.crossproc.
crossproc_reputation additional.fields[?key == 'crossproc_reputation'].value.string_value (para eventos de endpoint.event.crossproc) El valor del campo crossproc_reputation del registro sin procesar cuando type es endpoint.event.crossproc.
crossproc_target additional.fields[?key == 'crossproc_target'].value.string_value (para eventos de endpoint.event.crossproc) El valor del campo crossproc_target del registro sin procesar cuando type es endpoint.event.crossproc. Se convierte en una cadena "true" o "false".

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.