Coletar registros do Sophos AV

Compatível com:

Este documento explica como coletar registros do Sophos AV usando o Bindplane. O analisador transforma registros JSON em um modelo de dados unificado (UDM). Ele extrai campos de estruturas JSON aninhadas, mapeia-os para campos da UDM e realiza a categorização de eventos com base no campo "type", enriquecendo os dados com detalhes e ações específicos para diferentes tipos de eventos do Sophos AV.

Antes de começar

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

  • Uma instância do Google SecOps
  • Windows 2016 ou mais recente ou um host Linux com systemd
  • Outra máquina Windows ou Linux capaz de executar Python continuamente
  • 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 Bindplane.
  • Acesso privilegiado ao console do Sophos Central Admin

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

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
    

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

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

  1. Acesse o arquivo de configuração:

    1. 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.
    2. 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
        log_type: 'SOPHOS_AV'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
    • Substitua <customer_id> pelo ID do cliente real.
    • 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 acesso à API do Sophos Central

  1. Faça login no Sophos Central Admin.
  2. Selecione Configurações globais > Gerenciamento de tokens de API.
  3. Clique em Adicionar token para criar um novo.
  4. Insira um nome para o token e clique em Salvar. O Resumo do token da API do token fornecido é exibido.
  5. Na seção Resumo do token de API, clique em Copiar para copiar o URL e os cabeçalhos de acesso à API.

Instalar o Python em outra máquina

  1. Abra o navegador da Web e acesse o site do Python.
  2. Clique em Fazer o download do Python para seu sistema operacional.
  3. Instale o Python:

    • No Windows:
      1. Execute o instalador.
      2. Marque a caixa Adicionar Python ao PATH.
      3. Clique em Instalar agora.
    • No Mac:

      1. O Python já pode estar instalado. Caso contrário, instale a versão mais recente usando o terminal.
      2. Abra o Terminal e digite o seguinte comando:

        python --version
        

Baixar o script de integração do Sophos

  1. Acesse a página do GitHub para o repositório do GitHub de integração do SIEM do Sophos Central.
  2. Clique no botão verde Code > Download ZIP.
  3. Extraia o arquivo ZIP.

Configurar o script

  1. Abra o arquivo config.ini no diretório em que você extraiu o arquivo ZIP.
  2. Edite o arquivo de configuração:
    • Token da API: insira a chave de API copiada anteriormente do Sophos Central.
    • Detalhes do servidor Syslog: insira os detalhes do seu servidor Syslog.
    • Host: insira o endereço IP do agente do BindPlane.
    • Porta: insira o número da porta do agente do BindPlane.
    • Protocolo: insira UDP. Também é possível usar TCP ou TLS, dependendo da sua configuração.
  3. Salve o arquivo.

Executar o script

  1. Acesse a pasta de scripts.

    • No Windows:

      1. Pressione a tecla Windows e digite cmd.
      2. Clique em Prompt de comando.
      3. Acesse a pasta do script:
      cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
    • No macOS:

      1. Acesse Aplicativos > Utilitários.
      2. Abra o Terminal.
      3. Acesse a pasta do script:
      cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
  2. Execute o script:

    • Digite o seguinte comando para iniciar o script:

      python siem.py
      

Automatize o script para ser executado continuamente no Windows (usando o Agendador de Tarefas):

  1. Abra o Agendador de tarefas digitando Agendador de tarefas no menu Iniciar.
  2. Clique em Criar tarefa.
  3. Na guia Geral:
    • Nomeie a tarefa (por exemplo, Sophos AV Log Export).
  4. Na guia Gatilhos:
    • Clique em Novo e defina a tarefa para ser executada Diariamente ou Na inicialização (dependendo da sua preferência).
  5. Na guia Ações:
    • Clique em Novo e selecione Iniciar um programa.
    • Procure o executável python.exe (geralmente encontrado em C:/Python/XX/python.exe).
    • No campo Adicionar argumentos, digite o caminho para o script (por exemplo, C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integrationsiem.py).
  6. Clique em OK para salvar a tarefa.

Automatize o script para ser executado continuamente no Mac (usando Cron Jobs):

  1. Abra o Terminal.
  2. Digite crontab -e e pressione Enter.
  3. Adicione uma nova linha ao final do arquivo:

    * * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
    
  4. Clique em Salvar e saia do editor.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
