Recopila registros de Cybereason EDR

Compatible con:

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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. 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

  1. Accede a 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.

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

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el comando siguiente:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Espera a que se complete la instalación.

  4. Ejecute el siguiente comando para verificar la instalación:

    sc query observiq-otel-collector
    

    El estado del servicio debe ser RUNNING.

Instalación en Linux

  1. Abre una terminal con privilegios de administrador o sudo.
  2. Ejecuta el comando siguiente:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Espera a que se complete la instalación.

  4. Ejecute el siguiente comando para verificar la instalación:

    sudo systemctl status observiq-otel-collector
    

    El 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.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edita el archivo de configuración

  1. Reemplaza todo el contenido de config.yaml por 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/cybereason
    
  2. Reemplaza 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:514 para escuchar en todas las interfaces del puerto 514 (requiere acceso de administrador en Linux)
        • 0.0.0.0:1514 para escuchar en un puerto sin privilegios (recomendado para Linux no root)
      • Opciones de tipo de receptor:

        • tcplog para 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
      • customer_id: ID de cliente de Google SecOps

      • endpoint: 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.

Guarda el archivo de configuración

Después de editarlo, guarda el archivo:

  • Linux: Presiona Ctrl+O, luego Enter y, 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:

    1. Ejecuta el comando siguiente:

      sudo systemctl restart observiq-otel-collector
      
    2. Verifica que el servicio esté en ejecución:

      sudo systemctl status observiq-otel-collector
      
    3. Revisa los registros en busca de errores:

      sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar el agente de Bindplane en Windows, haz lo siguiente:

    1. Elige una de las siguientes opciones:

      • Símbolo del sistema o PowerShell como administrador:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Consola de Services:

        1. Presiona Win+R, escribe services.msc y presiona Intro.
        2. Busca observIQ OpenTelemetry Collector.
        3. Haz clic con el botón derecho y selecciona Reiniciar.
    2. Verifica que el servicio esté en ejecución:

      sc query observiq-otel-collector
      
    3. Revisa 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

  1. Accede a la consola de administración de Cybereason.
  2. Comunícate con el equipo de asistencia técnica de Cybereason a través del portal de asistencia de Cybereason.
  3. 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
  4. 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:

  1. Descarga la imagen de Docker de Cybereason CEF Forwarder del equipo de asistencia técnica de Cybereason.
  2. Crea o edita el archivo de configuración en cybereason-forwarders/config/config.json.
  3. Establece la siguiente configuración:

    {
      "host": "<BINDPLANE_AGENT_IP>",
      "port": 514
    }
    
  4. Reemplaza <BINDPLANE_AGENT_IP> por la dirección IP del host del agente de Bindplane.

  5. 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

  1. 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).
  2. 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"
  3. 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.