Coletar registros do Cybereason EDR

Compatível com:

Este documento explica como ingerir registros do Cybereason EDR no Google Security Operations usando o agente Bindplane.

O EDR (detecção e resposta de endpoints) da Cybereason é uma plataforma de cibersegurança que detecta e responde a ameaças avançadas em endpoints. Ele identifica Malops (operações maliciosas), que são cadeias de ataques correlacionadas que unem atividades suspeitas em narrativas completas de ataques, e oferece aos analistas de segurança visibilidade da progressão de ameaças, máquinas afetadas, usuários comprometidos e conexões de rede.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Windows Server 2016 ou mais recente ou host Linux com systemd
  • Conectividade de rede entre o agente do Bindplane e o servidor de detecção do Cybereason
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
  • Acesso ao console de gerenciamento do Cybereason com a função de administrador do sistema
  • Plataforma Cybereason versão 20.1 ou mais recente

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão. Salve o arquivo com segurança no sistema em que o agente do Bindplane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.

Instalação do Windows

  1. Abra o Prompt de comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sc query observiq-otel-collector
    

    O status do serviço deve ser EM EXECUÇÃO.

Instalação do Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. Execute este comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sudo systemctl status observiq-otel-collector
    

    O status do serviço precisa ser active (running).

Outros recursos de instalação

Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.

Configurar o agente do Bindplane para ingerir o syslog e enviá-lo ao Google SecOps

Localizar o arquivo de configuração

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

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

Editar o arquivo de configuração

  1. Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    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. Substitua os seguintes marcadores de posição:

    • Configuração do receptor:

      • listen_address: endereço IP e porta a serem detectados:

        • 0.0.0.0:514 para detectar em todas as interfaces na porta 514 (requer root no Linux)
        • 0.0.0.0:1514 para detectar uma porta sem privilégios (recomendado para Linux não root)
      • Opções de tipo de receptor:

        • tcplog para syslog TCP (necessário para o encaminhamento de syslog do Cybereason)
    • Configuração do exportador:

      • creds_file_path: caminho completo para o arquivo de autenticação de ingestão do Google SecOps:

        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: ID do cliente do Google SecOps

      • endpoint: URL do endpoint regional:

        • EUA: malachiteingestion-pa.googleapis.com
        • Europa: europe-malachiteingestion-pa.googleapis.com
        • Ásia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Consulte a lista completa em Endpoints regionais.

Salve o arquivo de configuração.

Depois de editar, salve o arquivo:

  • Linux: pressione Ctrl+O, Enter e Ctrl+X.
  • Windows: clique em Arquivo > Salvar.

Reinicie o agente do Bindplane para aplicar as mudanças

  • Para reiniciar o agente do Bindplane no Linux:

    1. Execute este comando:

      sudo systemctl restart observiq-otel-collector
      
    2. Verifique se o serviço está sendo executado:

      sudo systemctl status observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      sudo journalctl -u observiq-otel-collector -f
      
  • Para reiniciar o agente do Bindplane em Windows:

    1. Escolha uma das seguintes opções:

      • Prompt de comando ou PowerShell como administrador:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Console de serviços:

        1. Pressione Win+R, digite services.msc e pressione Enter.
        2. Localize o Coletor do OpenTelemetry da observIQ.
        3. Clique com o botão direito do mouse e selecione Reiniciar.
    2. Verifique se o serviço está sendo executado:

      sc query observiq-otel-collector
      
    3. Verifique se há erros nos registros:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Configurar o encaminhamento de syslog do Cybereason EDR

A Cybereason envia eventos de MalOp e de auditoria do usuário em CEF (Common Event Format) via syslog. A configuração de encaminhamento de syslog requer uma solicitação ao suporte técnico da Cybereason.

Solicitar o encaminhamento de syslog do suporte técnico da Cybereason

  1. Faça login no console de gerenciamento do Cybereason.
  2. Entre em contato com o suporte técnico da Cybereason pelo portal de suporte da empresa.
  3. Envie uma solicitação de configuração de encaminhamento de syslog com as seguintes informações:
    • Endereço IP do servidor Syslog: o endereço IP do host do agente Bindplane (por exemplo, 192.168.1.100).
    • Porta do servidor Syslog: a porta que corresponde ao agente do Bindplane listen_address (por exemplo, 514).
    • Protocolo: TCP (syslog TCP não criptografado).
    • Tipos de registro: solicite o encaminhamento dos seguintes tipos de registro:
    • Syslog de MalOp: alertas de segurança e eventos de operações maliciosas
    • Syslog de auditoria do usuário: atividade do usuário e ações administrativas
  4. Aguarde o suporte técnico da Cybereason confirmar a configuração de encaminhamento de syslog.

