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 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:

    • 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.
    • 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 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 enumeração WINDOWS.
Policy additional.fields (com a chave "Política") 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 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 a 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 a 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 ("ID do host: {host.hostname}"). Também mapeado para target.hostname.
host.id target.asset.asset_id Usado como parte do ID do recurso de destino ("ID do host: {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 "Controle de app" 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.