Recolha registos do ESET EDR

Compatível com:

Este documento explica como carregar registos do ESET para o Google Security Operations através do Bindplane. O código do analisador Logstash tenta primeiro extrair campos dos registos do ESET EDR no formato SYSLOG ou JSON através de uma série de padrões grok. Consoante os campos extraídos e o respetivo formato, processa ainda mais os dados através de filtros de chave/valor (kv) ou da análise JSON para estruturar as informações numa representação do modelo de dados unificado (UDM).

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Windows 2016 ou posterior, ou um anfitrião Linux com systemd
  • Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
  • Acesso privilegiado ao ESET Protect

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. Execute o seguinte comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalação adicionais

Para ver opções de instalação adicionais, consulte o guia de instalação.

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:
    • Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro config.yaml da seguinte forma:

    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: 'ESET_EDR'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID de cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.

Reinicie o agente do Bindplane para aplicar as alterações

  • Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o Syslog para o ESET PROTECT no local

  1. Inicie sessão na consola Web do ESET Protect.
  2. Aceda a Mais > Definições > Definições avançadas > Servidor Syslog.
  3. Selecione o botão junto a Ativar Syslog.
  4. Indique os seguintes detalhes de configuração:
    • Anfitrião: introduza o endereço IP do agente Bindplane
    • Porta: introduza o número da porta do agente Bindplane (514 para UDP)
    • Formato: selecione Syslog
    • Transporte: selecione UDP
    • Detalhe do registo de rastreio: selecione Informacional
    • Exportar registos para Syslog: selecione Ativar
    • Formato dos registos exportados: selecione JSON
  5. Clique em Guardar.

Configure o Syslog para o ESET PROTECT Cloud

  1. Inicie sessão na consola Web do ESET Protect.
  2. Aceda a Mais > Definições > Servidor Syslog.
  3. Selecione o botão junto a Ativar Syslog.
  4. Indique os seguintes detalhes de configuração:
    • Formato do payload: selecione JSON
    • Formato do envelope: selecione Syslog
    • Nível de registo mínimo: selecione Informacional
    • Tipos de eventos a registar: selecione Todos os tipos de eventos
    • IP de destino: introduza o endereço IP do agente do Bindplane
    • Porta: introduza o número da porta do agente Bindplane (514 para UDP)
  5. Clique em Guardar.

Tabela de mapeamento do UDM

