Coletar registros de DNS passivo

Compatível com:

Este documento explica como ingerir registros de DNS passivo no Google Security Operations usando o Google Cloud Storage V2.

O DNS passivo é uma fonte de dados de inteligência de DNS que captura registros históricos de resolução de DNS para análise de ameaças e investigação de domínio. Como os dados são normalmente coletados e armazenados como arquivos, é necessário fazer o upload desses arquivos para um bucket do Google Cloud Storage (GCS) e configurar um feed do Google SecOps para ingeri-los.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps.
  • Um projeto do Google Cloud com a API Storage do Cloud Storage ativada.
  • Permissões para criar e gerenciar buckets do GCS.
  • Permissões para gerenciar políticas do IAM em buckets do GCS.
  • Acesso a arquivos de dados de DNS passivo (por exemplo, DNSDB, Farsight ou outro provedor de DNS passivo).
  • Dados de DNS passivo exportados em um formato compatível (por exemplo, JSON ou CSV).

Criar um bucket do Google Cloud Storage

  1. Acesse o Console do Google Cloud.
  2. Selecione seu projeto ou crie um.
  3. No menu de navegação, acesse Cloud Storage > Buckets.
  4. Clique em Criar bucket.
  5. Informe os seguintes detalhes de configuração:

    Configuração Valor
    Nome do bucket Insira um nome exclusivo globalmente (por exemplo, passive-dns-logs)
    Tipo de local Escolha com base nas suas necessidades (região, birregional, multirregional)
    Local Selecione o local mais próximo da sua instância do Google SecOps (por exemplo, us-central1)
    Classe de armazenamento Padrão (recomendado para registros acessados com frequência)
    Controle de acesso Uniforme (recomendado)
    Ferramentas de proteção Opcional: ativar o controle de versão de objetos ou a política de retenção
  6. Clique em Criar.

Configurar a exportação automatizada de dados de DNS passivo para o GCS

Os dados de DNS passivo geralmente estão disponíveis como arquivos exportados de um provedor de inteligência de DNS (por exemplo, Farsight DNSDB, DomainTools ou Cisco Umbrella Investigate). Para manter os dados no GCS atualizados, configure um pipeline de exportação automatizado usando uma das abordagens a seguir.

Use o Cloud Build acionado pelo Cloud Scheduler para executar um job em contêineres que busca dados de DNS passivo do seu provedor e os grava no GCS.

  1. Crie uma conta de serviço para o job de exportação:

    1. No Console do GCP, acesse IAM e administrador > Contas de serviço.
    2. Clique em Criar conta de serviço.
    3. Forneça os seguintes detalhes de configuração:
      • Nome da conta de serviço: insira passive-dns-export-sa
      • Descrição da conta de serviço: insira Service account for automated Passive DNS data export to GCS
    4. Clique em Criar e continuar.
    5. Adicione os seguintes papéis:
      • Administrador de objetos do Storage (para gravar arquivos no GCS)
      • Editor do Cloud Build (para executar jobs do Cloud Build)
    6. Clique em Concluído.
  2. Crie um arquivo de configuração do Cloud Build (cloudbuild.yaml):

    steps:
      - name: 'gcr.io/cloud-builders/gcloud'
        entrypoint: 'bash'
        args:
          - '-c'
          - |
            apt-get update && apt-get install -y curl jq
            # Fetch Passive DNS data from your provider
            # Replace with the actual API call for your provider
            # Example for Farsight DNSDB:
            TIMESTAMP=$(date -u +%Y%m%d_%H%M%S)
            curl -s -H "X-API-Key: $${PDNS_API_KEY}" \
              "https://api.dnsdb.info/dnsdb/v2/lookup/rrset/name/*.example.com" \
              -o /workspace/passive_dns_$${TIMESTAMP}.json
            # Upload to GCS
            gcloud storage cp /workspace/passive_dns_$${TIMESTAMP}.json \
              gs://${_BUCKET_NAME}/passive-dns/
    substitutions:
      _BUCKET_NAME: 'passive-dns-logs'
    
  3. Armazene a chave de API como um secret do Secret Manager:

    1. No Console do GCP, acesse Segurança > Secret Manager.
    2. Clique em Criar secret.
    3. Insira pdns-api-key como o nome do secret.
    4. Insira a chave de API do provedor de DNS passivo como o valor do secret.
    5. Clique em Criar.
  4. Crie um job do Cloud Scheduler para acionar o build:

    1. No Console do GCP, acesse o Cloud Scheduler.
    2. Clique em Criar job.
    3. Forneça os seguintes detalhes de configuração:

      Configuração Valor
      Nome passive-dns-export-daily
      Região Selecione a mesma região do bucket do GCS
      Frequência 0 3 * * * (diariamente às 3h UTC)
      Fuso horário UTC (recomendado)
      Tipo de destino HTTP
      URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      Método HTTP POST
      Cabeçalho do Auth Adicionar token OAuth
      Conta de serviço passive-dns-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. Clique em Criar.

