Recoger registros de Carbon Black App Control

Disponible en:

En este documento se explica cómo recoger los registros de Carbon Black App Control. El analizador admite los formatos CEF y JSON. Primero intenta analizar la entrada como JSON. Si no lo consigue, trata la entrada como CEF, realiza sustituciones de texto, extrae los campos de CEF, los asigna a UDM y define el tipo de evento como GENERIC_EVENT. De lo contrario, usa un archivo de inclusión de asignación de UDM específico de JSON.

Antes de empezar

  • Asegúrate de que tienes una instancia de Google Security Operations.
  • Asegúrate de usar Windows 2016 o una versión posterior, o un host Linux con systemd.
  • Si se ejecuta a través de un proxy, asegúrate de que los puertos del cortafuegos estén abiertos.
  • Servidor de Carbon Black App Control (CB Protection) (se recomienda la versión 8.x o una posterior).
  • Asegúrate de que tienes acceso privilegiado a Carbon Black App Control.

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en 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.

Instalar 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 un terminal con privilegios de superusuario 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

Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    1. Busca el archivo config.yaml. Normalmente, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    2. 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. Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.

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

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión 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 Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar el control de aplicaciones de CB para enviar registros Syslog

  1. Inicia sesión en la consola de control de aplicaciones de CB con una cuenta de administrador.
  2. Ve a Administrar > Configuración del sistema > Registro externo.
  3. En la sección Registro de eventos externos:
    • Habilitar registro de Syslog: marca la casilla Syslog habilitado.
    • Dirección del servidor: <Bindplane Server IP>.
    • Puerto: <Bindplane Server PORT>.
    • Protocolo: selecciona TCP.
    • Formato Syslog: selecciona JSON.
  4. En Opciones de registro de eventos, seleccione los tipos de registros que quiera enviar:
    • Infracciones de las políticas
    • Eventos de monitorización de integridad de archivos (FIM)
    • Eventos de autenticación de usuarios
    • Datos de inteligencia frente a amenazas
  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 recurso en el formato PRODUCT_SPECIFIC_ID:{ABId}-{Bit9Server}.
