Recolha registos do Darktrace

Compatível com:

Este documento explica como carregar registos do Darktrace para o Google Security Operations através de um agente do Bindplane. Este analisador extrai primeiro campos comuns de mensagens syslog e, em seguida, usa a lógica condicional para processar registos do Darktrace formatados em CEF e JSON. Mapeia os campos extraídos para o esquema do modelo de dados unificado (UDM), enriquecendo os dados com o contexto de segurança e padronizando a categorização de eventos para análise a jusante.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Windows 2016 ou posterior, ou anfitrião Linux com systemd
  • Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
  • Acesso privilegiado ao Darktrace

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

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

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

  1. Aceda ao ficheiro de configuração:
    • 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.
    • 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: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 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 Bindlane para aplicar as alterações

  • 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, pode usar a consola Services ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure o Syslog no Darktrace

  1. Inicie sessão na IU Web do Darktrace.
  2. Aceda a Administração > Configuração do sistema.
  3. Clique em Validar definições de alerta.
  4. Indique os seguintes detalhes de configuração:
    • Alertas Syslog CEF: selecione Verdadeiro.
    • Servidor Syslog CEF: introduza o endereço IP do Bindplane.
    • Porta do servidor Syslog CEF: introduza o número da porta do Bindplane (por exemplo, 10282).
    • CEF Syslog TCP Alert: selecione Verdadeiro.
  5. Clique em Guardar.

Tabela de mapeamento do UDM

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