Recopila registros de Cybereason EDR
En este documento, se explica cómo transferir registros de Cybereason EDR a Google Security Operations con el agente de Bindplane.
Cybereason EDR (detección y respuesta de endpoints) es una plataforma de ciberseguridad que detecta amenazas avanzadas en los endpoints y responde a ellas. Identifica Malops (operaciones maliciosas), es decir, cadenas de ataques correlacionadas que vinculan actividades sospechosas en narrativas de ataques completas, y proporciona a los analistas de seguridad visibilidad del progreso de las amenazas, las máquinas afectadas, los usuarios vulnerados y las conexiones de red.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Windows Server 2016 o versiones posteriores, o host de Linux con
systemd - Conectividad de red entre el agente de Bindplane y el servidor de detección de Cybereason
- Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
- Acceso a la consola de administración de Cybereason con el rol de administrador del sistema
- Versión 20.1 o posterior de la plataforma de Cybereason
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará el agente de BindPlane.
Obtén el ID de cliente de Google SecOps
- Accede a 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.
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el comando siguiente:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietEspera a que se complete la instalación.
Ejecute el siguiente comando para verificar la instalación:
sc query observiq-otel-collectorEl estado del servicio debe ser RUNNING.
Instalación en Linux
- Abre una terminal con privilegios de administrador o sudo.
Ejecuta el comando siguiente:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shEspera a que se complete la instalación.
Ejecute el siguiente comando para verificar la instalación:
sudo systemctl status observiq-otel-collectorEl estado del servicio debe ser active (running).
Recursos de instalación adicionales
Para obtener más opciones de instalación y solución de problemas, consulta la guía de instalación del agente de Bindplane.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
Ubica el archivo de configuración
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edita el archivo de configuración
Reemplaza todo el contenido de
config.yamlpor la siguiente configuración:receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/cybereason: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'your-customer-id' endpoint: malachiteingestion-pa.googleapis.com log_type: CYBEREASON_EDR raw_log_field: body service: pipelines: logs/cybereason_to_chronicle: receivers: - tcplog exporters: - chronicle/cybereasonReemplaza los marcadores de posición que se indican más abajo:
Configuración del receptor:
listen_address: Dirección IP y puerto para escuchar:0.0.0.0:514para escuchar en todas las interfaces del puerto 514 (requiere acceso de administrador en Linux)0.0.0.0:1514para escuchar en un puerto sin privilegios (recomendado para Linux no root)
Opciones de tipo de receptor:
tcplogpara el registro del sistema TCP (obligatorio para el reenvío del registro del sistema de Cybereason)
Configuración del exportador:
creds_file_path: Ruta de acceso completa al archivo de autenticación de la transferencia de datos de Google SecOps:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: ID de cliente de Google SecOpsendpoint: URL del extremo regional:- EE.UU.:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulta Extremos regionales para obtener la lista completa.
- EE.UU.:
Guarda el archivo de configuración
Después de editarlo, guarda el archivo:
- Linux: Presiona
Ctrl+O, luegoEntery, después,Ctrl+X. - Windows: Haz clic en Archivo > Guardar
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, haz lo siguiente:
Ejecuta el comando siguiente:
sudo systemctl restart observiq-otel-collectorVerifica que el servicio esté en ejecución:
sudo systemctl status observiq-otel-collectorRevisa los registros en busca de errores:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar el agente de Bindplane en Windows, haz lo siguiente:
Elige una de las siguientes opciones:
Símbolo del sistema o PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorConsola de Services:
- Presiona
Win+R, escribeservices.mscy presiona Intro. - Busca observIQ OpenTelemetry Collector.
- Haz clic con el botón derecho y selecciona Reiniciar.
- Presiona
Verifica que el servicio esté en ejecución:
sc query observiq-otel-collectorRevisa los registros en busca de errores:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configura el reenvío de syslog del EDR de Cybereason
Cybereason envía eventos de MalOp y de auditoría de usuarios en formato CEF (formato de evento común) a través de syslog. La configuración del reenvío de Syslog requiere una solicitud al equipo de asistencia técnica de Cybereason.
Solicita el reenvío de syslog al equipo de asistencia técnica de Cybereason
- Accede a la consola de administración de Cybereason.
- Comunícate con el equipo de asistencia técnica de Cybereason a través del portal de asistencia de Cybereason.
- Envía una solicitud de configuración de reenvío de syslog con la siguiente información:
- Dirección IP del servidor Syslog: Es la dirección IP del host del agente de Bindplane (por ejemplo,
192.168.1.100). - Puerto del servidor Syslog: Es el puerto que coincide con el agente de BindPlane
listen_address(por ejemplo,514). - Protocolo: TCP (syslog TCP sin encriptar).
- Tipos de registros: Solicita el reenvío de los siguientes tipos de registros:
- Syslog de MalOp: Alertas de seguridad y eventos de Operaciones Maliciosas
- Syslog de auditoría del usuario: Actividad del usuario y acciones administrativas
- Dirección IP del servidor Syslog: Es la dirección IP del host del agente de Bindplane (por ejemplo,
Espera a que el equipo de asistencia técnica de Cybereason confirme la configuración de reenvío de syslog.
Configura reglas de firewall
Asegúrate de que estén vigentes las siguientes reglas de firewall:
Dirección Protocolo Puerto Origen Destino Saliente TCP 514 Servidor de detección de Cybereason Host del agente de BindPlane
Alternativa: Reenvío de CEF de Cybereason
Si el equipo de asistencia técnica de Cybereason no puede configurar el reenvío directo de syslog, puedes usar la herramienta Cybereason CEF Forwarder:
- Descarga la imagen de Docker de Cybereason CEF Forwarder del equipo de asistencia técnica de Cybereason.
- Crea o edita el archivo de configuración en
cybereason-forwarders/config/config.json. Establece la siguiente configuración:
{ "host": "<BINDPLANE_AGENT_IP>", "port": 514 }Reemplaza
<BINDPLANE_AGENT_IP>por la dirección IP del host del agente de Bindplane.Compila y ejecuta el contenedor de Docker:
docker build -t cybereason-cef-forwarder . docker run -d --name cybereason-forwarder cybereason-cef-forwarder
Tipos de eventos de Syslog
Cybereason genera mensajes de syslog de CEF para las siguientes categorías de eventos:
| Categoría del evento | Descripción |
|---|---|
| Se creó MalOp | Se detectó una nueva operación maliciosa |
| Se actualizó la operación maliciosa | Se cambió el estado o los detalles de una MalOp existente |
| Se cerró la operación maliciosa | El analista resolvió o cerró la operación maliciosa |
| Se detectó software malicioso | Se identificó software malicioso en un endpoint |
| Proceso sospechoso | Se detectó actividad sospechosa del proceso |
| Conexión de red | Se identificó una conexión de red sospechosa |
| Acceso del usuario | Eventos de autenticación de usuarios |
| Aislamiento de la máquina | El extremo se aisló de la red o se volvió a conectar a ella |
| Cambios en las políticas | Modificaciones en la política de seguridad |
Verifica el reenvío de Syslog
- Después de que el equipo de asistencia técnica de Cybereason confirme la configuración de syslog, realiza una acción de prueba en la consola de Cybereason (por ejemplo, visualiza una MalOp o aísla una máquina de prueba).
- Verifica los registros del agente de BindPlane para ver los mensajes syslog entrantes:
- Linux:
sudo journalctl -u observiq-otel-collector -f - Windows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Linux:
Verifica que aparezcan mensajes con formato CEF en los registros, por ejemplo:
CEF:0|Cybereason|Cybereason|2.0|MalOp|MalOp Created|8|cs1=MALOP_ID_HERE dvchost=server01.company.com suser=admin@company.com
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
| detectionName_label | additional.fields | Se asigna como un par clave-valor |
| sensorId_label | additional.fields | Se asigna como un par clave-valor |
| estado | metadata.description | Si el valor no está vacío |
| log_description | metadata.description | Respaldo si el estado está vacío |
| (formato CEF) | metadata.event_type | Se establece en GENERIC_EVENT para los registros de CEF. |
| event_type | metadata.event_type | Se establece en PROCESS_OPEN si el valor es "PROCESS_OPEN", NETWORK_CONNECTION si el valor es "NETWORK_CONNECTION" y SCAN_HOST si el valor es "MALWARE". |
| has_principal, has_target | metadata.event_type | Se establece en SCAN_FILE si has_principal y has_target son verdaderos. |
| has_principal | metadata.event_type | Se establece en STATUS_UPDATE si solo has_principal es verdadero. |
| has_user | metadata.event_type | Se establece en USER_UNCATEGORIZED si has_user es verdadero en el contexto de Malop. |
| (predeterminado) | metadata.event_type | De lo contrario, se establece en GENERIC_EVENT. |
| LogType | metadata.product_event_type | Si el valor no está vacío |
| malop_data.simpleValues.elementDisplayName.values.0 | metadata.product_event_type | Respaldo si LogType está vacío |
| tipo | metadata.product_event_type | Resguardo |
| prod_event, prod_event2 | metadata.product_event_type | Se concatenan como prod_event - prod_event2 |
| malop_process.guidString | metadata.product_log_id | Para el tipo de evento PROCESS_OPEN |
| malop_connection.guidString | metadata.product_log_id | Para el tipo de evento NETWORK_CONNECTION |
| guid | metadata.product_log_id | Para los tipos de eventos MALWARE o Malop |
| (estática) | metadata.product_version | Se establece en "2.0" de forma inicial. |
| Sensor.version | metadata.product_version | Reemplaza "2.0" si está presente |
| malop_url | metadata.url_back_to_product | Asignado directamente |
| (estática) | metadata.vendor_name | Se establece en "Cybereason". |
| direction | network.direction | Asignado directamente |
| malop_connection.simpleValues.transportProtocol.values.0 | network.ip_protocol | Asignado directamente |
| malop_connection.simpleValues.receivedBytesCount.values.0 | network.received_bytes | Se convirtió en un número entero sin signo |
| malop_connection.simpleValues.transmittedBytesCount.values.0 | network.sent_bytes | Se convirtió en un número entero sin signo |
| Sensor.fqdn | principal.administrative_domain | Asignado directamente |
| malop_process.elementValues.ownerMachine.elementValues.0.guid | principal.asset.asset_id | Comienza con "Cybereason:". |
| malop_data.elementValues.affectedMachines.elementValues.0.guid | principal.asset.asset_id | Prefijo "Cybereason:", resguardo |
| malop_process.elementValues.ownerMachine.elementValues.0.name | principal.asset.hostname | Asignado directamente |
| malop_data.elementValues.affectedMachines.elementValues.0.name | principal.asset.hostname | Resguardo |
| machineName | principal.asset.hostname | Resguardo |
| host | principal.asset.hostname | Resguardo |
| dvchost | principal.asset.hostname | Resguardo |
| Sensor.fqdn | principal.asset.hostname | Resguardo |
| client.ip | principal.asset.ip | Asignado directamente |
| Sensor.externalIpAddress | principal.asset.ip | Resguardo |
| malop_process.elementValues.ownerMachine.elementValues.0.name | principal.hostname | Asignado directamente |
| malop_data.elementValues.affectedMachines.elementValues.0.name | principal.hostname | Resguardo |
| machineName | principal.hostname | Resguardo |
| host | principal.hostname | Resguardo |
| dvchost | principal.hostname | Resguardo |
| Sensor.fqdn | principal.hostname | Resguardo |
| client.ip | principal.ip | Asignado directamente |
| Sensor.externalIpAddress | principal.ip | Resguardo |
| Sensor.internalIpAddress | principal.nat_ip | Asignado directamente |
| Sensor.privateServerIp | principal.nat_ip | Resguardo |
| Sensor.osType | principal.platform | Se establece en WINDOWS si el valor es "WINDOWS", en LINUX si es "LINUX" y en MAC si es "MAC". |
| Sensor.osVersionType | principal.platform_version | Asignado directamente |
| malop_connection.simpleValues.localPort.values.0 | principal.port | Se convirtió a número entero |
| malop_process.simpleValues.commandLine.values.0 | principal.process.command_line | Asignado directamente |
| malwareDataModel.filePath | principal.process.command_line | Resguardo |
| malop_process.simpleValues.calculatedName.values.0 | principal.process.file.full_path | Asignado directamente |
| nombre | principal.process.file.full_path | Resguardo |
| malop_process.elementValues.parentProcess.elementValues.0.guid | principal.process.parent_process.product_specific_process_id | Comienza con "Cybereason:". |
| malop_process.elementValues.self.elementValues.0.guid | principal.process.pid | Asignado directamente |
| malop_process.elementValues.self.elementValues.0.guid | principal.process.product_specific_process_id | Comienza con "Cybereason:". |
| malop_connection.elementValues.ownerProcess.elementValues.0.guid | principal.process.product_specific_process_id | Prefijo "Cybereason:", resguardo |
| companyName | principal.user.company_name | Asignado directamente |
| malop_process.elementValues.calculatedUser.elementValues.0.name | principal.user.user_display_name | Asignado directamente |
| malop_data.elementValues.affectedUsers.elementValues.0.name | principal.user.user_display_name | Resguardo |
| malop_connection.elementValues.ownerProcess.user.elementValues.0.name | principal.user.user_display_name | Resguardo |
| malop_process.elementValues.calculatedUser.elementValues.0.guid | principal.user.userid | Asignado directamente |
| malop_data.elementValues.affectedUsers.elementValues.0.guid | principal.user.userid | Resguardo |
| malop_connection.elementValues.ownerProcess.user.elementValues.0.guid | principal.user.userid | Resguardo |
| security_result_action | security_result.action | Se establece en ALLOW, BLOCK o QUARANTINE según el estado. |
| is_alert | security_result.alert_state | Se establece en ALERTING si el valor es verdadero. |
| sr_category | security_result.category | Se establece en SOFTWARE_MALICIOUS o NETWORK_MALICIOUS. |
| query_details | security_result.detection_fields | Se asigna como un par clave-valor |
| affected_machine_count | security_result.detection_fields | Se asigna como un par clave-valor |
| link_to_malop | security_result.detection_fields | Se asigna como un par clave-valor |
| context_label | security_result.detection_fields | Se asigna como un par clave-valor |
| old_state_label | security_result.detection_fields | Se asigna como un par clave-valor |
| new_state_label | security_result.detection_fields | Se asigna como un par clave-valor |
| investigation_label | security_result.detection_fields | Se asigna como un par clave-valor |
| event_id_label | security_result.detection_fields | Se asigna como un par clave-valor |
| malop_activity_type_label | security_result.detection_fields | Se asigna como un par clave-valor |
| malop_suspect_label | security_result.detection_fields | Se asigna como un par clave-valor |
| malop_key_suspicion_label | security_result.detection_fields | Se asigna como un par clave-valor |
| device_custom_date_label | security_result.detection_fields | Se asigna como un par clave-valor |
| device_custom_date2_label | security_result.detection_fields | Se asigna como un par clave-valor |
| device_custom_date3_label | security_result.detection_fields | Se asigna como un par clave-valor |
| guid_label | security_result.detection_fields | Se asigna como un par clave-valor |
| displayName_label | security_result.detection_fields | Se asigna como un par clave-valor |
| pylumId_label | security_result.detection_fields | Se asigna como un par clave-valor |
| connected_label | security_result.detection_fields | Se asigna como un par clave-valor |
| isolated_label | security_result.detection_fields | Se asigna como un par clave-valor |
| osType_label | security_result.detection_fields | Se asigna como un par clave-valor |
| admin_label | security_result.detection_fields | Se asigna como un par clave-valor |
| domainUser_label | security_result.detection_fields | Se asigna como un par clave-valor |
| localSystem_label | security_result.detection_fields | Se asigna como un par clave-valor |
| descripción | security_result.description | Se concatena con decision_feature, malop_status, privileges, passwordAgeDays, elementType, status, score, detectionValue, detectionValueType y detectionEngine. |
| decision_feature | security_result.description | Se concatenan en la descripción |
| malop_status | security_result.description | Se concatenan en la descripción |
| privilegios | security_result.description | Se concatenan en la descripción |
| passwordAgeDays | security_result.description | Se concatenan en la descripción |
| elementType | security_result.description | Se concatenan en la descripción |
| estado | security_result.description | Se concatenan en la descripción |
| puntuación | security_result.description | Se concatenan en la descripción |
| detectionValue | security_result.description | Se concatenan en la descripción |
| detectionValueType | security_result.description | Se concatenan en la descripción |
| detectionEngine | security_result.description | Se concatenan en la descripción |
| malop_data.malopPriority | security_result.priority | Asignado directamente |
| malop_severity | security_result.severity | Asignado directamente |
| security_severity | security_result.severity | Se establece en CRÍTICO si el valor es > 8, ALTO si es > 6, MEDIO si es > 4 y BAJO si es > 1. |
| gravedad, | security_result.severity | Se establece en INFORMATIONAL si es "Info", ERROR si es "Error" o "High", MEDIUM si es "Warning" o "Medium", CRITICAL si es "Critical", LOW si es "Low" y UNKNOWN en cualquier otro caso. |
| descripción | security_result.summary | Asignado directamente |
| tipo | security_result.summary | Resguardo |
| malopId | security_result.threat_id | Asignado directamente |
| malop_data.simpleValues.detectionType.values.0 | security_result.threat_name | Asignado directamente |
| virusName | security_result.threat_name | Resguardo |
| estado | security_result.threat_status | Se establece en ACTIVE si el valor es "Activo"; de lo contrario, se establece en FALSE_POSITIVE. |
| malop_url | security_result.url_back_to_product | Asignado directamente |
| machineName | target.asset.hostname | Asignado directamente |
| affectedMachine | target.asset.hostname | Resguardo |
| dvchost | target.asset.hostname | Resguardo |
| Sensor.serverName | target.asset.hostname | Resguardo |
| server.ip | target.asset.ip | Asignado directamente |
| Sensor.serverIp | target.asset.ip | Resguardo |
| malop_process.simpleValues.calculatedName.values.0 | target.file.full_path | Asignado directamente |
| malop_connection.elementValues.ownerProcess.elementValues.0.name | target.file.full_path | Resguardo |
| nombre | target.file.full_path | Resguardo |
| malwareDataModel_filePath | target.file.full_path | Resguardo |
| malop_process.simpleValues.imageFile.md5String.values.0 | target.file.md5 | Asignado directamente |
| nombre | target.file.names | Asignado directamente |
| machineName | target.hostname | Asignado directamente |
| affectedMachine | target.hostname | Resguardo |
| dvchost | target.hostname | Resguardo |
| Sensor.serverName | target.hostname | Resguardo |
| server.ip | target.ip | Asignado directamente |
| Sensor.serverIp | target.ip | Resguardo |
| malop_connection.simpleValues.remoteAddressCountryName.values.0 | target.location.country_or_region | Asignado directamente |
| Sensor.privateServerIp | target.nat_ip | Asignado directamente |
| malop_connection.simpleValues.remotePort.values.0 | target.port | Se convirtió a número entero |
| malop_process.simpleValues.calculatedName.values.0 | target.process.file.full_path | Asignado directamente |
| malop_process.elementValues.self.elementValues.0.guid | target.process.pid | Asignado directamente |
| malop_url | target.url | Asignado directamente |
| (estática) | metadata.product_name | Se establece en "Cybereason". |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.