Coletar registros do Carbon Black App Control (antigo CB Protection)

Versão do analisador:28.0

Compatível com:

Neste documento, explicamos como ingerir registros do Carbon Black App Control (antigo CB Protection, agora parte da Broadcom) no Google Security Operations usando o Bindplane. O analisador é compatível com os formatos CEF e JSON. Primeiro, ele tenta analisar a entrada como JSON. Se isso falhar, ele trata a entrada como CEF, realiza substituições de texto, extrai campos CEF, os mapeia para UDM e define o tipo de evento como GENERIC_EVENT.

O Carbon Black App Control é uma solução de controle e lista de permissões de aplicativos que permite que as organizações bloqueiem servidores e sistemas críticos. Ele impede a execução de softwares não autorizados e maliciosos ao aplicar políticas baseadas em confiança, monitorar mudanças na integridade dos arquivos e fornecer visibilidade em tempo real da atividade do endpoint.

Antes de começar

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

  • Uma instância do Google SecOps.
  • Um host do Windows Server 2016 ou mais recente ou do Linux com systemd.
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
  • Carbon Black App Control Server versão 8.x ou mais recente.
  • Acesso privilegiado (conta de administrador) ao console do Carbon Black App Control.

Receber credenciais do Google SecOps para o agente do BindPlane

Para autenticar o agente do Bindplane no Google SecOps, escolha um dos seguintes métodos:

  • Novas implantações: use a API Chronicle (opção 1).
  • Implantações legadas: continue usando o arquivo de autenticação de ingestão (opção 2) até que a API Ingestion seja desativada em 20 de julho de 2027.
  1. Faça login no consoleGoogle Cloud e selecione o projeto Google Cloud vinculado à sua instância do Google SecOps.
  2. Acesse IAM e administrador > Contas de serviço.
  3. Clique em Criar conta de serviço.
  4. Informe os seguintes detalhes de configuração:
    • Nome da conta de serviço: insira um nome para a conta (por exemplo, bindplane-ingest).
    • Descrição da conta de serviço: insira uma descrição (por exemplo, Bindplane agent log ingestion).
  5. Clique em Criar e continuar.
  6. Na seção Conceder a essa conta de serviço acesso ao projeto, clique em Selecionar uma função e escolha Editor do Chronicle.
  7. Clique em Continuar e depois em Concluído.
  8. Clique na conta de serviço que você criou e acesse a guia Chaves.
  9. Clique em Adicionar chave > Criar nova chave.
  10. Selecione JSON e clique em Criar. O arquivo de chave é baixado para o computador.
  11. Salve o arquivo de chave como ingestion-auth.json no diretório do coletor do BindPlane (/opt/observiq-otel-collector/ingestion-auth.json no Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json no Windows) ou atualize creds_file_path em config.yaml para corresponder ao caminho em que você o salvou.
  12. Acesse IAM e administrador > Configurações e copie o Número do projeto. Você vai precisar dele para configurar o exportador.

Opção 2: baixar o arquivo de autenticação de ingestão (legado)

  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.
  4. 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 de 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 raiz 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 do agente do BindPlane.

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

  1. Acesse o arquivo de configuração:

    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /observiq-otel-collector/ 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:
      tcplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        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: chronicle.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: CB_APP_CONTROL
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - tcplog
          exporters:
            - chronicle/chronicle_w_labels
    
  • Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
  • Substitua <LOCATION> pela região da sua instância do Google SecOps (por exemplo, us, europe ou asia-southeast1). O exportador prefixa chronicle.googleapis.com com esse valor.
  • Substitua <PROJECT_NUMBER> pelo número do projeto em IAM e administrador > Configurações.
  • Substitua <customer_id> pelo ID de cliente real.
  • Atualize /path/to/ingestion-authentication-file.json para o caminho do arquivo em que o arquivo de chave da conta de serviço (opção 1) foi salvo na seção Receber credenciais do Google SecOps para o agente do Bindplane.

