Recoger registros de EDR de Carbon Black
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
- Crea un segmento de Amazon S3 siguiendo esta guía del usuario: Crear un segmento.
- Guarda el nombre y la región del bucket para usarlos más adelante.
- Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- En la sección Claves de acceso, haz clic en Crear clave de acceso.
- Selecciona Servicio de terceros como Caso práctico.
- Haz clic en Siguiente.
- Opcional: añade una etiqueta de descripción.
- Haz clic en Crear clave de acceso.
- Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- En la sección Políticas de permisos, haz clic en Añadir permisos.
- Selecciona Añadir permisos.
- Seleccione Adjuntar políticas directamente.
- Busca y selecciona la política AmazonS3FullAccess.
- Haz clic en Siguiente.
- Haz clic en Añadir permisos.
Instalar cb-event-forwarder en un servidor EDR local
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
Instala el RPM con YUM:
yum install cb-event-forwarder
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
Abre el archivo de configuración:
sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
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
Para guardar y salir con el teclado, haz lo siguiente:
- Ctrl + X, luego Y y, por último, Intro.
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
- Inicia sesión en la consola de administración de AWS.
- Asegúrate de que la región de AWS coincida con la región de Event Forwarder:
- En la página Consola de AWS, busca la región.
- Usa el menú desplegable para seleccionar la región correcta de tu Event Forwarder.
- 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)
- Selecciona Servicios.
- Ve a la consola de S3.
- Haz clic en Crear segmento para abrir el asistente Crear segmento.
- En Nombre del segmento, introduce un nombre único para el segmento (por ejemplo, CB-EDR).
- Comprueba que el campo Región tenga el valor predeterminado que has seleccionado antes.
- Actualiza los valores predeterminados de Bloquear acceso público para permitir el acceso público (es necesario para ingerir los registros en Google SecOps).
- Selecciona Crear segmento.
Configurar el segmento de S3 para permitir que Event Forwarder escriba eventos
- Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- En la sección Claves de acceso, haz clic en Crear clave de acceso.
- Selecciona Servicio de terceros como Caso práctico.
- Haz clic en Siguiente.
- Opcional: añade una etiqueta de descripción.
- Haz clic en Crear clave de acceso.
- Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- En la sección Políticas de permisos, haz clic en Añadir permisos.
- Selecciona Añadir permisos.
- Seleccione Adjuntar políticas directamente.
- Busca la política AmazonS3FullAccess.
- Selecciona la política.
- Haz clic en Siguiente.
- Haz clic en Añadir permisos.
Configurar el reenvío de eventos en la consola de EDR
- Inicia sesión en VMware Carbon Black Cloud.
- Vaya a la pestaña Reenviador de eventos.
- Habilita los eventos que quieras que el producto suba a S3.
- Ve a Salida y tipo y selecciona S3.
- Proporciona el nombre del segmento de S3 con el siguiente formato:
<region>:<bucket-name>
(por ejemplo,us-east-1:cb-edr
). - Selecciona el archivo upload AWS credentials (subir credenciales de AWS) en formato INI.
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
Haz clic en Guardar y reinicia el servicio para que los cambios se apliquen.
Configurar feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Registros de EDR de Carbon Black).
- Selecciona Amazon S3 V2 como Tipo de fuente.
- Seleccione Carbon Black EDR como Tipo de registro.
- Haz clic en Siguiente.
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.
- Sustituye
- Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
- URI de S3: el URI del segmento.
Haz clic en Siguiente.
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.