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.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 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.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:
- 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 Event Forwarder.
- 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-1
Haz clic en Guardar y reinicia el servicio para que los cambios se apliquen.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds en Configuración del SIEM > 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 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:
- Región: Es la región en la que se encuentra el bucket de Amazon S3.
- URI de S3: Es el URI del bucket.
s3:/BUCKET_NAME
- Reemplaza
BUCKET_NAME
por el nombre real del bucket.
- Reemplaza
- URI is a: Selecciona URI_TYPE según la configuración del flujo de registros (Single file | Directory | Directory which includes subdirectories).
- Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
- ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
- Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- Región: Es la región en la que se encuentra el bucket de Amazon S3.
- URI de S3: Es el URI del bucket.
s3:/BUCKET_NAME
- Reemplaza
BUCKET_NAME
por el nombre real del bucket.
- Reemplaza
- URI is a: Selecciona URI_TYPE según la configuración del flujo de registros (Single file | Directory | Directory which includes subdirectories).
- Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
- ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
- Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
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 ) |
Es el 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.