Recopila registros de Control de aplicaciones de Carbon Black
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 los campos de CEF, los asigna a la UDM y establece el tipo de evento en "GENERIC_EVENT". De lo contrario, usa un archivo de inclusión de asignación de 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 se ejecuta 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 Configuración de SIEM > Agentes de recopilación.
- 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 Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instalación de 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 de 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 de instalación adicionales
- Para obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo 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 Obtén el archivo de autenticación de transferencia 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 Services 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 Control de aplicaciones de CB con una cuenta de administrador.
- Ve a Administrador > Configuración del sistema > Registro externo.
- En la sección Registro de eventos externos, haz lo siguiente:
- Habilitar el registro de Syslog: 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ítica
- Eventos de supervisión de integridad de archivos (FIM)
- Eventos de autenticación de usuarios
- Datos de Threat Intelligence
- 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 de 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 asignan directamente. |
EventType |
metadata.product_event_type |
Se asignan 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 asignan de forma explícita, pero pueden contribuir a la descripción según la lógica interna del analizador. |
externalId |
metadata.product_log_id |
Se asignan directamente. |
FileHash |
about.file.sha256 |
Se asignan 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 asignan 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 crear la URL de regreso al producto en metadata.url_back_to_product . |
HostName |
target.hostname |
Se asignan directamente. |
HostIP |
target.ip |
Se asignan directamente. |
Message |
metadata.description |
Se asignan directamente. |
PathName |
about.file.full_path |
Se asignan 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 asignan directamente. |
ProcessPathName |
about.process.command_line |
Se asignan 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 asignan directamente. |
UserName |
target.user.user_display_name |
Se asignan directamente. |
UserSid |
principal.user.userid |
Se asignan 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 asignan a varios campos. |
agent.type |
observer.application |
Se asignan directamente. |
agent.version |
metadata.product_version |
Se asignan directamente para los registros JSON. En el caso de los registros de CEF, se extraen del mensaje de CEF. |
cat |
security_result.category_details |
Se asignan directamente. |
cs1 |
additional.fields (con la clave "rootHash" o alguna otra cs1Label) |
Se agrega como un campo adicional con la clave definida por cs1Label . |
cs1Label |
additional.fields |
Se usa como clave para el campo adicional propagado por cs1 . |
cs2 |
additional.fields (con la clave "installerFilename" o alguna otra cs2Label) |
Se agrega como un campo adicional con la clave definida por cs2Label . |
cs2Label |
additional.fields |
Se usa como clave para el campo adicional propagado por cs2 . |
cs3 |
additional.fields (con la clave "Policy" o alguna otra cs3Label) |
Se agrega como un campo adicional con la clave definida por cs3Label . |
cs3Label |
additional.fields |
Se usa como clave para el campo adicional propagado por cs3 . |
cs5 |
additional.fields (con la clave "ruleName" o alguna otra cs5Label) |
Se agrega como un campo adicional con la clave definida por cs5Label . |
cs5Label |
additional.fields |
Se usa como clave para el campo adicional propagado por cs5 . |
cfp1 |
additional.fields (con la clave "fileTrust" o alguna otra cfp1Label) |
Se agrega como un campo adicional con la clave definida por cfp1Label . |
cfp1Label |
additional.fields |
Se usa como clave para el campo adicional propagado por cfp1 . |
cfp2 |
additional.fields (con la clave "processTrust" o alguna otra cfp2Label) |
Se agrega como un campo adicional con la clave definida por cfp2Label . |
cfp2Label |
additional.fields |
Se usa como clave para el campo adicional propagado por cfp2 . |
deviceProcessName |
about.process.command_line |
Se asignan directamente. |
dhost |
target.hostname |
Se asignan directamente. |
dst |
target.ip |
Se asignan directamente. |
duser |
target.user.user_display_name |
Se asignan directamente. |
dvchost |
about.hostname |
Se asignan directamente. |
eventId |
additional.fields (con la clave "eventId") |
Se agregó como un campo adicional. |
fileHash |
about.file.sha256 |
Se asignan directamente. |
flexString1 |
additional.fields (con la clave "fileThreat" o alguna otra flexString1Label) |
Se agrega como un campo adicional con la clave definida por flexString1Label . |
flexString1Label |
additional.fields |
Se usa como clave para el campo adicional propagado por flexString1 . |
flexString2 |
additional.fields (con la clave "processThreat" o alguna otra flexString2Label) |
Se agrega como un campo adicional con la clave definida por flexString2Label . |
flexString2Label |
additional.fields |
Se usa como clave para el campo adicional propagado por 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 asignan directamente. |
host.hostname |
target.asset.asset_id |
Se usa como parte del ID del activo de destino ("ID de host: {host.hostname}"). También se asigna a target.hostname . |
host.id |
target.asset.asset_id |
Se usa como parte del ID del activo de destino ("ID de host: {host.id}"). |
host.ip |
target.asset.ip |
Se asignan directamente. |
host.mac |
target.mac |
Se asignan directamente. |
host.name |
target.hostname |
Se asignan directamente. |
host.os.build |
target.platform_patch_level |
Se asignan directamente. |
host.os.kernel |
target.platform_patch_level |
Se agrega al 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 asignan directamente. |
log.file.path |
target.file.full_path |
Se asignan 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 JSON. |
metadata.log_type |
metadata.log_type |
Se establece 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 "Control de apps" para los registros de CEF y en "CB_APP_CONTROL" para los registros JSON. |
metadata.product_version |
metadata.product_version |
Se extrae del mensaje CEF para los registros de CEF. Se asigna desde agent.version para los registros JSON. |
metadata.vendor_name |
metadata.vendor_name |
Se estableció en “Negro carbón”. |
msg |
metadata.description , additional.fields |
Se usa para propagar metadata.description y, posiblemente, campos adicionales según la lógica del analizador. |
sproc |
principal.process.command_line |
Se asignan 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 asignan directamente para los registros JSON. En el caso de los registros de CEF, la lógica del analizador determina la marca de tiempo en función del campo rt del registro sin procesar, si está disponible, o collection_time si rt no está presente. |
Cambios
2022-07-01
- Mejora
- Se asignó el campo "agent.type" a "observer.application".
- Se asignó el campo "agent.name" a "observer.user.userid".
- Se asignó el campo "host.name" a "observer.hostname".
- Se asignaron los campos "agent.type" y "agent.name" a "observer.asset_id".
- Se asignó el campo "agent.ephemeral_id" a "observer.labels".
- Se asignó el campo "host.os.platform" a "target.platform".
- Se asignó el campo "host.os.version" a "target.platform_version".
- Se asignó el campo "host.os.kernel" a "target.platform_patch_level".
- Se asignó el campo "cloud.instance.id" a "principal.resource.product_object_id".
- Se asignó el campo "cloud.instance.name" a "principal.resource.name".
- Se asignó el campo "host.mac" a "target.mac".
- Se asignó el campo "host.ip" a "target.asset.ip".
- Se asignó el campo "host.id" a "target.asset.asset_id".
- Se asignó el campo "host.architecture" a "target.asset.hardware".
- Se asignó el campo "message.UserSID" a "principal.user.userid".
- Se asignó el campo "message.ProcessPath" a "about.process.command_line".
- Se asignaron los campos "cloud.machine.type" y "cloud.provider" a "principal.resource.attribute.labels".
- Se agregaron verificaciones condicionales para "message.Bit9Server" y "message.HostId" asignados a "metadata.url_back_to_product".
2022-06-22
- Bug-Fix
- Se asignó hostId a principal.asset_id
- Se asignó la combinación de Bit9Server y HostId a metadata.url_back_to_product.
2022-05-19
- Bug-Fix
- analizó los registros solicitados en el error
- Registros de errores de la API analizados
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.