Recoger registros de Vectra Detect
En este documento se explica cómo ingerir registros de Vectra Detect en Google Security Operations mediante Bindplane. El analizador transforma los registros de los formatos SYSLOG, JSON y CEF en un modelo de datos unificado (UDM). Primero, normaliza los datos eliminando los caracteres y campos innecesarios. Después, usa patrones grok para extraer información de diferentes formatos de registro y, por último, asigna los campos extraídos a los atributos de UDM correspondientes.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Una instancia de Google SecOps
- Un host Windows 2016 o posterior, o Linux con
systemd - Si se ejecuta a través de un proxy, asegúrese de que los puertos del cortafuegos estén abiertos según los requisitos del agente BindPlane.
- Acceso con privilegios a la interfaz de usuario de Vectra
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
Instala el agente Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.
Instalación de Windows
- Abre la petición de comando 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 root 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,vio Bloc de notas).
- Busca el archivo
Edita el archivo
config.yamlde la siguiente manera:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/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 log_type: 'VECTRA_DETECT' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog 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.jsona la ruta donde 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-agentPara reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar Vectra Detect para enviar Syslog
- Inicia sesión en la interfaz de usuario de Vectra Detect.
- Ve a Ajustes > Notificaciones.
- Ve a la sección Syslog.
- Haz clic en Editar para añadir o editar la configuración de Syslog.
- Destino: introduce la dirección IP del agente de Bindplane.
- Puerto: introduce el número de puerto del agente de Bindplane.
- Protocolo: selecciona UDP o TCP en función de la configuración real del agente de Bindplane.
- Formato: selecciona JSON.
- Tipos de registro: selecciona los registros que quieras enviar a Google SecOps.
- Marca la casilla Incluir detalles mejorados.
- En la parte derecha, verás tres botones para configurar opciones adicionales:
- Incluir detecciones clasificadas: si esta opción está desactivada, no se enviarán mensajes syslog cuando se creen o actualicen detecciones clasificadas.
- Incluir detecciones en la categoría Información: si esta opción está desactivada, no se enviarán mensajes syslog cuando se creen o actualicen detecciones en la categoría Información.
- Incluir disminuciones de la puntuación de host o de cuenta: si esta opción está desactivada, los mensajes syslog no se enviarán cuando las puntuaciones de amenaza y certeza disminuyan o se mantengan.
- Haz clic en Guardar.
- Haz clic en Probar para probar la configuración.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
| acción | read_only_udm.security_result.action | Valor tomado del campo "action" si [result] es "true" o "failure" en Audit Events. |
| category | read_only_udm.security_result.category_details | Valor tomado del campo "category". |
| certeza | read_only_udm.security_result.confidence | Si [certeza] está entre 0 y 35, asigna el valor "LOW_CONFIDENCE". Si [certainty] está entre 35 y 70, asigna el valor "MEDIUM_CONFIDENCE". Si [certeza] está entre 70 y 100, se asigna el valor "HIGH_CONFIDENCE". |
| dd_bytes_rcvd | read_only_udm.network.received_bytes | Valor tomado del campo "dd_bytes_rcvd". |
| dd_bytes_sent | read_only_udm.network.sent_bytes | Valor tomado del campo "dd_bytes_sent". |
| dd_dst_dns | read_only_udm.target.hostname | Valor tomado del campo "dd_dst_dns". |
| dd_dst_dns | read_only_udm.target.asset.hostname | Valor tomado del campo "dd_dst_dns". |
| dd_dst_ip | read_only_udm.target.asset.ip | Valor tomado del campo "dd_dst_ip". |
| dd_dst_ip | read_only_udm.target.ip | Valor tomado del campo "dd_dst_ip". |
| dd_dst_port | read_only_udm.target.port | Valor tomado del campo "dd_dst_port". |
| detection_id | read_only_udm.metadata.product_log_id | Valor tomado del campo "detection_id". |
| detection_profile.name | read_only_udm.security_result.detection_fields | La clave es "detection_profile name" y el valor se toma del campo "detection_profile.name". |
| detection_profile.scoringDetections | read_only_udm.security_result.detection_fields | La clave es "detectionprofile scoringDetections{index}" y el valor se toma de cada elemento de la matriz "detection_profile.scoringDetections". |
| detection_profile.vname | read_only_udm.security_result.detection_fields | La clave es "detection_profile vname" y el valor se toma del campo "detection_profile.vname". |
| dest_ip | read_only_udm.target.asset.ip | Valor tomado del campo "dest_ip" de los eventos de campañas. |
| dest_ip | read_only_udm.target.ip | Valor tomado del campo "dest_ip" de los eventos de campañas. |
| dest_name | read_only_udm.target.asset.hostname | Valor tomado del campo "dest_name" de los eventos de campañas. |
| dest_name | read_only_udm.target.hostname | Valor tomado del campo "dest_name" de los eventos de campañas. |
| d_type | read_only_udm.additional.fields | La clave es "d_type" y el valor se toma del campo "d_type". |
| d_type_vname | read_only_udm.additional.fields | La clave es "d_type_vname" y el valor se toma del campo "d_type_vname". |
| dvchost | read_only_udm.observer.hostname | Valor tomado del campo "dvchost". |
| dvchost | read_only_udm.principal.asset.hostname | Valor tomado del campo "dvchost" si [host_name] está vacío en los eventos HOST. |
| dvchost | read_only_udm.principal.hostname | Valor tomado del campo "dvchost" si [host_name] está vacío en los eventos HOST. |
| headend_addr | read_only_udm.observer.ip | Valor tomado del campo "headend_addr". |
| headend_addr | read_only_udm.principal.asset.ip | Valor tomado del campo "headend_addr" si [host_ip] está vacío en Detections Events. |
| headend_addr | read_only_udm.principal.ip | Valor tomado del campo "headend_addr" si [host_ip] está vacío en Detections Events. |
| href | read_only_udm.target.url | Valor tomado del campo "href". |
| host_id | read_only_udm.target.asset_id | El valor es "VectraAI.DETECT:{host_id}" en los eventos HOST. |
| host_ip | read_only_udm.principal.asset.ip | Valor tomado del campo "host_ip" de los eventos HOST y Detections. |
| host_ip | read_only_udm.principal.ip | Valor tomado del campo "host_ip" de los eventos HOST y Detections. |
| host_name | read_only_udm.principal.asset.hostname | Valor tomado del campo "host_name". |
| host_name | read_only_udm.principal.hostname | Valor tomado del campo "host_name". |
| msg_data | read_only_udm.security_result.summary | Valor tomado del campo "msg_data" de los eventos de auditoría y de estado. |
| cuadrante | read_only_udm.security_result.priority_details | Valor tomado del campo "quadrant". |
| result | read_only_udm.security_result.action | Si [result] es "true", se asigna el valor "ALLOW". Si [result] es "failure", asigna el valor "BLOCK" en Audit Events. |
| result | read_only_udm.security_result.detection_fields | La clave es "result" y el valor se toma del campo "result" de los eventos de auditoría y de estado. |
| role | read_only_udm.target.user.attribute.roles.name | Valor tomado del campo "role" de los eventos de auditoría. |
| gravedad | read_only_udm.security_result.severity | Si [threat] está entre 0 y 20, asigna el valor "INFORMATIONAL". Si [amenaza] está entre 20 y 40, asigna el valor "BAJO". Si [amenaza] está entre 40 y 60, asigna el valor "MEDIO". Si [amenaza] está entre 60 y 80, asigna el valor "ALTO". Si [amenaza] está entre 80 y 100, se define como "CRÍTICA". |
| gravedad | read_only_udm.security_result.severity_details | Valor tomado del campo "severity". |
| source_ip | read_only_udm.principal.asset.ip | Valor tomado del campo "source_ip" de los eventos de auditoría y de estado. |
| source_ip | read_only_udm.principal.ip | Valor tomado del campo "source_ip" de los eventos de auditoría y de estado. |
| src | read_only_udm.principal.asset.ip | Valor tomado del campo "src" de los eventos CEF. |
| src | read_only_udm.principal.ip | Valor tomado del campo "src" de los eventos CEF. |
| src_ip | read_only_udm.principal.asset.ip | Valor tomado del campo "src_ip" de los eventos de campañas. |
| src_ip | read_only_udm.principal.ip | Valor tomado del campo "src_ip" de los eventos de campañas. |
| src_name | read_only_udm.principal.asset.hostname | Valor tomado del campo "src_name" si [host_name] y [dvchost] están vacíos. |
| src_name | read_only_udm.principal.hostname | Valor tomado del campo "src_name" si [host_name] y [dvchost] están vacíos. |
| amenaza | read_only_udm.security_result.severity | Si [threat] está entre 0 y 20, asigna el valor "INFORMATIONAL". Si [amenaza] está entre 20 y 40, asigna el valor "BAJO". Si [amenaza] está entre 40 y 60, asigna el valor "MEDIO". Si [amenaza] está entre 60 y 80, asigna el valor "ALTO". Si [amenaza] está entre 80 y 100, se define como "CRÍTICA". |
| Evaluado | read_only_udm.additional.fields | La clave es "triaged" y el valor se toma del campo "triaged". |
| tipo | read_only_udm.metadata.product_event_type | Valor tomado del campo "type" de los eventos de salud. |
| usuario | read_only_udm.target.user.userid | Valor tomado del campo "user" de los eventos de auditoría. |
| vectra_timestamp | read_only_udm.metadata.event_timestamp | Valor tomado del campo "vectra_timestamp". |
| version | read_only_udm.metadata.product_version | Valor tomado del campo "version". |
| read_only_udm.metadata.event_type | Se asigna el valor "USER_LOGIN" si [msg_data] contiene "log in" y [user] no está vacío en Audit Events. | |
| read_only_udm.metadata.event_type | Se define como "SCAN_HOST" en Eventos de HOST. | |
| read_only_udm.metadata.event_type | Se asigna el valor "NETWORK_HTTP" si [host_ip] no está vacío, [principal_present] es true y [target_present] es true en Detections Events. | |
| read_only_udm.metadata.event_type | Asigna el valor "STATUS_UPDATE" si [principal_present] es true en Detections Events. | |
| read_only_udm.metadata.event_type | Se asigna el valor "NETWORK_CONNECTION" si [principal_present] y [target_present] son verdaderos en los eventos de detección. | |
| read_only_udm.metadata.event_type | Se define como "NETWORK_CONNECTION" si [event_type] es "GENERIC_EVENT", [principal_present] es true y [target_present] es true. | |
| read_only_udm.metadata.event_type | Se asigna el valor "STATUS_UPDATE" si [event_type] es "GENERIC_EVENT" y [principal_present] es true. | |
| read_only_udm.metadata.log_type | Se ha definido como "VECTRA_DETECT". | |
| read_only_udm.metadata.vendor_name | Selecciona "Vectra.AI". | |
| read_only_udm.metadata.product_name | Selecciona "DETECT". | |
| read_only_udm.network.application_protocol | Se define como "HTTP" si [dd_dst_port] es 80. | |
| read_only_udm.network.application_protocol | Se define como "HTTPS" si [dd_dst_port] es 443. | |
| read_only_udm.network.application_protocol | Se asigna el valor "UNKNOWN_APPLICATION_PROTOCOL" si [principal_present] es true y [target_present] es true en los eventos de detección. | |
| read_only_udm.network.http.method | Se ha asignado el valor "METHOD_OTHER". | |
| read_only_udm.extensions.auth.type | Se define como "AUTHTYPE_UNSPECIFIED" si [msg_data] contiene "log in" en Audit Events. | |
| is_alert | Se asigna el valor "true" si [triaged] es true. |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.