customer_id target.resource.id Mapeamento direto
data.customer_id target.resource.id Mapeamento direto
data.dhost principal.hostname Mapeamento direto
data.end timestamp Mapeamento direto
data.endpoint_id principal.resource.id Mapeamento direto
data.group security_result.category_details Mapeamento direto
data.id principal.resource.id Mapeamento direto
data.location principal.hostname Mapeamento direto
data.name metadata.description Mapeamento direto
data.rt timestamp Mapeamento direto
data.severity security_result.severity Mapeamento direto
data.source principal.user.user_display_name Mapeamento direto
data.source_info.ip principal.ip Mapeamento direto
data.suser principal.user.userid Mapeamento direto
data.threat security_result.rule_name Mapeamento direto quando data.group é "POLICY"
data.type metadata.product_event_type Mapeamento direto
data.user_id principal.user.userid Mapeamento direto
data.when timestamp Mapeamento direto
dhost principal.hostname Mapeamento direto
end timestamp Mapeamento direto
endpoint_id principal.resource.id Mapeamento direto
grupo security_result.category_details Mapeamento direto
ID principal.resource.id Mapeamento direto
local principal.hostname Mapeamento direto
nome metadata.description Mapeamento direto
rt timestamp Mapeamento direto
gravidade, security_result.severity Mapeamento direto
source principal.user.user_display_name Mapeamento direto
source_info.ip principal.ip Mapeamento direto
suser principal.user.userid Mapeamento direto
tipo metadata.product_event_type Mapeamento direto
user_id principal.user.userid Mapeamento direto
quando timestamp Mapeamento direto
- is_alert O campo "is_alert" é definido como "true" para eventos com "severity" de "medium" ou "high", ou quando o campo "type" indica um evento que merece um alerta, como "Event::Endpoint::UpdateRebootRequired".
- is_significant O campo "is_significant" é definido como "true" para eventos com "severity" de "medium" ou "high".
- metadata.description O campo de descrição é preenchido com o valor do campo "name" do registro bruto.
- metadata.event_timestamp O campo "event_timestamp" é preenchido com o valor do campo "end", "rt" ou "when" do registro bruto.
- metadata.event_type O campo "event_type" é derivado do campo "type" no registro bruto, mapeando tipos de eventos específicos da Sophos para tipos de eventos da UDM do Chronicle.
- metadata.log_type O campo "log_type" é definido como "SOPHOS_AV" para todos os eventos.
- metadata.product_event_type O campo "product_event_type" é preenchido com o valor do campo "type" do registro bruto.
- metadata.product_name O campo "product_name" é definido como "Sophos Anti-Virus" para todos os eventos.
- metadata.vendor_name O campo "vendor_name" é definido como "Sophos" para todos os eventos.
- network.direction O campo "direction" é definido como "OUTBOUND" para todos os eventos "NETWORK_CONNECTION".
- network.ip_protocol O campo "ip_protocol" é definido como "TCP" para eventos "NETWORK_CONNECTION" em que o campo "target.url" está presente.
- principal.hostname O campo "hostname" é preenchido com o valor do campo "dhost" ou "location" do registro bruto.
- principal.ip O campo "ip" é preenchido com o valor do campo "source_info.ip" do registro bruto.
- principal.resource.id O campo "id" é preenchido com o valor do campo "id" ou "endpoint_id" do registro bruto.
- principal.user.user_display_name O campo "user_display_name" é preenchido com o valor do campo "suser" ou "source" do registro bruto.
- principal.user.userid O campo "userid" é preenchido com o valor do campo "suser", "user_id" ou "data.suser" do registro bruto.
- security_result.action O campo de ação é derivado do campo "data.name" no registro bruto, mapeando ações específicas da Sophos para ações do UDM do Chronicle.
- security_result.category_details O campo "category_details" é preenchido com o valor do campo "group" do registro bruto.
- security_result.rule_name O campo "rule_name" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "Policy non-compliance: [rule_name]" ou "Rule names: [rule_name]".
- security_result.severity O campo de gravidade é preenchido com o valor do campo "severity" do registro bruto, convertendo-o para o nível de gravidade correspondente do UDM do Chronicle.
- security_result.summary O campo de resumo é preenchido com o valor do campo "name" do registro bruto quando o tipo de evento é "GENERIC_EVENT" ou "STATUS_HEARTBEAT".
- target.application O campo "application" é preenchido com o valor do campo "data.name" do log bruto quando o tipo de evento é "NETWORK_CONNECTION" e a descrição menciona um aplicativo bloqueado.
- target.asset_id O campo "asset_id" é preenchido com o valor do campo "data.endpoint_id" do registro bruto quando o tipo de evento é "NETWORK_CONNECTION" e a descrição menciona um ID do recurso.
- target.file.full_path O campo "full_path" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "Source path: [full_path]".
- target.file.size O campo "size" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "File size: [size]".
- target.hostname O campo "hostname" é preenchido com o valor do campo "data.dhost" do registro bruto quando o tipo de evento é "NETWORK_CONNECTION" e a descrição menciona um nome de host de destino.
- target.process.file.full_path O campo "full_path" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "Controlled application [action]: [full_path]".
- target.resource.id O campo "id" é preenchido com o valor do campo "customer_id" do registro bruto.
- target.resource.name O campo "Nome" é preenchido com valores específicos com base no tipo de evento. Para "SETTING_CREATION" e "SETTING_MODIFICATION", ele é definido como "Registro do dispositivo" e "Proteção em tempo real", respectivamente. Para "SCAN_UNCATEGORIZED", ele é preenchido com o valor do campo "data.name" do registro bruto.
- target.resource.type O campo "type" é preenchido com valores específicos com base no tipo de evento. Para "SETTING_CREATION" e "SETTING_MODIFICATION", ele é definido como "SETTING". Para "SCAN_UNCATEGORIZED", ela é definida como "Scan". Para "SCAN_NETWORK", ele é definido como "Device".
- target.url O campo "url" é extraído do campo "data.name" no registro bruto, procurando especificamente padrões como "'[url]' bloqueado".
- target.user.userid O campo "userid" é preenchido com o valor do campo "data.user_id" do registro bruto quando o tipo de evento é "USER_CREATION".
- timestamp O campo de carimbo de data/hora é preenchido com o valor do campo "end", "rt" ou "when" do registro bruto.

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