Coletar registros do Carbon Black App Control

Compatível com:

Este documento explica como coletar registros do Carbon Black App Control. O analisador oferece suporte aos formatos CEF e JSON. Primeiro, ele tenta analisar a entrada como JSON. Se isso falhar, ele vai tratar a entrada como CEF, realizar substituições de texto, extrair campos de CEF, mapeá-los para o UDM e definir o tipo de evento como GENERIC_EVENT. Caso contrário, ele usa um arquivo de inclusão de mapeamento UDM específico do JSON.

Antes de começar

  • Verifique se você tem uma instância do Google Security Operations.
  • Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
  • Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
  • Servidor Carbon Black App Control (CB Protection) (recomendado: versão 8.x ou mais recente).
  • Verifique se você tem acesso privilegiado ao Carbon Black App Control.

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. Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o 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

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

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

  1. Acesse o arquivo de configuração:

    1. Localize o arquivo config.yaml. Normalmente, ele está 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 Notepad).
  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:11592"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/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: JSON
                namespace: cb_app_control
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                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 real do cliente.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber o 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 Services ou digite o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Controle de app do CB para enviar registros do Syslog

  1. Faça login no console do CB App Control com uma conta de administrador.
  2. Acesse Administrador > Configuração do sistema > Registro externo.
  3. Na seção "Registro de eventos externos":
    • Ativar o registro de syslog: marque a caixa de seleção Syslog ativado.
    • Endereço do servidor: <Bindplane Server IP>.
    • Porta: <Bindplane Server PORT>.
    • Protocolo: selecione TCP.
    • Formato de Syslog: selecione JSON.
  4. Em Opções de registro de eventos, selecione os tipos de registros a serem enviados:
    • Violações da política
    • Eventos de monitoramento de integridade de arquivos (FIM)
    • Eventos de autenticação do usuário
    • Dados de inteligência contra ameaças
  5. Clique em Salvar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