Campo de registo Mapeamento de UDM Lógica
ação event1.idm.read_only_udm.security_result.action Condicionalmente definido como BLOCK se o valor for Blocked.
actionTaken event2.idm.read_only_udm.metadata.event_type Condicionalmente definido como SCAN_PROCESS se o valor for Cleaned by deleting.
actionTaken event1.idm.read_only_udm.security_result.action_details Mapeado diretamente a partir do campo actionTaken.
actionTaken event2.idm.read_only_udm.security_result.action_details Mapeado diretamente a partir do campo actionTaken.
accountName event2.idm.read_only_udm.additional.fields.value.string_value Mapeado diretamente a partir do campo accountName. A tecla está definida como accountName.
app event3.idm.read_only_udm.principal.application Mapeado diretamente a partir do campo app.
circunstâncias event2.idm.read_only_udm.additional.fields.value.string_value Mapeado diretamente a partir do campo circumstances. A tecla está definida como circumstances.
Computer_name event3.idm.read_only_udm.principal.hostname Mapeado diretamente a partir do campo Computer_name.
Computer_name event3.idm.read_only_udm.principal.asset.hostname Mapeado diretamente a partir do campo Computer_name.
date_time
Detection_name event3.idm.read_only_udm.security_result.threat_name Mapeado diretamente a partir do campo Detection_name.
Detectiontype event3.idm.read_only_udm.security_result.category_details Mapeado diretamente a partir do campo Detectiontype.
dst event2.idm.read_only_udm.target.ip Mapeado diretamente a partir do campo dst.
dst event2.idm.read_only_udm.target.asset.ip Mapeado diretamente a partir do campo dst.
dstPort event2.idm.read_only_udm.target.port Mapeado diretamente a partir do campo dstPort após a conversão para um número inteiro.
evento event1.idm.read_only_udm.metadata.description Mapeado diretamente a partir do campo event.
event_type event1.idm.read_only_udm.metadata.product_event_type Mapeado diretamente a partir do campo event_type.
event_type event1.idm.read_only_udm.metadata.event_type Condicionalmente definido como NETWORK_CONNECTION se o valor for FirewallAggregated_Event.
hash event1.idm.read_only_udm.target.file.sha1 Mapeado diretamente a partir do campo hash após a conversão para letras minúsculas.
hostname event1.idm.read_only_udm.target.hostname Mapeado diretamente a partir do campo hostname.
hostname event1.idm.read_only_udm.target.asset.hostname Mapeado diretamente a partir do campo hostname.
hostname event.alert.devices.hostname Mapeado diretamente a partir do campo hostname.
ipv4 event1.idm.read_only_udm.principal.ip Mapeado diretamente a partir do campo ipv4. Este campo é primeiro armazenado num campo temporário udm_ip.
ipv4 event1.idm.read_only_udm.principal.asset.ip Mapeado diretamente a partir do campo ipv4. Este campo é primeiro armazenado num campo temporário udm_ip.
ipv4 event.alert.devices.ip_addresses Mapeado diretamente a partir do campo ipv4 após a conversão num endereço IP.
Logged_user event3.idm.read_only_udm.principal.user.userid Mapeado diretamente a partir do campo Logged_user.
objectUri event1.idm.read_only_udm.target.file.full_path Mapeado diretamente a partir do campo objectUri.
objectUri event2.idm.read_only_udm.target.file.full_path Mapeado diretamente a partir do campo objectUri.
processName event2.idm.read_only_udm.target.process.file.full_path Mapeado diretamente a partir do campo processName.
processName event1.idm.read_only_udm.principal.process.file.full_path Mapeado diretamente a partir do campo processName.
process_id event3.idm.read_only_udm.principal.process.pid Mapeado diretamente a partir do campo process_id.
process_id event2.idm.read_only_udm.target.process.pid Mapeado diretamente a partir do campo process_id.
protocolo event1.idm.read_only_udm.network.ip_protocol Mapeado diretamente a partir do campo protocol.
proto event2.idm.read_only_udm.network.ip_protocol Mapeado diretamente a partir do campo proto.
result event2.idm.read_only_udm.security_result.action Condicionalmente definido como ALLOW se o valor for Success.
Teste event3.idm.read_only_udm.security_result.description Mapeado diretamente a partir do campo Scanner.
gravidade event1.idm.read_only_udm.security_result.severity Mapeado a partir do campo severity com base nestas condições: - INFO, Informational, DEBUG, info: INFORMATIONAL - ERROR, error: ERROR - WARNING, Warning: LOW
source_address event1.idm.read_only_udm.principal.ip Mapeado diretamente a partir do campo source_address.
source_address event1.idm.read_only_udm.principal.asset.ip Mapeado diretamente a partir do campo source_address.
source_port event1.idm.read_only_udm.principal.port Mapeado diretamente a partir do campo source_port após a conversão para um número inteiro.
source_uuid event1.idm.read_only_udm.metadata.product_log_id Mapeado diretamente a partir do campo source_uuid.
src event2.idm.read_only_udm.principal.ip Mapeado diretamente a partir do campo src.
src event2.idm.read_only_udm.principal.asset.ip Mapeado diretamente a partir do campo src.
srcPort event2.idm.read_only_udm.principal.port Mapeado diretamente a partir do campo srcPort após a conversão para um número inteiro.
target_address event1.idm.read_only_udm.target.ip Mapeado diretamente a partir do campo target_address.
target_address event1.idm.read_only_udm.target.asset.ip Mapeado diretamente a partir do campo target_address.
target_port event1.idm.read_only_udm.target.port Mapeado diretamente a partir do campo target_port após a conversão para um número inteiro.
threatName event2.idm.read_only_udm.security_result.threat_name Mapeado diretamente a partir do campo threatName.
threatName event.alert.alert_short_name Mapeado diretamente a partir do campo threatName.
Time_of_occurrence event3.idm.read_only_udm.additional.fields.value.string_value Mapeado diretamente a partir do campo Time_of_occurrence. A tecla está definida como Time_of_occurrence.
escrever event2.idm.read_only_udm.security_result.category_details Mapeado diretamente a partir do campo type.
escrever event2.idm.read_only_udm.metadata.event_type Condicionalmente definido como GENERIC_EVENT se não for encontrada correspondência com nenhum outro tipo de evento específico.
user_id event2.idm.read_only_udm.principal.user.userid Mapeado diretamente a partir do campo user_id.
event1.idm.read_only_udm.metadata.event_type Condicionalmente definido como FILE_UNCATEGORIZED se o valor de event_type for Threat_Event.
event1.idm.read_only_udm.metadata.log_type Definido como ESET_EDR.
event1.idm.read_only_udm.metadata.product_name Condicionalmente definido como ESET se o valor de event_type for FirewallAggregated_Event.
event2.idm.read_only_udm.metadata.log_type Definido como ESET_EDR.
event2.idm.read_only_udm.metadata.product_name Definido como EDR.
event2.idm.read_only_udm.metadata.vendor_name Definido como ESET.
event3.idm.read_only_udm.metadata.event_type Definido condicionalmente com base nestas regras: - USER_UNCATEGORIZED se principal_user_present for true. - STATUS_UPDATE se principal_machine_id_present for true. - GENERIC_EVENT caso contrário.
event3.idm.read_only_udm.metadata.log_type Definido como ESET_EDR.
event3.idm.read_only_udm.metadata.product_name Definido como EDR.
event3.idm.read_only_udm.metadata.vendor_name Definido como ESET.
event.alert.is_significant Definido como true e, em seguida, convertido num valor booleano.
event3.idm.read_only_udm.security_result.description Condicionalmente definido para o valor de kv_data se Scanner estiver vazio.

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