Coletar registros do ESET AV

Compatível com:

Neste documento, explicamos como ingerir registros do ESET AV no Google Security Operations usando o Bindplane. O código do analisador Logstash extrai dados de ocorrência de segurança de registros ESET_AV formatados em SYSLOG ou JSON. Primeiro, ela normaliza a mensagem bruta e a analisa com base no formato identificado, mapeando os campos extraídos para o esquema correspondente do Modelo de Dados Unificado (UDM, na sigla em inglês) para representação e análise consistentes.

Antes de começar

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

  • Instância do Google SecOps
  • Windows 2016 ou mais recente ou um host Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Acesso privilegiado ao ESET Protect

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 de forma segura no sistema em que o Bindplane será instalado.

Receber o ID do 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

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
    

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
    

Outros recursos de instalação

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

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo 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_AV'
                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 do cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente do Bindplane para aplicar as mudanças

  • 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, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Syslog para o ESET PROTECT local

  1. Faça login no console da Web do ESET Protect.
  2. Acesse Mais > Configurações > Configurações avançadas > Servidor Syslog.
  3. Selecione o botão ao lado de Ativar Syslog.
  4. Informe os seguintes detalhes de configuração:
    • Host: insira o endereço IP do agente do Bindplane.
    • Porta: insira o número da porta do agente Bindplane (514 para UDP).
    • Formato: selecione Syslog.
    • Transporte: selecione UDP.
    • Nível de detalhe do registro de rastreamento: selecione Informativo.
    • Alternância "Exportar registros para Syslog": selecione Ativar.
    • Formato dos registros exportados: selecione JSON.
  5. Clique em Salvar.

Configurar o Syslog para o ESET PROTECT Cloud

  1. Faça login no console da Web do ESET Protect.
  2. Acesse Mais > Configurações > Servidor Syslog.
  3. Selecione o botão ao lado de Ativar Syslog.
  4. Informe os seguintes detalhes de configuração:
    • Formato do payload: selecione JSON.
    • Formato do envelope: selecione Syslog.
    • Nível mínimo de registro: selecione Informativo.
    • Tipos de eventos a serem registrados: selecione Todos os tipos de eventos.
    • IP de destino: insira o endereço IP do agente do Bindplane.
    • Porta: insira o número da porta do agente Bindplane (514 para UDP).
  5. Clique em Salvar.

Tabela de mapeamento da UDM