ABId principal.asset.asset_id O ABId do registro JSON é usado como parte do ID do recurso no formato PRODUCT_SPECIFIC_ID:{ABId}-{Bit9Server}.
Bit9Server principal.asset.asset_id Usado como parte do ID de recurso do principal, combinado com ABId. Também é usado para construir 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 Usada com EventType para preencher metadata.product_event_type.
EventSubType metadata.description Adicionado 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 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 chave fileThreat) Adicionado como um campo extra.
FileTrust additional.fields (com 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 enumeração WINDOWS.
Policy additional.fields (com chave Policy) Adicionado como um campo extra.
PolicyId additional.fields (com chave PolicyId) Adicionado como um campo extra.
ProcessKey additional.fields (com 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 chave ProcessThreat) Adicionado como um campo extra.
ProcessTrust additional.fields (com chave ProcessTrust) Adicionado como um campo extra.
RuleName additional.fields (com 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 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 do CEF, extraídos da mensagem do CEF.
cat security_result.category_details Mapeado diretamente.
cs1 additional.fields (com a chave rootHash ou outro cs1Label) Adicionado como um campo extra com a chave definida por cs1Label.
cs1Label additional.fields Usado como a chave do campo extra preenchido por cs1.
cs2 additional.fields (com a chave installerFilename ou outro cs2Label) Adicionado como um campo extra com a chave definida por cs2Label.
cs2Label additional.fields Usado como a chave do campo extra preenchido por cs2.
cs3 additional.fields (com a chave Policy ou outro cs3Label) Adicionado como um campo extra com a chave definida por cs3Label.
cs3Label additional.fields Usado como a chave do campo extra preenchido por cs3.
cs5 additional.fields (com a chave ruleName ou outro cs5Label) Adicionado como um campo extra com a chave definida por cs5Label.
cs5Label additional.fields Usado como a chave do campo extra preenchido por cs5.
cfp1 additional.fields (com a chave fileTrust ou outro cfp1Label) Adicionado como um campo extra com a chave definida por cfp1Label.
cfp1Label additional.fields Usado como a chave do campo extra preenchido por cfp1.
cfp2 additional.fields (com a chave processTrust ou outro cfp2Label) Adicionado como um campo extra com a chave definida por cfp2Label.
cfp2Label additional.fields Usado como a chave do campo extra preenchido por cfp2.
deviceProcessName about.process.command_line Mapeado diretamente.
dhost target.hostname Mapeado diretamente.
dst target.ip Mapeado diretamente.
duser target.user.user_display_name Mapeado diretamente.
dvchost about.hostname Mapeado diretamente.
eventId additional.fields (com chave eventId) Adicionado como um campo extra.
fileHash about.file.sha256 Mapeado diretamente.
flexString1 additional.fields (com a chave fileThreat ou outro flexString1Label) Adicionado como um campo extra com a chave definida por flexString1Label.
flexString1Label additional.fields Usado como a chave do campo extra preenchido por flexString1.
flexString2 additional.fields (com a chave processThreat ou outro flexString2Label) Adicionado como um campo extra com a chave definida por flexString2Label.
flexString2Label additional.fields Usado como a chave do campo extra preenchido por flexString2.
fname additional.fields (com chave fname) Adicionado como um campo extra. Também usado como parte das informações do arquivo em metadata.description para alguns eventos.
host.architecture target.asset.hardware.cpu_platform Mapeado diretamente.
host.hostname target.asset.asset_id Usado como parte do ID do recurso de destino (Host Id: {host.hostname}). Também mapeado para target.hostname.
host.id target.asset.asset_id Usado como parte do ID do recurso de destino (Host Id: {host.id}).
host.ip target.asset.ip Mapeado diretamente.
host.mac target.mac Mapeado diretamente.
host.name target.hostname Mapeado diretamente.
host.os.build target.platform_patch_level Mapeado diretamente.
host.os.kernel target.platform_patch_level Adicionado ao target.platform_patch_level.
host.os.platform target.platform Mapeado para o valor de enumeração WINDOWS.
host.os.type target.platform Mapeado para o valor de enumeração WINDOWS.
host.os.version target.platform_version Mapeado diretamente.
log.file.path target.file.full_path Mapeado diretamente.
metadata.event_type metadata.event_type Defina como GENERIC_EVENT para registros CEF e SYSTEM_AUDIT_LOG_UNCATEGORIZED para registros JSON.
metadata.log_type metadata.log_type Defina como CB_EDR.
metadata.product_log_id metadata.product_log_id Mapeado de externalId para registros do CEF. Não se aplica a registros JSON.
metadata.product_name metadata.product_name Defina como App Control para registros CEF e CB_APP_CONTROL para registros JSON.
metadata.product_version metadata.product_version Extraídos da mensagem CEF para registros CEF. Mapeado de agent.version para registros JSON.
metadata.vendor_name metadata.vendor_name Defina como Carbon Black.
msg metadata.description, additional.fields Usado para preencher metadata.description e possivelmente outros campos com base na lógica do analisador.
sproc principal.process.command_line Mapeado diretamente.
metadata.url_back_to_product metadata.url_back_to_product Construído usando os campos Bit9Server e HostId para registros JSON. Não aplicável a registros do CEF.
security_result.severity security_result.severity Defina como MEDIUM.
timestamp events.timestamp Mapeado diretamente para registros JSON. Para registros do CEF, a lógica do analisador determina o carimbo de data/hora com base no campo rt do registro bruto, se disponível, ou no collection_time se rt não estiver presente.

Alterações

2022-07-01

  • Melhoria
  • O campo "agent.type" foi associado a "observer.application".
  • Mapeou o campo "agent.name" para "observer.user.userid".
  • O campo "host.name" foi mapeado para "observer.hostname".
  • Os campos "agent.type" e "agent.name" foram mapeados para "observer.asset_id".
  • O campo "agent.ephemeral_id" foi associado a "observer.labels".
  • O campo "host.os.platform" foi mapeado para "target.platform".
  • O campo "host.os.version" foi mapeado para "target.platform_version".
  • O campo "host.os.kernel" foi mapeado para "target.platform_patch_level".
  • O campo "cloud.instance.id" foi mapeado para "principal.resource.product_object_id".
  • Mapeou o campo "cloud.instance.name" para "principal.resource.name".
  • O campo "host.mac" foi mapeado para "target.mac".
  • O campo "host.ip" foi mapeado para "target.asset.ip".
  • O campo "host.id" foi mapeado para "target.asset.asset_id".
  • O campo "host.architecture" foi mapeado para "target.asset.hardware".
  • O campo "message.UserSID" foi mapeado para "principal.user.userid".
  • O campo "message.ProcessPath" foi mapeado para "about.process.command_line".
  • Mapeou os campos "cloud.machine.type" e "cloud.provider" para "principal.resource.attribute.labels".
  • Foram adicionadas verificações condicionais para "message.Bit9Server" e "message.HostId" mapeadas para "metadata.url_back_to_product".

2022-06-22

  • Correção de bugs
  • hostId mapeado para principal.asset_id
  • A combinação mapeada de Bit9Server e HostId para metadata.url_back_to_product

2022-05-19

  • Correção de bugs
  • analisou os registros solicitados no bug
  • Registros de falhas de API analisados

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