Coletar registros do Tanium Threat Response
Este documento explica como ingerir registros do Tanium Threat Response no Google Security Operations usando a funcionalidade nativa de exportação do AWS S3 do Tanium Connect. O Tanium Threat Response gera alertas de detecção de ameaças, descobertas de investigações e dados de resposta a incidentes no formato JSON, que podem ser exportados diretamente para o S3 usando o Tanium Connect sem exigir funções Lambda personalizadas. O analisador transforma dados JSON brutos do Tanium Threat Response em um modelo de dados unificado (UDM). Primeiro, ele tenta analisar a mensagem recebida como JSON, processa possíveis erros e extrai e mapeia campos relevantes para a estrutura da UDM, incluindo detalhes sobre o host, o usuário, o processo, a atividade de rede e as descobertas de segurança afetados.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Tanium Core Platform 7.0 ou mais recente
- O módulo Tanium Threat Response instalado e configurado
- Módulo Tanium Connect instalado com uma licença válida
- Tanium Direct Connect 1.9.30 ou mais recente para recursos de investigação
- Acesso privilegiado ao Tanium Console com direitos administrativos
- Acesso privilegiado à AWS (S3, IAM)
Configurar a conta de serviço do Tanium Threat Response
- Faça login no Tanium Console.
- Acesse Módulos > Resposta a ameaças.
- Clique em Configurações no canto superior direito.
- Na seção Conta de serviço, configure o seguinte:
- Usuário da conta de serviço: selecione um usuário com as permissões adequadas de resposta a ameaças.
- Verifique se a conta tem o privilégio de função de usuário de conexão.
- Confirme o acesso aos alertas e dados de investigação da Resposta a ameaças.
- Clique em Salvar para aplicar a configuração da conta de serviço.
Coletar os pré-requisitos do Tanium Threat Response
- Faça login no Tanium Console como administrador.
- Acesse Administração > Permissões > Usuários.
- Crie ou identifique um usuário da conta de serviço com os seguintes papéis:
- Função Administrador de resposta a ameaças ou Usuário somente leitura de resposta a ameaças.
- Privilégio da função Usuário de conexão.
- Acesso a grupos de computadores monitorados (recomendado: grupo Todos os computadores).
- Permissão Ler pergunta salva para conjuntos de conteúdo da resposta a ameaças.
Configurar o bucket do AWS S3 e o IAM para o Google SecOps
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket
- Salve o Nome e a Região do bucket para referência futura (por exemplo,
tanium-threat-response-logs
). - Crie um usuário seguindo este guia: Como criar um usuário do IAM.
- Selecione o usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como o Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para uso posterior.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione a política AmazonS3FullAccess.
- Clique em Próxima.
- Clique em Adicionar permissões
Configurar o destino do AWS S3 do Tanium Connect
- Faça login no Tanium Console.
- Acesse Módulos > Conectar.
- Clique em Criar conexão.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome descritivo. Por exemplo,
Threat Response Alerts to S3 for SecOps
. - Descrição: descrição opcional (por exemplo,
Export threat detection alerts and investigation findings to AWS S3 for Google SecOps ingestion
). - Ativar: selecione para ativar a conexão e executá-la conforme programado.
- Nome: insira um nome descritivo. Por exemplo,
- Clique em Próxima.
Configurar a origem da conexão
- Na seção Origem, forneça os seguintes detalhes de configuração:
- Tipo de origem: selecione Pergunta salva.
- Pergunta salva: selecione uma das seguintes perguntas salvas relacionadas à resposta a ameaças:
- Resposta a ameaças - alertas para alertas de detecção de ameaças.
- Resposta a ameaças - Resultados da investigação para descobertas da investigação.
- Resposta a ameaças: correspondências de inteligência para correspondências de inteligência contra ameaças.
- Resposta a ameaças - Atividade do endpoint para atividades suspeitas no endpoint.
- Resposta a ameaças: conexões de rede para ameaças com base em rede.
- Grupo de computadores: selecione Todos os computadores ou grupos específicos para monitorar.
- Intervalo de atualização: defina o intervalo adequado para a coleta de dados (por exemplo, 10 minutos para alertas de ameaças).
- Clique em Próxima.
Configurar o destino do AWS S3
- Na seção Destino, forneça os seguintes detalhes de configuração:
- Tipo de destino: selecione AWS S3.
- Nome do destino: insira um nome exclusivo (por exemplo,
Google SecOps ThreatResponse S3 Destination
). - Chave de acesso da AWS: insira a chave de acesso da AWS do arquivo CSV baixado na etapa de configuração do AWS S3.
- Chave de acesso secreta da AWS: insira a chave de acesso secreta da AWS do arquivo CSV baixado na etapa de configuração do AWS S3.
- Nome do bucket: insira o nome do bucket do S3 (por exemplo,
tanium-threat-response-logs
). - Região: selecione a região da AWS em que o bucket do S3 está localizado.
- Prefixo da chave: insira um prefixo para os objetos do S3 (por exemplo,
tanium/threat-response/
).
- Clique em Próxima.
Configurar filtros
- Na seção Filtros, configure as opções de filtragem de dados:
- Enviar apenas novos itens: selecione essa opção para enviar apenas novos alertas de ameaça desde a última exportação.
- Filtros de coluna: adicione filtros com base em atributos de alerta específicos, se necessário. Por exemplo, filtre por gravidade do alerta, tipo de ameaça ou status da investigação.
- Clique em Próxima.
Formatar dados para o AWS S3
- Na seção Formato, configure o formato dos dados:
- Formato: selecione JSON.
- Opções:
- Incluir cabeçalhos: desmarque para evitar cabeçalhos na saída JSON.
- Incluir células vazias: selecione de acordo com sua preferência.
- Opções avançadas:
- Nomeação de arquivos: use a nomeação padrão com base no carimbo de data/hora.
- Compactação: selecione Gzip para reduzir os custos de armazenamento e o tempo de transferência.
- Clique em Próxima.
Programar a conexão
- Na seção Programação, configure a programação de exportação:
- Ativar programação: selecione para ativar as exportações automáticas programadas.
- Tipo de programação: selecione Recorrente.
- Frequência: selecione A cada 10 minutos para receber alertas de resposta a ameaças em tempo hábil.
- Horário de início: defina o horário de início adequado para a primeira exportação.
- Clique em Próxima.
Salvar e verificar conexão
- Revise a configuração da conexão na tela de resumo.
- Clique em Salvar para criar a conexão.
- Clique em Testar conexão para verificar a configuração.
- Se o teste for bem-sucedido, clique em Executar agora para fazer uma exportação inicial.
- Monitore o status da conexão na página Visão geral do Connect.
Configurar um feed no Google SecOps para ingerir registros do Tanium Threat Response
- Acesse Configurações do SIEM > Feeds.
- Clique em + Adicionar novo feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Tanium Threat Response logs
). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Tanium Threat Response como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do S3:
s3://tanium-threat-response-logs/tanium/threat-response/
- Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
- Idade máxima do arquivo: inclui arquivos modificados no último número de dias. O padrão é de 180 dias.
- ID da chave de acesso: chave de acesso do usuário com acesso ao bucket do S3.
- Chave de acesso secreta: chave secreta do usuário com acesso ao bucket do S3.
- Namespace do recurso: o namespace do recurso.
- Rótulos de ingestão: o rótulo aplicado aos eventos deste feed.
- URI do S3:
- Clique em Próxima.
- Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
ID do alerta | security_result.rule_instance | O valor desse campo é extraído do campo "ID do alerta" no registro bruto. |
IP do computador | principal.ip | O valor desse campo é extraído do campo "IP do computador" no registro bruto. |
IP do computador | target.ip | O valor desse campo é extraído do campo "IP do computador" no registro bruto. |
Nome do computador | principal.hostname | O valor desse campo é extraído do campo "Nome do computador" no log bruto. |
Nome do computador | target.hostname | O valor desse campo é extraído do campo "Nome do computador" no log bruto. |
ID | target.resource.attribute.labels | O valor desse campo é extraído do campo "id" no registro bruto. A chave é codificada como "id". |
ID da Intel | security_result.rule_id | O valor desse campo é extraído do campo "Intel Id" no registro bruto. |
Marcadores da Intel | security_result.description | O valor desse campo é extraído do campo "Intel Labels" no registro bruto. |
Nome da Intel | security_result.summary | O valor desse campo é extraído do campo "Intel Name" no registro bruto. |
Nome da Intel | security_result.threat_name | O valor desse campo é extraído do campo "Intel Name" no registro bruto. |
Tipo de inteligência | security_result.rule_type | O valor desse campo é extraído do campo "Intel Type" no registro bruto. |
MatchDetails.finding.system_info.bits | principal.asset.platform_software.bits | O valor desse campo é extraído do campo "MatchDetails.finding.system_info.bits" no registro bruto. |
MatchDetails.finding.system_info.os | principal.asset.platform_software.platform_version | O valor desse campo é extraído do campo "MatchDetails.finding.system_info.os" no registro bruto. |
MatchDetails.finding.system_info.patch_level | principal.asset.platform_software.platform_patch_level | O valor desse campo é extraído do campo "MatchDetails.finding.system_info.patch_level" no registro bruto. |
MatchDetails.finding.system_info.platform | principal.asset.platform_software.platform | O valor desse campo é extraído do campo "MatchDetails.finding.system_info.platform" no registro bruto. |
MatchDetails.match.contexts.0.event.registrySet.keyPath | target.registry.registry_key | O valor desse campo é extraído do campo "MatchDetails.match.contexts.0.event.registrySet.keyPath" no registro bruto. |
MatchDetails.match.contexts.0.event.registrySet.valueName | target.registry.registry_value_name | O valor desse campo é extraído do campo "MatchDetails.match.contexts.0.event.registrySet.valueName" no registro bruto. |
MatchDetails.match.properties.args | security_result.about.process.command_line | O valor desse campo é extraído do campo "MatchDetails.match.properties.args" no registro bruto. |
MatchDetails.match.properties.file.fullpath | target.process.file.full_path | O valor desse campo é extraído do campo "MatchDetails.match.properties.file.fullpath" no registro bruto. |
MatchDetails.match.properties.file.md5 | target.process.file.md5 | O valor desse campo é extraído do campo "MatchDetails.match.properties.file.md5" no registro bruto. |
MatchDetails.match.properties.file.sha1 | target.process.file.sha1 | O valor desse campo é extraído do campo "MatchDetails.match.properties.file.sha1" no registro bruto. |
MatchDetails.match.properties.file.sha256 | target.process.file.sha256 | O valor desse campo é extraído do campo "MatchDetails.match.properties.file.sha256" no registro bruto. |
MatchDetails.match.properties.fullpath | target.process.file.full_path | O valor desse campo é extraído do campo "MatchDetails.match.properties.fullpath" no registro bruto. |
MatchDetails.match.properties.local_port | principal.port | O valor desse campo é extraído do campo "MatchDetails.match.properties.local_port" no registro bruto. |
MatchDetails.match.properties.md5 | target.process.file.md5 | O valor desse campo é extraído do campo "MatchDetails.match.properties.md5" no registro bruto. |
MatchDetails.match.properties.parent.args | security_result.about.process.command_line | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.args" no registro bruto. |
MatchDetails.match.properties.parent.file.fullpath | target.process.parent_process.file.full_path | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.file.fullpath" no registro bruto. |
MatchDetails.match.properties.parent.file.md5 | target.process.parent_process.file.md5 | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.file.md5" no registro bruto. |
MatchDetails.match.properties.parent.parent.file.fullpath | target.process.parent_process.parent_process.file.full_path | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.file.fullpath" no registro bruto. |
MatchDetails.match.properties.parent.parent.file.md5 | target.process.parent_process.parent_process.file.md5 | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.file.md5" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.file.full_path | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.file.fullpath" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.file.md5 | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.file.md5" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.parent_process.file.full_path | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.parent.file.fullpath" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.parent_process.file.md5 | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.parent.file.md5" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.file.full_path | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.parent.parent.file.fullpath" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.file.md5 | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.parent.parent.file.md5" no registro bruto. |
MatchDetails.match.properties.parent.pid | target.process.parent_process.pid | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.pid" no registro bruto. |
MatchDetails.match.properties.parent.parent.pid | target.process.parent_process.parent_process.pid | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.pid" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.pid | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.pid" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.parent_process.pid | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.parent.pid" no registro bruto. |
MatchDetails.match.properties.parent.parent.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.pid | O valor desse campo é extraído do campo "MatchDetails.match.properties.parent.parent.parent.parent.parent.pid" no registro bruto. |
MatchDetails.match.properties.pid | target.process.pid | O valor desse campo é extraído do campo "MatchDetails.match.properties.pid" no registro bruto. |
MatchDetails.match.properties.protocol | network.ip_protocol | O valor desse campo é extraído do campo "MatchDetails.match.properties.protocol" no registro bruto. |
MatchDetails.match.properties.remote_ip | target.ip | O valor desse campo é extraído do campo "MatchDetails.match.properties.remote_ip" no registro bruto. |
MatchDetails.match.properties.remote_port | target.port | O valor desse campo é extraído do campo "MatchDetails.match.properties.remote_port" no registro bruto. |
MatchDetails.match.properties.sha1 | target.process.file.sha1 | O valor desse campo é extraído do campo "MatchDetails.match.properties.sha1" no registro bruto. |
MatchDetails.match.properties.sha256 | target.process.file.sha256 | O valor desse campo é extraído do campo "MatchDetails.match.properties.sha256" no registro bruto. |
MatchDetails.match.properties.user | target.administrative_domain | O nome de domínio é extraído do campo "MatchDetails.match.properties.user" no registro bruto procurando um caractere de barra invertida (""). Os caracteres antes da barra invertida são considerados o nome de domínio. |
MatchDetails.match.properties.user | target.user.userid | O nome de usuário é extraído do campo "MatchDetails.match.properties.user" no registro bruto procurando um caractere de barra invertida (""). Os caracteres após a barra invertida são considerados o nome de usuário. |
Técnicas do MITRE | security_result.threat_id | O valor desse campo é extraído do campo "Técnicas da MITRE" no registro bruto. |
params | security_result.detection_fields | O valor desse campo é extraído do campo "params" no registro bruto. A chave é codificada como "params_" concatenada com o índice do parâmetro. |
Carimbo de data/hora | metadata.event_timestamp | O valor desse campo é extraído do campo "Timestamp" no registro bruto. |
N/A | is_alert | Esse campo é codificado como "true" se o campo "IP do computador" no registro bruto não estiver vazio. |
N/A | metadata.log_type | Esse campo está fixado no código como "TANIUM_THREAT_RESPONSE". |
N/A | metadata.product_event_type | Esse campo está fixado no código como "Tanium Signal". |
N/A | metadata.product_name | Esse campo está fixado no código como "Resposta a ameaças". |
N/A | metadata.vendor_name | Esse campo está fixado no código como "Tanium". |
N/A | network.http.method | Esse campo é codificado como "POST" se o valor do campo "method" no registro bruto for "submit". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.