Recopila registros de Carbon Black App Control
En este documento, se explica cómo recopilar registros de Carbon Black App Control. El analizador admite los formatos CEF y JSON. Primero, intenta analizar la entrada como JSON. Si eso falla, trata la entrada como CEF, realiza sustituciones de texto, extrae campos de CEF, los asigna al UDM y establece el tipo de evento en GENERIC_EVENT
. De lo contrario, usa un archivo de inclusión de asignación del UDM específico de JSON independiente.
Antes de comenzar
- Asegúrate de tener una instancia de Google Security Operations.
- Asegúrate de usar Windows 2016 o una versión posterior, o un host de Linux con
systemd
. - Si ejecutas la herramienta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
- Servidor de Carbon Black App Control (CB Protection) (se recomienda la versión 8.x o posterior)
- Asegúrate de tener acceso con privilegios a Carbon Black App Control.
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Profile.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instalación en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación en Linux
- Abre una terminal con privilegios de raíz o sudo.
Ejecuta el siguiente comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos adicionales de instalación
- Para obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de Bindplane para que ingiera Syslog y lo envíe a Google SecOps
Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, se encuentra en el directorio/etc/bindplane-agent/
en Linux o en el directorio de instalación en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Ubica el archivo
Edita el archivo
config.yaml
de la siguiente manera:receivers: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:11592" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: JSON namespace: cb_app_control raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
Reemplaza
<customer_id>
por el ID de cliente real.Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Cómo obtener el archivo de autenticación de la transferencia de datos de Google SecOps.
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola de Servicios o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura el Control de apps de CB para enviar registros de Syslog
- Accede a la consola de CB App Control con una cuenta de administrador.
- Ve a Administrador > Configuración del sistema > Registro externo.
- En la sección External Event Logging, haz lo siguiente:
- Enable Syslog Logging: Selecciona la casilla de verificación Syslog Enabled.
- Dirección del servidor:
<Bindplane Server IP>
. - Puerto:
<Bindplane Server PORT>
. - Protocolo: Selecciona TCP.
- Formato de Syslog: Selecciona JSON.
- En Opciones de registro de eventos, selecciona los tipos de registros que deseas enviar:
- Incumplimientos de políticas
- Eventos de Supervisión de integridad de archivos (FIM)
- Eventos de autenticación de usuarios
- Datos de inteligencia sobre amenazas
- Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
ABId |
principal.asset.asset_id |
El ABId del registro JSON se usa como parte del ID del activo en el formato PRODUCT_SPECIFIC_ID:{ABId}-{Bit9Server} . |
Bit9Server |
principal.asset.asset_id |
Se usa como parte del ID del activo del principal, combinado con ABId . También se usa para construir el campo metadata.url_back_to_product . |
CommandLine |
about.process.command_line |
Se asigna directamente. |
EventType |
metadata.product_event_type |
Se asigna con el EventTypeId correspondiente entre corchetes (p.ej., [5] - Discovery ). |
EventTypeId |
metadata.product_event_type |
Se usa con EventType para propagar metadata.product_event_type . |
EventSubType |
metadata.description |
Se agrega al campo metadata.description . |
EventSubTypeId |
metadata.description |
No se asigna de forma explícita, pero puede contribuir a la descripción según la lógica interna del analizador. |
externalId |
metadata.product_log_id |
Se asigna directamente. |
FileHash |
about.file.sha256 |
Se asigna directamente. |
FileName |
additional.fields (con la clave FileName ) |
Se agregó como un campo adicional. También se usa como parte de la información del archivo en metadata.description para algunos eventos. |
FilePath |
about.file.full_path |
Se asigna directamente. |
FileThreat |
additional.fields (con la clave fileThreat ) |
Se agregó como un campo adicional. |
FileTrust |
additional.fields (con la clave fileTrust ) |
Se agregó como un campo adicional. |
HostId |
principal.asset.asset_id |
Se usa para construir la URL de vuelta al producto en metadata.url_back_to_product . |
HostName |
target.hostname |
Se asigna directamente. |
HostIP |
target.ip |
Se asigna directamente. |
Message |
metadata.description |
Se asigna directamente. |
PathName |
about.file.full_path |
Se asigna directamente. |
Platform |
target.platform |
Se asigna al valor de enumeración WINDOWS . |
Policy |
additional.fields (con la clave Policy ) |
Se agregó como un campo adicional. |
PolicyId |
additional.fields (con la clave PolicyId ) |
Se agregó como un campo adicional. |
ProcessKey |
additional.fields (con la clave ProcessKey ) |
Se agregó como un campo adicional. |
ProcessPath |
about.process.command_line |
Se asigna directamente. |
ProcessPathName |
about.process.command_line |
Se asigna directamente. |
ProcessThreat |
additional.fields (con la clave ProcessThreat ) |
Se agregó como un campo adicional. |
ProcessTrust |
additional.fields (con la clave ProcessTrust ) |
Se agregó como un campo adicional. |
RuleName |
additional.fields (con la clave ruleName ) |
Se agregó como un campo adicional. |
Timestamp |
metadata.event_timestamp |
Se asigna directamente. |
UserName |
target.user.user_display_name |
Se asigna directamente. |
UserSid |
principal.user.userid |
Se asigna directamente. |
agent.ephemeral_id |
observer.labels (con la clave ephemeral_id ) |
Se agregó como etiqueta de observador. |
agent.name |
principal.hostname , observer.hostname , observer.user.userid |
Se asigna a varios campos. |
agent.type |
observer.application |
Se asigna directamente. |
agent.version |
metadata.product_version |
Se asigna directamente para los registros JSON. En el caso de los registros de CEF, se extrae del mensaje de CEF. |
cat |
security_result.category_details |
Se asigna directamente. |
cs1 |
additional.fields (con la clave rootHash o alguna otra cs1Label) |
Se agregó como un campo adicional con la clave definida por cs1Label . |
cs1Label |
additional.fields |
Se usa como clave para el campo adicional que completa cs1 . |
cs2 |
additional.fields (con la clave installerFilename o alguna otra cs2Label) |
Se agregó como un campo adicional con la clave definida por cs2Label . |
cs2Label |
additional.fields |
Se usa como clave para el campo adicional que completa cs2 . |
cs3 |
additional.fields (con la clave Policy o alguna otra cs3Label) |
Se agregó como un campo adicional con la clave definida por cs3Label . |
cs3Label |
additional.fields |
Se usa como clave para el campo adicional que completa cs3 . |
cs5 |
additional.fields (con la clave ruleName o alguna otra cs5Label) |
Se agregó como un campo adicional con la clave definida por cs5Label . |
cs5Label |
additional.fields |
Se usa como clave para el campo adicional que completa cs5 . |
cfp1 |
additional.fields (con la clave fileTrust o alguna otra cfp1Label) |
Se agregó como un campo adicional con la clave definida por cfp1Label . |
cfp1Label |
additional.fields |
Se usa como clave para el campo adicional que completa cfp1 . |
cfp2 |
additional.fields (con la clave processTrust o alguna otra cfp2Label) |
Se agregó como un campo adicional con la clave definida por cfp2Label . |
cfp2Label |
additional.fields |
Se usa como clave para el campo adicional que completa cfp2 . |
deviceProcessName |
about.process.command_line |
Se asigna directamente. |
dhost |
target.hostname |
Se asigna directamente. |
dst |
target.ip |
Se asigna directamente. |
duser |
target.user.user_display_name |
Se asigna directamente. |
dvchost |
about.hostname |
Se asigna directamente. |
eventId |
additional.fields (con la clave eventId ) |
Se agregó como un campo adicional. |
fileHash |
about.file.sha256 |
Se asigna directamente. |
flexString1 |
additional.fields (con la clave fileThreat o alguna otra flexString1Label) |
Se agregó como un campo adicional con la clave definida por flexString1Label . |
flexString1Label |
additional.fields |
Se usa como clave para el campo adicional que completa flexString1 . |
flexString2 |
additional.fields (con la clave processThreat o alguna otra flexString2Label) |
Se agregó como un campo adicional con la clave definida por flexString2Label . |
flexString2Label |
additional.fields |
Se usa como clave para el campo adicional que completa flexString2 . |
fname |
additional.fields (con la clave fname ) |
Se agregó como un campo adicional. También se usa como parte de la información del archivo en metadata.description para algunos eventos. |
host.architecture |
target.asset.hardware.cpu_platform |
Se asigna directamente. |
host.hostname |
target.asset.asset_id |
Se usa como parte del ID del activo de destino (Host Id: {host.hostname} ). También se asigna a target.hostname . |
host.id |
target.asset.asset_id |
Se usa como parte del ID del recurso objetivo (Host Id: {host.id} ). |
host.ip |
target.asset.ip |
Se asigna directamente. |
host.mac |
target.mac |
Se asigna directamente. |
host.name |
target.hostname |
Se asigna directamente. |
host.os.build |
target.platform_patch_level |
Se asigna directamente. |
host.os.kernel |
target.platform_patch_level |
Se agregó a target.platform_patch_level . |
host.os.platform |
target.platform |
Se asigna al valor de enumeración WINDOWS . |
host.os.type |
target.platform |
Se asigna al valor de enumeración WINDOWS . |
host.os.version |
target.platform_version |
Se asigna directamente. |
log.file.path |
target.file.full_path |
Se asigna directamente. |
metadata.event_type |
metadata.event_type |
Se establece en GENERIC_EVENT para los registros de CEF y en SYSTEM_AUDIT_LOG_UNCATEGORIZED para los registros de JSON. |
metadata.log_type |
metadata.log_type |
Se define en CB_EDR . |
metadata.product_log_id |
metadata.product_log_id |
Se asigna desde externalId para los registros de CEF. No se aplica a los registros JSON. |
metadata.product_name |
metadata.product_name |
Se establece en App Control para los registros de CEF y en CB_APP_CONTROL para los registros de JSON. |
metadata.product_version |
metadata.product_version |
Se extrae del mensaje de CEF para los registros de CEF. Se asigna desde agent.version para los registros JSON. |
metadata.vendor_name |
metadata.vendor_name |
Se define en Carbon Black . |
msg |
metadata.description , additional.fields |
Se usa para completar metadata.description y, posiblemente, campos adicionales según la lógica del analizador. |
sproc |
principal.process.command_line |
Se asigna directamente. |
metadata.url_back_to_product |
metadata.url_back_to_product |
Se construye con los campos Bit9Server y HostId para los registros JSON. No se aplica a los registros de CEF. |
security_result.severity |
security_result.severity |
Se define en MEDIUM . |
timestamp |
events.timestamp |
Se asigna directamente para los registros JSON. En el caso de los registros de CEF, la lógica del analizador determina la marca de tiempo según el campo rt del registro sin procesar, si está disponible, o el campo collection_time si no está presente rt . |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.