Recopila registros de EDR de Carbon Black
En este documento, se explica cómo recopilar registros de Carbon Black EDR de entornos locales y de la nube con AWS S3. El analizador extrae campos de mensajes con formato JSON, CSV o syslog, los normaliza y los asigna al UDM. Maneja varios tipos de eventos de Carbon Black, incluidas las conexiones de red, los eventos de procesos, las modificaciones de archivos, los cambios en el registro y los aciertos de IOC, y enriquece los datos con inteligencia sobre amenazas e información del dispositivo cuando está disponible.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso con privilegios a AWS IAM y S3
- Acceso privilegiado a Carbon Black EDR en la nube o en las instalaciones
Configura Carbon Black EDR local
Configura el bucket de Amazon S3 para sistemas locales
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
- Guarda el Nombre y la Región del bucket para usarlos más adelante.
- Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- Haz clic en Crear clave de acceso en la sección Claves de acceso.
- Selecciona Servicio de terceros como el Caso de uso.
- Haz clic en Siguiente.
- Opcional: Agrega 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.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca y selecciona la política AmazonS3FullAccess.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Instala cb-event-forwarder en el 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.repoInstala el RPM con YUM:
yum install cb-event-forwarderSi usas EDR 7.1.0 o una versión posterior, ejecuta la siguiente secuencia de comandos para establecer los permisos adecuados que necesita EDR:
/usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
Configura cb-event-forwarder para que genere registros JSON
Abre el archivo de configuración:
sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.confModifica 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/logsPara guardar y salir con el teclado, haz lo siguiente:
- Presiona 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
Configura Carbon Black Cloud Event Forwarder para S3
Crea un bucket de AWS S3
- Accede a la consola de administración de AWS.
- Asegúrate de que la región de AWS coincida con la región del retransmisor de eventos:
- En la página Consola de AWS, busca la región.
- Usa el menú desplegable para seleccionar la región correcta de tu reenvío de eventos.
- En la siguiente lista, se indica la región de AWS aplicable para cada URL de Carbon Black EDR.
- "instance-alias".my.carbonblack.io - Región: US East (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 bucket para abrir el asistente Crear bucket.
- En Nombre del bucket, ingresa un nombre único para tu bucket (por ejemplo, CB-EDR).
- Asegúrate de que la región esté configurada de forma predeterminada en la que seleccionaste antes.
- Actualiza la configuración predeterminada de Block Public Access para permitir el acceso público (esto es necesario para transferir los registros a Google SecOps).
- Selecciona Crear bucket.
Configura el bucket de S3 para permitir que el reenviador de eventos escriba eventos
- Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- Haz clic en Crear clave de acceso en la sección Claves de acceso.
- Selecciona Servicio de terceros como el Caso de uso.
- Haz clic en Siguiente.
- Opcional: Agrega 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.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca la política AmazonS3FullAccess.
- Selecciona la política.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Configura el reenvío de eventos en la consola de EDR
- Accede a VMware Carbon Black Cloud.
- Ve a la pestaña reenviador de eventos.
- Habilita los eventos que deseas que el producto suba a S3.
- Ve a Output and Type y configura S3.
- Proporciona el nombre del bucket de S3 en el siguiente formato:
<region>:<bucket-name>(por ejemplo,us-east-1:cb-edr). - Selecciona el archivo upload AWS credentials en formato INI.
A continuación, se muestra un ejemplo de un perfil:
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1Haz clic en Guardar y reinicia el servicio para que los cambios se apliquen.
Configura feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración del SIEM > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de EDR de Carbon Black).
- Selecciona Amazon S3 V2 como el Tipo de fuente.
- Selecciona Carbon Black EDR como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- URI de S3: Es el URI del bucket.
s3:/BUCKET_NAME- Reemplaza
BUCKET_NAMEpor el nombre real del bucket.
- Reemplaza
- Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
- URI de S3: Es el URI del bucket.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz 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 |
Es el valor del campo action del registro sin procesar. |
cb_server |
intermediary.hostname |
Es el valor del campo cb_server del registro sin procesar. |
cb_version |
metadata.product_version |
Es el valor del campo cb_version del registro sin procesar. |
child_pid |
target.process.pid (para eventos de ingress.event.childproc) |
Es 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) |
Es 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) |
Es el primer elemento del array 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 del array 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) |
Es 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) |
Es 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) |
Es 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) |
Es el valor del campo childproc_username del registro sin procesar cuando type es endpoint.event.procstart. |
clientIp |
principal.ip, principal.asset.ip |
Es el 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), 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) |
Es el valor del campo command_line del registro sin procesar cuando type es ingress.event.procstart. |
comms_ip |
intermediary.ip |
Es el valor del campo comms_ip del registro sin procesar. |
computer_name |
principal.hostname, principal.asset.hostname |
Es el 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) |
Es 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) |
Es 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) |
Es el primer elemento del array 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 del array 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) |
Es 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) |
Es 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) |
Es 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? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.