Exportador da API de ingestão legada

  • Se você usar o arquivo de autenticação de ingestão da Opção 2, substitua o bloco exporters pelo seguinte. Defina creds_file_path como o caminho para o arquivo de autenticação de ingestão e, se a instância estiver fora dos EUA, substitua malachiteingestion-pa.googleapis.com pelo endpoint regional (por exemplo, europe-malachiteingestion-pa.googleapis.com).

    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: CB_APP_CONTROL
        raw_log_field: body
        ingestion_labels:
    

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á em execução:

    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á em execução:

    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 Carbon Black App Control

  1. Faça login no console do Carbon Black App Control com uma conta de administrador.
  2. Clique no ícone de Configurações (engrenagem) e em Configuração do sistema.
  3. Na página Configuração do sistema, clique na guia Eventos.
  4. Clique no botão Editar na parte de baixo da página.
  5. No painel Registro de eventos externos, marque a caixa de seleção Syslog ativado.
  6. Informe os seguintes detalhes de configuração:
    • Endereço do Syslog: insira o endereço IP ou o FQDN do host do agente do BindPlane (por exemplo, 192.168.1.100).
    • Porta do Syslog: insira 514 (ou a porta configurada no Bindplane).
    • Formato do Syslog: selecione o formato de saída no menu Formato do Syslog:
      • CEF (ArcSight): recomendado para ingestão do Google SecOps.
      • Aprimorado (RFC 5424): padrão para novas instalações da v6.0.1 e mais recentes.
      • Básico (RFC 3164): padrão para upgrades de versões anteriores à 6.0.1.
      • LEEF (Q1 Labs): para integração com o QRadar.
  7. Clique em Atualizar e em Sim na caixa de diálogo de confirmação.

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
ABId principal.asset.asset_id O ABId do registro JSON é usado como parte do código do recurso no formato PRODUCT_SPECIFIC_ID:{ABId}-{Bit9Server}.
Bit9Server principal.asset.asset_id Usado como parte do código do recurso do principal, combinado com ABId. Também é usado para criar o campo metadata.url_back_to_product.
CommandLine about.process.command_line Mapeado diretamente.
EventType metadata.product_event_type Mapeado com o EventTypeId correspondente entre colchetes (por exemplo, [5] - Discovery).
EventTypeId metadata.product_event_type Usado com EventType para preencher metadata.product_event_type.
EventSubType metadata.description Anexado ao campo metadata.description.
EventSubTypeId metadata.description Não é mapeado explicitamente, mas pode contribuir para a descrição com base na lógica interna do analisador.
externalId metadata.product_log_id Mapeado diretamente.
FileHash about.file.sha256 Mapeado diretamente.
FileName additional.fields (com a chave FileName) Adicionado como um campo extra. Também usado como parte das informações do arquivo em metadata.description para alguns eventos.
FilePath about.file.full_path Mapeado diretamente.
FileThreat additional.fields (com a chave fileThreat) Adicionado como um campo extra.
FileTrust additional.fields (com a chave fileTrust) Adicionado como um campo extra.
HostId principal.asset.asset_id Usado para construir o URL de volta ao produto em metadata.url_back_to_product.
HostName target.hostname Mapeado diretamente.
HostIP target.ip Mapeado diretamente.
Message metadata.description Mapeado diretamente.
PathName about.file.full_path Mapeado diretamente.
Platform target.platform Mapeado para o valor de tipo enumerado WINDOWS.
Policy additional.fields (com a chave Policy) Adicionado como um campo extra.
PolicyId additional.fields (com a chave PolicyId) Adicionado como um campo extra.
ProcessKey additional.fields (com a chave ProcessKey) Adicionado como um campo extra.
ProcessPath about.process.command_line Mapeado diretamente.
ProcessPathName about.process.command_line Mapeado diretamente.
ProcessThreat additional.fields (com a chave ProcessThreat) Adicionado como um campo extra.
ProcessTrust additional.fields (com a chave ProcessTrust) Adicionado como um campo extra.
RuleName additional.fields (com a chave ruleName) Adicionado como um campo extra.
Timestamp metadata.event_timestamp Mapeado diretamente.
UserName target.user.user_display_name Mapeado diretamente.
UserSid principal.user.userid Mapeado diretamente.
agent.ephemeral_id observer.labels (com a chave ephemeral_id) Adicionado como um rótulo de observador.
agent.name principal.hostname, observer.hostname, observer.user.userid Mapeado para vários campos.
agent.type observer.application Mapeado diretamente.
agent.version metadata.product_version Mapeado diretamente para registros JSON. Para registros CEF, extraídos da mensagem CEF.
cat security_result.category_details Mapeado diretamente.
process event.idm.read_only_udm.principal.file.full_path Mapeado do registro de mudanças
text event.idm.read_only_udm.metadata.description Mapeado do registro de alterações
type event.idm.read_only_udm.security_result.category_details Mapeado do registro de alterações
subtype event.idm.read_only_udm.security_result.category_details Mapeado do registro de alterações
hostname event.idm.read_only_udm.principal.hostname e event.idm.read_only_udm.principal.asset.hostname Mapeado do registro de alterações
username event.idm.read_only_udm.target.user.userid Mapeado do registro de alterações
date event.idm.read_only_udm.metadata.collected_timestamp Mapeado do registro de mudanças
ip_address event.idm.read_only_udm.principal.ip e event.idm.read_only_udm.principal.asset.ip Mapeado do registro de mudanças
file_path event.idm.read_only_udm.target.file.full_path Mapeado do registro de alterações
file_name event.idm.read_only_udm.target.process.file.names Mapeado do registro de alterações
file_hash event.idm.read_only_udm.target.file.sha256 Mapeado do registro de alterações
policy event.idm.read_only_udm.security_result.rule_name Mapeado do registro de alterações
server_version event.idm.read_only_udm.metadata.product_version Mapeado do registro de alterações
file_trust event.idm.read_only_udm.security_result.about.labels Mapeado do registro de alterações
file_threat event.idm.read_only_udm.security_result.about.labels Mapeado do registro de alterações

Registro de alterações

Confira o registro de alterações deste analisador

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