Opção 2: Serviço de transferência do Cloud Storage (para data stores locais)

Se os dados de DNS passivo estiverem armazenados em um sistema de arquivos local, use o Serviço de transferência do Cloud Storage com um agente de transferência.

  1. No Console do GCP, acesse o Serviço de transferência do Cloud Storage.
  2. Clique em Criar job de transferência.
  3. Selecione Sistema de arquivos POSIX como a origem.
  4. Siga as instruções para instalar o agente de transferência do Cloud Storage em uma máquina com acesso aos arquivos de dados de DNS passivo.
  5. Configure o job de transferência:

    Configuração Valor
    Diretório de origem Caminho para o diretório que contém arquivos de dados de DNS passivo
    Bucket de destino passive-dns-logs
    Caminho de destino passive-dns/
    Programar Defina uma programação recorrente (por exemplo, diária)
  6. Clique em Criar.

Recuperar a conta de serviço do Google SecOps

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Passive DNS Logs).
  5. Selecione Google Cloud Storage V2 como o Tipo de origem.
  6. Selecione DNS passivo como o Tipo de registro.
  7. Clique em Receber conta de serviço.
  8. Um e-mail exclusivo da conta de serviço será exibido, por exemplo:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Copie esse endereço de e-mail para usar na próxima etapa.

Conceder permissões do IAM à conta de serviço do Google SecOps

A conta de serviço do Google SecOps precisa do papel Leitor de objetos do Storage no bucket do GCS.

  1. Acesse Cloud Storage > Buckets.
  2. Clique no nome do bucket (por exemplo, passive-dns-logs).
  3. Acesse a guia Permissões.
  4. Clique em Conceder acesso.
  5. Forneça os seguintes detalhes de configuração:
    • Adicionar participantes: cole o e-mail da conta de serviço do Google SecOps (por exemplo, chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com).
    • Atribuir papéis: selecione Leitor de objetos do Storage.
  6. Clique em Salvar.

Configurar o feed do Google SecOps

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Passive DNS Logs).
  5. Selecione Google Cloud Storage V2 como o Tipo de origem.
  6. Selecione DNS passivo como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • URL do bucket do Storage: insira o URI do bucket do GCS:

      gs://passive-dns-logs/passive-dns/
      
      • Substitua passive-dns-logs pelo nome do bucket do GCS.
      • Substitua passive-dns pelo caminho do prefixo configurado.
    • Opção de exclusão de origem: selecione a opção de exclusão de acordo com sua preferência:

      • Nunca: nunca exclui arquivos após transferências (recomendado para testes).
      • Excluir arquivos transferidos: exclui arquivos após a transferência.
      • Excluir arquivos transferidos e diretórios vazios: exclui arquivos e diretórios vazios após a transferência.

    • Idade máxima do arquivo: inclui arquivos modificados no último número de dias (o padrão é 180 dias).

    • Namespace do recurso: o namespace do recurso.

    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos desse feed.

  9. Clique em Próxima.

  10. Revise a nova configuração de feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
nome do host intermediary.hostname Valor copiado diretamente
timestamp_s metadata.event_timestamp Analisado como carimbo de data/hora do UNIX
metadata.event_type Definido como "NETWORK_DNS"
network.application_protocol Definido como "DNS"
resposta network.dns.answers.data Valor da resposta após remover o ponto final
ttl network.dns.answers.ttl Convertido para número inteiro
classe network.dns.questions.class Mapeado para valor numérico (1 para IN, 3 para CH, 4 para HS)
consulta network.dns.questions.name Valor da consulta após remover o ponto final
tipo network.dns.questions.type Mapeado do tipo (em maiúsculas) para valor numérico usando o mapeamento de tipo de DNS
cliente principal.ip Valor copiado diretamente
servidor target.ip Valor copiado diretamente
metadata.product_name Definido como "DNS passivo"

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