Configurar regras de firewall

  • Verifique se as seguintes regras de firewall estão em vigor:

    Direção Protocolo Porta Origem Destino
    Saída TCP 514 Servidor de detecção da Cybereason Host do agente do Bindplane

Alternativa: encaminhador CEF da Cybereason

Se o suporte técnico da Cybereason não conseguir configurar o encaminhamento direto de syslog, use a ferramenta Cybereason CEF Forwarder:

  1. Faça o download da imagem do Docker do encaminhador CEF da Cybereason no suporte técnico da empresa.
  2. Crie ou edite o arquivo de configuração em cybereason-forwarders/config/config.json.
  3. Defina as configurações a seguir:

    {
      "host": "<BINDPLANE_AGENT_IP>",
      "port": 514
    }
    
  4. Substitua <BINDPLANE_AGENT_IP> pelo endereço IP do host do agente do Bindplane.

  5. Crie e execute o contêiner do Docker:

    docker build -t cybereason-cef-forwarder .
    docker run -d --name cybereason-forwarder cybereason-cef-forwarder
    

Tipos de eventos do Syslog

O Cybereason gera mensagens syslog CEF para as seguintes categorias de eventos:

Categoria do evento Descrição
MalOp criada Nova operação maliciosa detectada
MalOp atualizado O status ou os detalhes de uma MalOp mudaram
MalOp fechada MalOp resolvida ou fechada por um analista
Malware detectado Malware identificado em um endpoint
Processo suspeito Atividade de processo suspeita detectada
Conexão de rede Conexão de rede suspeita identificada
Login do usuário Eventos de autenticação do usuário
Isolamento de máquinas Endpoint isolado ou reconectado à rede
Mudanças na política Modificações na política de segurança

