Recopila registros de Control de aplicaciones de Carbon Black

Compatible con:

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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. 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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. 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

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. 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

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. 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).
  2. 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
    
    
  3. Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Reemplaza <customer_id> por el ID de cliente real.

  5. 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

  1. Accede a la consola de Control de aplicaciones de CB con una cuenta de administrador.
  2. Ve a Administrador > Configuración del sistema > Registro externo.
  3. 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.
  4. 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
  5. 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.