Campo de registro Mapeamento do UDM Lógica
conta principal.administrative_domain Extraído do campo account usando o padrão grok %{DATA:admin_domain}\\\\%{WORD:user_id}.
conta principal.user.userid Extraído do campo account usando o padrão grok %{DATA:admin_domain}\\\\%{WORD:user_id}.
ação security_result.action Se action for Block (sem diferenciar maiúsculas de minúsculas), defina como BLOCK. Se action for Start (sem diferenciar maiúsculas de minúsculas), defina como ALLOW.
action_taken security_result.action_details Mapeado diretamente do campo action_taken.
computer_severity_score security_result.detection_fields Um par de chave-valor é criado com a chave computer_severity_score e o valor do campo computer_severity_score. Esse par é anexado à matriz security_result.detection_fields.
detail security_result.description Mapeado diretamente do campo detail.
domínio principal.domain.name Mapeado diretamente do campo domain.
eialarmid security_result.detection_fields Um par de chave-valor é criado com a chave eialarmid e o valor do campo eialarmid. Esse par é anexado à matriz security_result.detection_fields.
eiconsolelink principal.url Mapeado diretamente do campo eiconsolelink.
evento metadata.description Renomeado de event para event_desc e mapeado para metadata.description.
event_type metadata.product_event_type Mapeado diretamente do campo event_type.
group_name principal.group.group_display_name Mapeado diretamente do campo group_name.
jogo da velha principal.file.sha1 Convertido para minúsculas. Se o valor em letras minúsculas corresponder à regex SHA-1, mapeado para principal.file.sha1.
jogo da velha principal.resource.attribute.labels Um par de chave-valor é criado com a chave hash e o valor do campo hash. Esse par é anexado à matriz principal.resource.attribute.labels.
nome do host principal.asset.hostname Mapeado diretamente do campo hostname.
nome do host principal.hostname Mapeado diretamente do campo hostname.
entrada network.direction Se for verdadeiro, defina como INBOUND. Se for "false", defina como OUTBOUND.
ipv4 target.asset.ip Mapeado diretamente do campo ipv4 se target_address estiver vazio.
ipv4 target.ip Mapeado diretamente do campo ipv4 se target_address estiver vazio.
json_data Analisado como JSON para extrair vários campos.
mensagem Analisado usando grok para extrair carimbo de data/hora, host e json_data.
need_restart additional.fields Um par de chave-valor é criado com a chave need_restart e o valor do campo need_restart (convertido em string). Esse par é anexado à matriz additional.fields.
os_name principal.platform Se contiver Window ou window (sem distinção entre maiúsculas e minúsculas), defina como WINDOWS. Se contiver Linux ou linux (sem distinção entre maiúsculas e minúsculas), defina como LINUX. Se contiver Mac ou mac (sem distinção entre maiúsculas e minúsculas), defina como MAC.
os_name principal.platform_version Mapeado diretamente do campo os_name.
process_name principal.process.file.full_path Mapeado diretamente do campo process_name. Se estiver vazio, vai usar o valor de processname.
processname principal.process.file.full_path Se process_name estiver vazio, será mapeado para process_name.
protocolo network.ip_protocol Convertido para maiúsculas. Se o valor em maiúsculas corresponder a protocolos conhecidos (TCP, UDP, ICMP etc.), será mapeado para network.ip_protocol.
result security_result.summary Mapeado diretamente do campo result.
rulename security_result.rule_name Mapeado diretamente do campo rulename.
scan_id security_result.detection_fields Um par de chave-valor é criado com a chave scan_id e o valor do campo scan_id. Esse par é anexado à matriz security_result.detection_fields.
scanner_id security_result.detection_fields Um par de chave-valor é criado com a chave scanner_id e o valor do campo scanner_id. Esse par é anexado à matriz security_result.detection_fields.
gravidade, security_result.severity Se contiver Warn ou warn (sem distinção entre maiúsculas e minúsculas), defina como HIGH. Se contiver Info ou info (sem distinção entre maiúsculas e minúsculas), defina como LOW.
severity_score security_result.detection_fields Um par de chave-valor é criado com a chave severity_score e o valor do campo severity_score. Esse par é anexado à matriz security_result.detection_fields.
source_address principal.asset.ip Mapeado diretamente do campo source_address.
source_address principal.ip Mapeado diretamente do campo source_address.
source_port principal.port Convertido para string e depois para inteiro. Mapeado para principal.port.
source_uuid metadata.product_log_id Mapeado diretamente do campo source_uuid.
target Renomeada como target1.
target_address target.asset.ip Mapeado diretamente do campo target_address.
target_address target.ip Mapeado diretamente do campo target_address.
target_port target.port Convertido para string e depois para inteiro. Mapeado para target.port.
threat_handled security_result.detection_fields Um par de chave-valor é criado com a chave threat_handled e o valor do campo threat_handled (convertido em string). Esse par é anexado à matriz security_result.detection_fields.
threat_name security_result.threat_name Mapeado diretamente do campo threat_name.
threat_type security_result.threat_id Mapeado diretamente do campo threat_type.
tempo metadata.event_timestamp Usado para preencher metadata.event_timestamp.
nome de usuário principal.user.userid Mapeado diretamente do campo username se user_id e user estiverem vazios.
usuário principal.user.userid Mapeado diretamente do campo user se user_id estiver vazio.
metadata.event_type Se source_address e target_address não estiverem vazios, defina como NETWORK_CONNECTION. Caso contrário, se has_user for verdadeiro, defina como USER_UNCATEGORIZED. Caso contrário, se has_principal for verdadeiro, defina como STATUS_UPDATE. Caso contrário, defina como GENERIC_EVENT.
metadata.log_type Defina como ESET_AV.
metadata.product_name Defina como ESET_AV.
metadata.vendor_name Defina como ESET_AV.
intermediary.hostname O valor desse campo é extraído do campo host da mensagem de registro.
principal.user.userid Se o campo account não estiver vazio, o analisador vai extrair o ID do usuário do campo account usando um padrão grok. Caso contrário, ele verifica se o campo user não está vazio e, se estiver, usa o valor dele. Se account e user estiverem vazios, ele vai verificar se o campo username não está vazio e, se estiver, vai usar o valor dele.

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