Verificar o encaminhamento de syslog

  1. Depois que o suporte técnico da Cybereason confirmar a configuração do syslog, execute uma ação de teste no console da Cybereason. Por exemplo, veja uma MalOp ou isole uma máquina de teste.
  2. Verifique os registros do agente do Bindplane para mensagens syslog recebidas:
    • Linux: sudo journalctl -u observiq-otel-collector -f
    • Windows: type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
  3. Verifique se as mensagens formatadas em CEF aparecem nos registros. Por exemplo:

    CEF:0|Cybereason|Cybereason|2.0|MalOp|MalOp Created|8|cs1=MALOP_ID_HERE dvchost=server01.company.com suser=admin@company.com
    

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
detectionName_label additional.fields Mapeado como par de chave-valor
sensorId_label additional.fields Mapeado como par de chave-valor
status metadata.description Se o valor não estiver vazio
log_description metadata.description Substituição se o status estiver vazio
(formato CEF) metadata.event_type Definido como GENERIC_EVENT para registros CEF.
event_type metadata.event_type Definido como PROCESS_OPEN se o valor for "PROCESS_OPEN", NETWORK_CONNECTION se o valor for "NETWORK_CONNECTION", SCAN_HOST se o valor for "MALWARE"
has_principal, has_target metadata.event_type Definido como SCAN_FILE se has_principal e has_target forem verdadeiros
has_principal metadata.event_type Definido como STATUS_UPDATE se apenas "has_principal" for verdadeiro
has_user metadata.event_type Definido como USER_UNCATEGORIZED se has_user for verdadeiro no contexto de malop
(padrão) metadata.event_type Caso contrário, defina como GENERIC_EVENT.
LogType metadata.product_event_type Se o valor não estiver vazio
malop_data.simpleValues.elementDisplayName.values.0 metadata.product_event_type Substituição se LogType estiver vazio
tipo metadata.product_event_type Fallback
prod_event, prod_event2 metadata.product_event_type Concatenado como prod_event - prod_event2
malop_process.guidString metadata.product_log_id Para o tipo de evento PROCESS_OPEN
malop_connection.guidString metadata.product_log_id Para o tipo de evento NETWORK_CONNECTION
guid metadata.product_log_id Para tipos de evento MALWARE ou Malop
(estático) metadata.product_version Definido como "2.0" inicialmente
Sensor.version metadata.product_version Substitui "2.0" se presente
malop_url metadata.url_back_to_product Mapeado diretamente
(estático) metadata.vendor_name Definido como "Cybereason"
direção network.direction Mapeado diretamente
malop_connection.simpleValues.transportProtocol.values.0 network.ip_protocol Mapeado diretamente
malop_connection.simpleValues.receivedBytesCount.values.0 network.received_bytes Convertido para número inteiro sem sinal
malop_connection.simpleValues.transmittedBytesCount.values.0 network.sent_bytes Convertido para número inteiro sem sinal
Sensor.fqdn principal.administrative_domain Mapeado diretamente
malop_process.elementValues.ownerMachine.elementValues.0.guid principal.asset.asset_id Prefixo "Cybereason:"
malop_data.elementValues.affectedMachines.elementValues.0.guid principal.asset.asset_id Prefixo "Cybereason:", fallback
malop_process.elementValues.ownerMachine.elementValues.0.name principal.asset.hostname Mapeado diretamente
malop_data.elementValues.affectedMachines.elementValues.0.name principal.asset.hostname Fallback
machineName principal.asset.hostname Fallback
host principal.asset.hostname Fallback
dvchost principal.asset.hostname Fallback
Sensor.fqdn principal.asset.hostname Fallback
client.ip principal.asset.ip Mapeado diretamente
Sensor.externalIpAddress principal.asset.ip Fallback
malop_process.elementValues.ownerMachine.elementValues.0.name principal.hostname Mapeado diretamente
malop_data.elementValues.affectedMachines.elementValues.0.name principal.hostname Fallback
machineName principal.hostname Fallback
host principal.hostname Fallback
dvchost principal.hostname Fallback
Sensor.fqdn principal.hostname Fallback
client.ip principal.ip Mapeado diretamente
Sensor.externalIpAddress principal.ip Fallback
Sensor.internalIpAddress principal.nat_ip Mapeado diretamente
Sensor.privateServerIp principal.nat_ip Fallback
Sensor.osType principal.platform Defina como WINDOWS se o valor for "WINDOWS", LINUX se for "LINUX" e MAC se for "MAC".
Sensor.osVersionType principal.platform_version Mapeado diretamente
malop_connection.simpleValues.localPort.values.0 principal.port Convertido para número inteiro
malop_process.simpleValues.commandLine.values.0 principal.process.command_line Mapeado diretamente
malwareDataModel.filePath principal.process.command_line Fallback
malop_process.simpleValues.calculatedName.values.0 principal.process.file.full_path Mapeado diretamente
nome principal.process.file.full_path Fallback
malop_process.elementValues.parentProcess.elementValues.0.guid principal.process.parent_process.product_specific_process_id Prefixo "Cybereason:"
malop_process.elementValues.self.elementValues.0.guid principal.process.pid Mapeado diretamente
malop_process.elementValues.self.elementValues.0.guid principal.process.product_specific_process_id Prefixo "Cybereason:"
malop_connection.elementValues.ownerProcess.elementValues.0.guid principal.process.product_specific_process_id Prefixo "Cybereason:", fallback
companyName principal.user.company_name Mapeado diretamente
malop_process.elementValues.calculatedUser.elementValues.0.name principal.user.user_display_name Mapeado diretamente
malop_data.elementValues.affectedUsers.elementValues.0.name principal.user.user_display_name Fallback
malop_connection.elementValues.ownerProcess.user.elementValues.0.name principal.user.user_display_name Fallback
malop_process.elementValues.calculatedUser.elementValues.0.guid principal.user.userid Mapeado diretamente
malop_data.elementValues.affectedUsers.elementValues.0.guid principal.user.userid Fallback
malop_connection.elementValues.ownerProcess.user.elementValues.0.guid principal.user.userid Fallback
security_result_action security_result.action Definido como ALLOW, BLOCK ou QUARANTINE com base no status
is_alert security_result.alert_state Definido como "ALERTING" se o valor for "True"
sr_category security_result.category Definido como SOFTWARE_MALICIOUS ou NETWORK_MALICIOUS
query_details security_result.detection_fields Mapeado como par de chave-valor
affected_machine_count security_result.detection_fields Mapeado como par de chave-valor
link_to_malop security_result.detection_fields Mapeado como par de chave-valor
context_label security_result.detection_fields Mapeado como par de chave-valor
old_state_label security_result.detection_fields Mapeado como par de chave-valor
new_state_label security_result.detection_fields Mapeado como par de chave-valor
investigation_label security_result.detection_fields Mapeado como par de chave-valor
event_id_label security_result.detection_fields Mapeado como par de chave-valor
malop_activity_type_label security_result.detection_fields Mapeado como par de chave-valor
malop_suspect_label security_result.detection_fields Mapeado como par de chave-valor
malop_key_suspicion_label security_result.detection_fields Mapeado como par de chave-valor
device_custom_date_label security_result.detection_fields Mapeado como par de chave-valor
device_custom_date2_label security_result.detection_fields Mapeado como par de chave-valor
device_custom_date3_label security_result.detection_fields Mapeado como par de chave-valor
guid_label security_result.detection_fields Mapeado como par de chave-valor
displayName_label security_result.detection_fields Mapeado como par de chave-valor
pylumId_label security_result.detection_fields Mapeado como par de chave-valor
connected_label security_result.detection_fields Mapeado como par de chave-valor
isolated_label security_result.detection_fields Mapeado como par de chave-valor
osType_label security_result.detection_fields Mapeado como par de chave-valor
admin_label security_result.detection_fields Mapeado como par de chave-valor
domainUser_label security_result.detection_fields Mapeado como par de chave-valor
localSystem_label security_result.detection_fields Mapeado como par de chave-valor
descrição security_result.description Concatenado com decision_feature, malop_status, privileges, passwordAgeDays, elementType, status, score, detectionValue, detectionValueType, detectionEngine
decision_feature security_result.description Concatenado na descrição
malop_status security_result.description Concatenado na descrição
privilégios security_result.description Concatenado na descrição
passwordAgeDays security_result.description Concatenado na descrição
elementType security_result.description Concatenado na descrição
status security_result.description Concatenado na descrição
score security_result.description Concatenado na descrição
detectionValue security_result.description Concatenado na descrição
detectionValueType security_result.description Concatenado na descrição
detectionEngine security_result.description Concatenado na descrição
malop_data.malopPriority security_result.priority Mapeado diretamente
malop_severity security_result.severity Mapeado diretamente
security_severity security_result.severity Definido como CRÍTICO se o valor for > 8, ALTO se > 6, MÉDIO se > 4 e BAIXO se > 1
gravidade, security_result.severity Definido como "INFORMATIONAL" se "Info", "ERROR" se "Error" ou "High", "MEDIUM" se "Warning" ou "Medium", "CRITICAL" se "Critical", "LOW" se "Low" e "UNKNOWN" caso contrário.
descrição security_result.summary Mapeado diretamente
tipo security_result.summary Fallback
malopId security_result.threat_id Mapeado diretamente
malop_data.simpleValues.detectionType.values.0 security_result.threat_name Mapeado diretamente
virusName security_result.threat_name Fallback
status security_result.threat_status Definido como ACTIVE se o valor for "Active", caso contrário, FALSE_POSITIVE
malop_url security_result.url_back_to_product Mapeado diretamente
machineName target.asset.hostname Mapeado diretamente
affectedMachine target.asset.hostname Fallback
dvchost target.asset.hostname Fallback
Sensor.serverName target.asset.hostname Fallback
server.ip target.asset.ip Mapeado diretamente
Sensor.serverIp target.asset.ip Fallback
malop_process.simpleValues.calculatedName.values.0 target.file.full_path Mapeado diretamente
malop_connection.elementValues.ownerProcess.elementValues.0.name target.file.full_path Fallback
nome target.file.full_path Fallback
malwareDataModel_filePath target.file.full_path Fallback
malop_process.simpleValues.imageFile.md5String.values.0 target.file.md5 Mapeado diretamente
nome target.file.names Mapeado diretamente
machineName target.hostname Mapeado diretamente
affectedMachine target.hostname Fallback
dvchost target.hostname Fallback
Sensor.serverName target.hostname Fallback
server.ip target.ip Mapeado diretamente
Sensor.serverIp target.ip Fallback
malop_connection.simpleValues.remoteAddressCountryName.values.0 target.location.country_or_region Mapeado diretamente
Sensor.privateServerIp target.nat_ip Mapeado diretamente
malop_connection.simpleValues.remotePort.values.0 target.port Convertido para número inteiro
malop_process.simpleValues.calculatedName.values.0 target.process.file.full_path Mapeado diretamente
malop_process.elementValues.self.elementValues.0.guid target.process.pid Mapeado diretamente
malop_url target.url Mapeado diretamente
(estático) metadata.product_name Definido como "Cybereason"

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.