Coletar registros do Darktrace

Compatível com:

Este documento explica como ingerir registros do Darktrace no Google Security Operations usando um agente do Bindplane. Primeiro, esse analisador extrai campos comuns de mensagens syslog e usa lógica condicional para processar registros do Darktrace formatados em CEF e JSON. Ele mapeia os campos extraídos para o esquema do modelo de dados unificado (UDM), enriquecendo os dados com contexto de segurança e padronizando a categorização de eventos para análise downstream.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps
  • Host Windows 2016 ou mais recente ou Linux com systemd
  • Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
  • Acesso privilegiado ao Darktrace

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

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

Para mais opções de instalação, consulte o guia de instalação.

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

  1. Acesse o arquivo de configuração:
    • 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.
    • 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:10282`
    
    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: DARKTRACE
                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 do cliente real.

  5. 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 Bindlane 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 Syslog no Darktrace

  1. Faça login na UI da Web do Darktrace.
  2. Acesse Administrador > Configuração do sistema.
  3. Clique em Verificar configurações de alerta.
  4. Informe os seguintes detalhes de configuração:
    • Alertas do Syslog CEF: selecione Verdadeiro.
    • Servidor Syslog CEF: insira o endereço IP do Bindplane.
    • Porta do servidor Syslog do CEF: insira o número da porta do Bindplane (por exemplo, 10282).
    • Alerta TCP do Syslog CEF: selecione True.
  5. Clique em Salvar.

Tabela de mapeamento da UDM

Campo de registro Mapeamento da UDM Lógica
darktraceUrl security_result.url_back_to_product O valor é extraído do campo darktraceUrl.
darktrace_host observer.hostname O valor é extraído do campo darktrace_host se não for um endereço IP.
darktrace_ip observer.ip O valor é extraído do campo darktrace_ip.
darktrace_user observer.user.userid O valor é extraído do campo darktrace_user.
description security_result.summary, metadata.description O valor é extraído do campo description.
device.customFields.DT-AUTO.macaddress principal.mac O valor é extraído do campo device.customFields.DT-AUTO.macaddress.
device.did principal.asset.asset_id O valor é extraído do campo device.did, convertido em uma string e prefixado com Device ID:.
device.firstSeen principal.asset.first_seen_time O valor é extraído do campo device.firstSeen, convertido em uma string e analisado como um carimbo de data/hora UNIX em milissegundos.
device.hostname principal.hostname, principal.asset.hostname O valor é extraído do campo device.hostname.
device.ip principal.ip, principal.asset.ip O valor é extraído do campo device.ip se corresponder ao formato de endereço IP.
device.ips.0.subnet additional.fields.subnet O valor é extraído do campo device.ips.0.subnet e tem o prefixo subnet.
device.ips.ip principal.ip, principal.asset.ip O valor é extraído do campo device.ips.ip para cada endereço IP na lista.
device.lastSeen principal.asset.last_discover_time O valor é extraído do campo device.lastSeen, convertido em uma string e analisado como um carimbo de data/hora UNIX em milissegundos.
device.macaddress principal.mac O valor é extraído do campo device.macaddress.
device.objecttype principal.asset.type Se o valor for device, o campo UDM será definido como WORKSTATION.
device.sid principal.resource.attribute.labels.sid O valor é extraído do campo device.sid e convertido em uma string.
device.typelabel principal.resource.attribute.labels.typelabel O valor é extraído do campo device.typelabel.
device.typename principal.resource.attribute.labels.typename O valor é extraído do campo device.typename.
dst target.ip, target.asset.ip O valor é extraído do campo dst.
dpt target.port O valor é extraído do campo dpt e convertido em um número inteiro.
dvc principal.ip, principal.asset.ip Se o valor de dvc for um endereço IP, ele será adicionado ao campo da UDM.
dvchost principal.hostname, principal.asset.hostname O valor é extraído do campo dvchost.
endpoint target.url O valor é extraído do campo endpoint.
event_time metadata.event_timestamp O valor é extraído do campo event_time e analisado como um carimbo de data/hora ISO8601.
externalId metadata.product_log_id O valor é extraído do campo externalId.
incidentEventUrl principal.url O valor é extraído do campo incidentEventUrl.
ip principal.ip, principal.asset.ip O valor é extraído do campo ip se corresponder ao formato de endereço IP.
issue_msg security_result.summary O valor é extraído do campo issue_msg.
mensagem security_result.description O valor é extraído do campo message.
método network.http.method O valor é extraído do campo method.
model.description metadata.description O valor é extraído do campo model.description.
model.name metadata.product_event_type O valor é extraído do campo model.name.
model.now.category security_result.severity Se o valor for critical, o campo UDM será definido como CRITICAL. Se o valor for Informational, o campo UDM será definido como INFORMATIONAL. Se o valor for Suspicious, o campo UDM será definido como HIGH e a categoria será definida como NETWORK_SUSPICIOUS.
model.now.description metadata.description O valor é extraído do campo model.now.description.
model.now.message security_result.description O valor é extraído do campo model.now.message.
model.now.name metadata.product_event_type O valor é extraído do campo model.now.name.
model.now.pid principal.process.pid O valor é extraído do campo model.now.pid e convertido em uma string.
model.now.uuid principal.user.userid O valor é extraído do campo model.now.uuid, e o tipo de evento é definido como USER_UNCATEGORIZED.
model.pid principal.process.pid O valor é extraído do campo model.pid e convertido em uma string.
model.then.description principal.resource.attribute.labels.Model Then Description O valor é extraído do campo model.then.description.
model.then.name principal.resource.attribute.labels.Model Then Name O valor é extraído do campo model.then.name.
model.then.pid principal.resource.attribute.labels.Model Then Pid O valor é extraído do campo model.then.pid e convertido em uma string.
model.then.uuid principal.resource.attribute.labels.Model Then UUID O valor é extraído do campo model.then.uuid.
model.uuid principal.user.userid O valor é extraído do campo model.uuid, e o tipo de evento é definido como USER_UNCATEGORIZED.
relatedBreaches.0.modelName security_result.description O valor é extraído do campo relatedBreaches.0.modelName.
score security_result.priority, security_result.priority_details Se o valor estiver entre 0,8 e 1, a prioridade será definida como HIGH_PRIORITY. Se o valor estiver entre 0,5 e 0,79, a prioridade será definida como MEDIUM_PRIORITY. Se o valor estiver entre 0 e 0,49, a prioridade será definida como LOW_PRIORITY. Os detalhes de prioridade são definidos como Score : seguidos pelo valor de score convertido em uma string.
gravidade, security_result.severity Se o valor for 2, o campo UDM será definido como MEDIUM. Se o valor for maior que 2, o campo UDM será definido como HIGH.
shost principal.hostname, principal.asset.hostname O valor é extraído do campo shost.
smac principal.mac O valor é extraído do campo smac.
src principal.ip, principal.asset.ip O valor é extraído do campo src.
status network.http.response_code O valor é extraído do campo status e convertido em uma string.
resumo metadata.description O valor é extraído do campo summary.
tempo O valor é extraído do campo time, convertido em uma string e analisado como um carimbo de data/hora UNIX em milissegundos.
timestamp O valor é extraído do campo timestamp e analisado como um carimbo de data/hora ISO8601 ou um carimbo de data/hora UNIX em milissegundos.
título security_result.summary O valor é extraído do campo title.
triggeredComponents.ip intermediary.ip O valor é extraído do campo triggeredComponents.ip se corresponder ao formato de endereço IP.
triggeredComponents.port intermediary.port O valor é extraído do campo triggeredComponents.port e convertido em um número inteiro.
nome de usuário principal.user.userid O valor é extraído do campo username.
metadata.vendor_name Defina como DARKTRACE.
metadata.product_name Defina como DCIP.
metadata.log_type Defina como DARKTRACE.
network.ip_protocol Defina como TCP se issue_msg não contiver UDP. Caso contrário, defina como UDP.
security_result.action Defina como BLOCK se status for 401. Caso contrário, defina como ALLOW.
security_result.severity Defina como INFORMATIONAL.
network.application_protocol Defina como HTTP se method não estiver vazio.
metadata.event_type Defina como NETWORK_HTTP se method não estiver vazio. Defina como USER_LOGIN se description contiver logged into \\\\S+ over ssh. Defina como NETWORK_CONNECTION se target_ip não estiver vazio. Caso contrário, defina como STATUS_UPDATE.
extensions.auth.type Defina como MACHINE se description contiver logged into \\\\S+ over ssh.
security_result.category Defina como DATA_EXFILTRATION se issue_msg contiver Exfiltration. Defina como NETWORK_MALICIOUS se issue_msg contiver Compromise. Caso contrário, defina como NETWORK_SUSPICIOUS.

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