Recoger registros de Cylance PROTECT
En este documento se explica cómo ingerir registros de Cylance PROTECT en Google Security Operations mediante Bindplane. El código del analizador de Logstash transforma los mensajes syslog de Cylance PROTECT en un modelo de datos unificado (UDM). Extrae campos del mensaje syslog, los normaliza, los asigna a campos UDM y enriquece los datos con información sobre la gravedad y la categoría de las amenazas.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps
- Windows 2016 o versiones posteriores, o un host Linux con
systemd
- Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
- Acceso privilegiado a Cylance PROTECT
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 ventanas
- 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 más opciones de instalación, consulta la 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: 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 ingestion_labels: log_type: 'CYLANCE_PROTECT' raw_log_field: body 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.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 Syslog en Cylance Protect
- Inicia sesión en la consola de administración de Cylance.
- Ve a Configuración > Aplicación.
- Seleccione la casilla Syslog/SIEM.
- Selecciona todos los eventos.
- Proporcione los siguientes detalles de configuración:
- SIEM: selecciona Syslog.
- Protocolo: selecciona UDP.
- Selecciona la casilla Permitir mensajes de más de 2 KB.
- IP/Dominio: introduce la dirección IP del agente de BindPlane.
- Puerto: introduce el número de puerto del agente Bindplane (por ejemplo,
514
para UDP). - Instalación: selecciona el tipo de registro de aplicaciones.
- Haz clic en Test Connection (Probar conexión).
- Haz clic en Guardar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
Versión del agente | metadata.product_version | Valor extraído de Agent Version: <value> |
Puntuación de Cylance | security_result.severity_details | Valor extraído de Cylance Score: <value> |
security_result.severity | Se asigna según la siguiente lógica: - ALTA: si la puntuación de Cylance es > 67 - MEDIA: si la puntuación de Cylance es > 33 - BAJA: si la puntuación de Cylance es <= 33 |
|
Detectado por | security_result.detection_fields.value | Valor extraído de Detected By: <value> |
ID de dispositivo | principal.asset_id | Valor extraído de Device Id: <value> y con el prefijo Cylance: |
IDs de dispositivo | principal.asset_id | Valor extraído de Device Ids: <value> y antepuesto con Cylance: , que se usa cuando no está presente Device Id |
Nombre del dispositivo | principal.hostname | Valor extraído de Device Name: <value> |
Nombre del dispositivo | target.hostname | Valor extraído de Device Name: <value> , usado para tipos de eventos específicos, como ScriptControl |
Nombres de los dispositivos | principal.hostname | Valor extraído de Device Names: <value> , que se usa cuando no está presente Device Name |
Descripción | security_result.summary | Valor extraído de Description: <value> , usado para tipos de eventos específicos, como OpticsCaeNetworkEvent |
IP de destino | target.ip | Valor extraído de Destination IP: <value> |
Puerto de destino | target.port | Valor extraído de Destination Port: <value> |
ID de evento | metadata.product_log_id | Valor extraído de Event Id: <value> |
Nombre del evento | Se usa para determinar subtipos de eventos específicos y aplicar la lógica correspondiente. | |
Tipo de evento | metadata.product_event_type | Valor extraído de Event Type: <value> |
metadata.event_type | Se asigna en función de los campos Event Type y Event Name . El valor predeterminado es GENERIC_EVENT . |
|
Nombre del archivo | principal.process.file.full_path | Valor extraído de File Name: <value> y combinado con Path: <value> para formar la ruta completa. |
Ruta del archivo | target.file.full_path | Valor extraído de File Path: <value> |
Instigating Process ImageFileSha256 | principal.process.file.sha256 | Valor extraído de Instigating Process ImageFileSha256: <value> |
Nombre del proceso instigador | principal.process.file.full_path | Valor extraído de Instigating Process Name: <value> |
Propietario del proceso de inicio | principal.user.userid | Valor extraído de Instigating Process Owner: <value> . El nombre de usuario se extrae después de dividirlo por // , si está presente. |
Propietario del proceso de inicio | principal.administrative_domain | Nombre de dominio extraído de Instigating Process Owner: <value> dividiendo por // si está presente |
Dirección IP | principal.ip | Direcciones IP extraídas de IP Address: (<value>) |
Intérprete | security_result.rule_labels.value | Valor extraído de Interpreter: <value> |
Versión del intérprete | security_result.rule_labels.value | Valor extraído de Interpreter Version: <value> |
Usuarios conectados | about.user.userid | Nombres de usuario extraídos de Logged On Users: (<value>) |
Dirección MAC | principal.mac | Dirección MAC extraída de MAC Address: (<value>) y formateada con dos puntos |
MD5 | principal.process.file.md5 | Valor extraído de MD5: <value> |
Mensaje | Se usa para extraer datos de tipos de eventos específicos, como AuditLog . |
|
SO | principal.platform | Se asigna a WINDOWS si el campo OS contiene Windows |
Ruta | principal.process.file.full_path | Valor extraído de Path: <value> y combinado con File Name: <value> para formar la ruta completa. |
Nombre de la política | security_result.rule_name | Valor extraído de Policy Name: <value> |
ID de proceso | principal.process.pid | Valor extraído de Process ID: <value> |
Nombre del proceso | principal.process.file.full_path | Valor extraído de Process Name: <value> |
Dirección resuelta | network.dns.answers.name | Valor extraído de Resolved Address: <value> |
SHA256 | principal.process.file.sha256 | Valor extraído de SHA256: <value> |
IP de origen | principal.ip | Valor extraído de Source IP: <value> , usado para tipos de eventos específicos. |
Estado | security_result.action | Se asigna a acciones de UDM específicas en función del valor: - Quarantined : QUARANTINE - Cleared : ALLOW_WITH_MODIFICATION |
Nombre del dominio de destino | network.dns.questions.name | Valor extraído de Target Domain Name: <value> |
Target Process ImageFileSha256 | target.process.file.sha256 | Valor extraído de Target Process ImageFileSha256: <value> |
Nombre del proceso de destino | target.process.file.full_path | Valor extraído de Target Process Name: <value> |
Propietario del proceso de destino | target.user.userid | Valor extraído de Target Process Owner: <value> . El nombre de usuario se extrae después de dividirlo por // , si está presente. |
Propietario del proceso de destino | target.administrative_domain | Nombre de dominio extraído de Target Process Owner: <value> dividiendo por // si está presente |
Ruta de clave de registro de destino | target.registry.registry_key | Valor extraído de Target Registry KeyPath: <value> |
Clasificación de amenazas | security_result.threat_name | Valor extraído de Threat Classification: <value> |
Usuario | principal.user.userid | Nombre de usuario extraído de User: <value> , si está presente. Se usa cuando User Name no está presente. |
Usuario | principal.user.email_addresses | Dirección de correo extraída de User: <value> , si está presente. Se usa cuando User Name no está presente. |
Nombre de usuario | principal.user.userid | Valor extraído de User Name: <value> |
Tipo de infracción | security_result.summary | Valor extraído de Violation Type: <value> y con el prefijo ExploitAttempt: |
Tipo de infracción | security_result.threat_name | Valor extraído de Violation Type: <value> |
Nombres de zonas | security_result.description | Valor extraído de Zone Names: (<value>) y con el prefijo Zone_Names: |
metadata.vendor_name | Codificado de forma rígida en Cylance |
|
metadata.product_name | Valor extraído del mensaje de registro, que puede ser PROTECT o OPTICS . |
|
metadata.log_type | Codificado de forma rígida en CYLANCE_PROTECT |
|
network.ip_protocol | Codificado como TCP para eventos de OpticsCaeNetworkEvent |
|
network.application_protocol | Codificado como DNS para eventos de OpticsCaeDnsEvent |
|
security_result.rule_labels.key | Su valor debe ser Interpreter o Interpreter Version en función del campo disponible. |
|
security_result.detection_fields.key | Codificado de forma rígida en Detected By |
|
security_result.category | Los valores posibles, asignados en función del tipo de evento, son los siguientes: - SOFTWARE_SUSPICIOUS - AUTH_VIOLOATION - POLICY_VIOLATION - NETWORK_SUSPICIOUS - EXPLOIT - SOFTWARE_MALICIOUS. |
|
security_result.action | Se asigna en función del tipo de evento y de las condiciones específicas. Los valores posibles son: - ALLOW - BLOCK - QUARANTINE - ALLOW_WITH_MODIFICATION |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.