Recolha registos do Carbon Black App Control

Compatível com:

Este documento explica como recolher registos do Carbon Black App Control. O analisador suporta os formatos CEF e JSON. Primeiro, tenta analisar a entrada como JSON. Se falhar, trata a entrada como CEF, faz substituições de texto, extrai campos CEF, mapeia-os para UDM e define o tipo de evento como GENERIC_EVENT. Caso contrário, usa um ficheiro de inclusão de mapeamento da UDM específico de JSON separado.

Antes de começar

  • Certifique-se de que tem uma instância do Google Security Operations.
  • Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com systemd.
  • Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
  • Servidor do Carbon Black App Control (CB Protection) (recomendada a versão 8.x ou posterior).
  • Certifique-se de que tem acesso privilegiado ao Carbon Black App Control.

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.

Obtenha o ID de cliente do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte 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 o seguinte comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalação adicionais

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:

    1. Localize o ficheiro config.yaml. Normalmente, encontra-se no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro 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 de cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.

Reinicie o agente do Bindplane para aplicar as alterações

  • Para reiniciar o agente Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o controlo de apps do CB para enviar registos Syslog

  1. Inicie sessão na consola CB App Control com uma conta de administrador.
  2. Aceda a Administração > Configuração do sistema > Registo externo
  3. Na secção Registo de eventos externos:
    • Ativar registo Syslog: selecione a caixa de verificação Syslog ativado.
    • Endereço do servidor: <Bindplane Server IP>.
    • Porta: <Bindplane Server PORT>.
    • Protocolo: selecione TCP.
    • Formato Syslog: selecione JSON.
  4. Em Opções de registo de eventos, selecione os tipos de registos a enviar:
    • Violações de políticas
    • Eventos de monitorização da integridade de ficheiros (FIM)
    • Eventos de autenticação de utilizadores
    • Dados de informações sobre ameaças
  5. Clique em Guardar.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
ABId principal.asset.asset_id O ABId do registo 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 do 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 parênteses retos (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 contribui potencialmente 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 adicional. Também usado como parte das informações de ficheiros em metadata.description para alguns eventos.
FilePath about.file.full_path Mapeado diretamente.
FileThreat additional.fields (com a chave fileThreat) Adicionado como um campo adicional.
FileTrust additional.fields (com a chave fileTrust) Adicionado como um campo adicional.
HostId principal.asset.asset_id Usado para criar o URL de volta para o 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 enum WINDOWS.
Policy additional.fields (com a chave Policy) Adicionado como um campo adicional.
PolicyId additional.fields (com a chave PolicyId) Adicionado como um campo adicional.
ProcessKey additional.fields (com a chave ProcessKey) Adicionado como um campo adicional.
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 adicional.
ProcessTrust additional.fields (com a chave ProcessTrust) Adicionado como um campo adicional.
RuleName additional.fields (com a chave ruleName) Adicionado como um campo adicional.
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 etiqueta 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 registos JSON. Para registos CEF, extraídos da mensagem CEF.
cat security_result.category_details Mapeado diretamente.
cs1 additional.fields (com a chave rootHash ou outra cs1Label) Adicionado como um campo adicional com a chave definida por cs1Label.
cs1Label additional.fields Usado como chave para o campo adicional preenchido por cs1.
cs2 additional.fields (com a chave installerFilename ou outra cs2Label) Adicionado como um campo adicional com a chave definida por cs2Label.
cs2Label additional.fields Usado como chave para o campo adicional preenchido por cs2.
cs3 additional.fields (com a chave Policy ou outra cs3Label) Adicionado como um campo adicional com a chave definida por cs3Label.
cs3Label additional.fields Usado como chave para o campo adicional preenchido por cs3.
cs5 additional.fields (com a chave ruleName ou outra cs5Label) Adicionado como um campo adicional com a chave definida por cs5Label.
cs5Label additional.fields Usado como chave para o campo adicional preenchido por cs5.
cfp1 additional.fields (com a chave fileTrust ou outra cfp1Label) Adicionado como um campo adicional com a chave definida por cfp1Label.
cfp1Label additional.fields Usado como chave para o campo adicional preenchido por cfp1.
cfp2 additional.fields (com a chave processTrust ou outra cfp2Label) Adicionado como um campo adicional com a chave definida por cfp2Label.
cfp2Label additional.fields Usado como chave para o campo adicional 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 adicional.
fileHash about.file.sha256 Mapeado diretamente.
flexString1 additional.fields (com a chave fileThreat ou outra flexString1Label) Adicionado como um campo adicional com a chave definida por flexString1Label.
flexString1Label additional.fields Usado como chave para o campo adicional preenchido por flexString1.
flexString2 additional.fields (com a chave processThreat ou outra flexString2Label) Adicionado como um campo adicional com a chave definida por flexString2Label.
flexString2Label additional.fields Usado como chave para o campo adicional preenchido por flexString2.
fname additional.fields (com a chave fname) Adicionado como um campo adicional. Também usado como parte das informações de ficheiros 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 Anexado ao target.platform_patch_level.
host.os.platform target.platform Mapeado para o valor enum WINDOWS.
host.os.type target.platform Mapeado para o valor enum WINDOWS.
host.os.version target.platform_version Mapeado diretamente.
log.file.path target.file.full_path Mapeado diretamente.
metadata.event_type metadata.event_type Definido como GENERIC_EVENT para registos CEF e SYSTEM_AUDIT_LOG_UNCATEGORIZED para registos JSON.
metadata.log_type metadata.log_type Definido como CB_EDR.
metadata.product_log_id metadata.product_log_id Mapeado a partir de externalId para registos CEF. Não aplicável a registos JSON.
metadata.product_name metadata.product_name Definido como App Control para registos CEF e CB_APP_CONTROL para registos JSON.
metadata.product_version metadata.product_version Extraído da mensagem CEF para registos CEF. Mapeado de agent.version para registos JSON.
metadata.vendor_name metadata.vendor_name Definido como Carbon Black.
msg metadata.description, additional.fields Usado para preencher metadata.description e, potencialmente, campos adicionais 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 com os campos Bit9Server e HostId para registos JSON. Não aplicável a registos CEF.
security_result.severity security_result.severity Definido como MEDIUM.
timestamp events.timestamp Mapeado diretamente para registos JSON. Para registos CEF, a lógica do analisador determina a data/hora com base no campo rt do registo não processado, se disponível, ou no campo collection_time, se rt não estiver presente.

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