Recoger registros de Carbon Black App Control
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
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- 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
- Inicia sesión en 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.
Instalar 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 un terminal con privilegios de superusuario 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 ver otras opciones de instalación, consulta esta guía de instalación.
Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- 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. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Busca 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
Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
Sustituye
<customer_id>
por el ID de cliente real.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
- Inicia sesión en la consola de control de aplicaciones de CB con una cuenta de administrador.
- Ve a Administrar > Configuración del sistema > Registro externo.
- 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.
- 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
- 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.