Bit9Server principal.asset.asset_id Se usa como parte del ID de recurso de la entidad, combinado con ABId. También se usa para crear el campo metadata.url_back_to_product.
CommandLine about.process.command_line Asignación directa.
EventType metadata.product_event_type Asignado con el EventTypeId correspondiente entre corchetes (por ejemplo, [5] - Discovery).
EventTypeId metadata.product_event_type Se usa con EventType para rellenar metadata.product_event_type.
EventSubType metadata.description Se añade al campo metadata.description.
EventSubTypeId metadata.description No se asigna explícitamente, pero puede contribuir a la descripción en función de la lógica interna del analizador.
externalId metadata.product_log_id Asignación directa.
FileHash about.file.sha256 Asignación directa.
FileName additional.fields (con la clave FileName) Se ha añadido como campo adicional. También se usa como parte de la información de los archivos en metadata.description para algunos eventos.
FilePath about.file.full_path Asignación directa.
FileThreat additional.fields (con la clave fileThreat) Se ha añadido como campo adicional.
FileTrust additional.fields (con la clave fileTrust) Se ha añadido como campo adicional.
HostId principal.asset.asset_id Se usa para crear la URL que lleva al producto en metadata.url_back_to_product.
HostName target.hostname Asignación directa.
HostIP target.ip Asignación directa.
Message metadata.description Asignación directa.
PathName about.file.full_path Asignación directa.
Platform target.platform Se asigna al valor de enumeración WINDOWS.
Policy additional.fields (con la clave Policy) Se ha añadido como campo adicional.
PolicyId additional.fields (con la clave PolicyId) Se ha añadido como campo adicional.
ProcessKey additional.fields (con la clave ProcessKey) Se ha añadido como campo adicional.
ProcessPath about.process.command_line Asignación directa.
ProcessPathName about.process.command_line Asignación directa.
ProcessThreat additional.fields (con la clave ProcessThreat) Se ha añadido como campo adicional.
ProcessTrust additional.fields (con la clave ProcessTrust) Se ha añadido como campo adicional.
RuleName additional.fields (con la clave ruleName) Se ha añadido como campo adicional.
Timestamp metadata.event_timestamp Asignación directa.
UserName target.user.user_display_name Asignación directa.
UserSid principal.user.userid Asignación directa.
agent.ephemeral_id observer.labels (con la clave ephemeral_id) Se ha añadido como etiqueta de observador.
agent.name principal.hostname, observer.hostname, observer.user.userid Asignado a varios campos.
agent.type observer.application Asignación directa.
agent.version metadata.product_version Se asigna directamente a los registros JSON. Registros de CEF extraídos del mensaje de CEF.
cat security_result.category_details Asignación directa.
cs1 additional.fields (con la clave rootHash u otra cs1Label) Se añade como un campo adicional con la clave definida por cs1Label.
cs1Label additional.fields Se usa como clave del campo adicional rellenado por cs1.
cs2 additional.fields (con la clave installerFilename u otra cs2Label) Se añade como un campo adicional con la clave definida por cs2Label.
cs2Label additional.fields Se usa como clave del campo adicional rellenado por cs2.
cs3 additional.fields (con la clave Policy u otra cs3Label) Se añade como un campo adicional con la clave definida por cs3Label.
cs3Label additional.fields Se usa como clave del campo adicional rellenado por cs3.
cs5 additional.fields (con la clave ruleName u otra etiqueta cs5Label) Se añade como un campo adicional con la clave definida por cs5Label.
cs5Label additional.fields Se usa como clave del campo adicional rellenado por cs5.
cfp1 additional.fields (con la clave fileTrust u otra cfp1Label) Se añade como un campo adicional con la clave definida por cfp1Label.
cfp1Label additional.fields Se usa como clave del campo adicional rellenado por cfp1.
cfp2 additional.fields (con la clave processTrust u otra cfp2Label) Se añade como un campo adicional con la clave definida por cfp2Label.
cfp2Label additional.fields Se usa como clave del campo adicional rellenado por cfp2.
deviceProcessName about.process.command_line Asignación directa.
dhost target.hostname Asignación directa.
dst target.ip Asignación directa.
duser target.user.user_display_name Asignación directa.
dvchost about.hostname Asignación directa.
eventId additional.fields (con la clave eventId) Se ha añadido como campo adicional.
fileHash about.file.sha256 Asignación directa.
flexString1 additional.fields (con la clave fileThreat u otra flexString1Label) Se añade como un campo adicional con la clave definida por flexString1Label.
flexString1Label additional.fields Se usa como clave del campo adicional rellenado por flexString1.
flexString2 additional.fields (con la clave processThreat u otro flexString2Label) Se añade como un campo adicional con la clave definida por flexString2Label.
flexString2Label additional.fields Se usa como clave del campo adicional rellenado por flexString2.
fname additional.fields (con la clave fname) Se ha añadido como campo adicional. También se usa como parte de la información de los archivos en metadata.description para algunos eventos.
host.architecture target.asset.hardware.cpu_platform Asignación directa.
host.hostname target.asset.asset_id Se usa como parte del ID de recurso 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 de recurso de destino (Host Id: {host.id}).
host.ip target.asset.ip Asignación directa.
host.mac target.mac Asignación directa.
host.name target.hostname Asignación directa.
host.os.build target.platform_patch_level Asignación directa.
host.os.kernel target.platform_patch_level Se ha añadido 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 Asignación directa.
log.file.path target.file.full_path Asignación directa.
metadata.event_type metadata.event_type Asigna el valor GENERIC_EVENT para los registros CEF y SYSTEM_AUDIT_LOG_UNCATEGORIZED para los registros JSON.
metadata.log_type metadata.log_type Su valor debe ser CB_EDR.
metadata.product_log_id metadata.product_log_id Asignado desde externalId para registros CEF. No se aplica a los registros JSON.
metadata.product_name metadata.product_name Asigna el valor App Control para los registros CEF y CB_APP_CONTROL para los registros JSON.
metadata.product_version metadata.product_version Extraído del mensaje de CEF para los registros de CEF. Asignado desde agent.version para registros JSON.
metadata.vendor_name metadata.vendor_name Su valor debe ser Carbon Black.
msg metadata.description, additional.fields Se usa para rellenar metadata.description y, posiblemente, otros campos en función de la lógica del analizador.
sproc principal.process.command_line Asignación directa.
metadata.url_back_to_product metadata.url_back_to_product Se construye con los campos Bit9Server y HostId de los registros JSON. No se aplica a los registros CEF.
security_result.severity security_result.severity Su valor debe ser MEDIUM.
timestamp events.timestamp Se asigna directamente a los registros JSON. En el caso de los registros 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 del campo collection_time si no está presente rt.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.