Coletar registros do Tanium Stream
Neste documento, explicamos como ingerir registros do Tanium Stream no Google Security Operations usando a funcionalidade nativa de exportação do AWS S3 do Tanium Connect. O Tanium Stream fornece telemetria de endpoint em tempo real, dados de busca de ameaças e análises comportamentais no formato JSON, que podem ser exportados diretamente para o S3 usando o Tanium Connect sem a necessidade de funções Lambda personalizadas. O analisador transforma registros JSON brutos do Tanium Stream em um modelo de dados unificado (UDM). Primeiro, ele normaliza os campos comuns e, em seguida, aplica uma lógica específica com base em "logType" ou "eventType" para mapear informações relevantes nos campos de UDM apropriados, processando vários tipos de eventos, como conexões de rede, logins de usuários, inicializações de processos e modificações de arquivos.
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
- Módulo Tanium Stream instalado e configurado
- Módulo Tanium Connect instalado com licença válida
- Tanium Threat Response 3.4.346 ou posterior (se estiver usando a integração com o TR)
- Acesso privilegiado ao console do Tanium com direitos administrativos
- Acesso privilegiado à AWS (S3, IAM)
Configurar a conta de serviço do Tanium Stream
- Faça login no console do Tanium.
- Acesse Módulos > Stream.
- 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 do Stream.
- Verifique se a conta tem o privilégio de papel de usuário do Connect.
- Confirme o acesso às fontes de dados e aos endpoints do Stream.
- Clique em Salvar para aplicar a configuração da conta de serviço.
Coletar pré-requisitos do Tanium Stream
- Faça login no Console do Tanium 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:
- Papel de Administrador de stream ou Usuário com acesso somente leitura de stream.
- Privilégio de função Conectar usuário.
- Acesso aos grupos de computadores monitorados (recomendado: grupo Todos os computadores).
- Permissão Ler pergunta salva para conjuntos de conteúdo do Stream.
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-stream-logs). - Crie um usuário seguindo este guia do usuário: 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 console do Tanium.
- Acesse Módulos > Conectar.
- Clique em Criar conexão.
- Informe os seguintes detalhes de configuração:
- Nome: insira um nome descritivo (por exemplo,
Stream Telemetry to S3 for SecOps). - Descrição: descrição opcional (por exemplo,
Export endpoint telemetry and threat hunting data to AWS S3 for Google SecOps ingestion). - Ativar: selecione para ativar a execução da conexão de acordo com a programação.
- 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 ao Stream:
- Stream - Eventos de endpoint para telemetria de endpoint em tempo real.
- Stream - Eventos de rede para monitoramento de atividade da rede.
- Stream - Process Events para rastreamento de execução de processos.
- Stream - Eventos de arquivo para atividade do sistema de arquivos.
- Stream - Dados de busca de ameaças para análise comportamental.
- Grupo de computadores: selecione Todos os computadores ou grupos específicos para monitorar.
- Intervalo de atualização: defina um intervalo adequado para a coleta de dados (por exemplo, 5 minutos para telemetria em tempo real).
- 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 Stream S3 Destination). - Chave de acesso da AWS: insira a chave de acesso da AWS do arquivo CSV salvo 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 salvo na etapa de configuração do AWS S3.
- Nome do bucket: insira o nome do bucket do S3 (por exemplo,
tanium-stream-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/stream/).
- Clique em Próxima.
Configurar filtros
- Na seção Filtros, configure as opções de filtragem de dados:
- Enviar apenas itens novos: selecione essa opção para enviar apenas novos dados de telemetria desde a última exportação.
- Filtros de coluna: adicione filtros com base em atributos de eventos específicos, se necessário (por exemplo, filtre por tipo de evento, nome do processo ou indicadores de ameaça).
- Clique em Próxima.
Formatar dados para o AWS S3
- Na seção Formato, configure o formato de dados:
- Formato: selecione JSON.
- Opções:
- Incluir cabeçalhos: desmarque para evitar cabeçalhos na saída JSON.
- Incluir células vazias: selecione com base na sua preferência.
- Opções avançadas:
- Nome do arquivo: use a nomenclatura padrão baseada em 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 programadas automáticas.
- Tipo de programação: selecione Recorrente.
- Frequência: selecione A cada 5 minutos para dados de telemetria quase em tempo real.
- 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 realizar 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 Stream
- Acesse Configurações > Gerenciamento de dados > Feeds. Se você estiver em uma plataforma somente SIEM, acesse Configurações > Feeds.
- Clique em + Adicionar novo feed de notícias.
- No campo Nome do feed, insira um nome para o feed (por exemplo,
Tanium Stream logs). - Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Tanium Stream como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- URI do S3:
s3://tanium-stream-logs/tanium/stream/ - Opções de exclusão da origem: selecione a opção de exclusão de acordo com sua preferência.
- Idade máxima do arquivo: inclua arquivos modificados nos últimos dias. O padrão é 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 desse feed.
- URI do S3:
- Clique em Próxima.
- Revise a configuração do novo feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento de UDM
| Campo de registro | mapeamento de UDM | Lógica |
|---|---|---|
| additional.event__AlgorithmName | additional.fields.key: eventAlgorithmName additional.fields.value.string_value: %{additional.eventAlgorithmName} |
Valor extraído diretamente do campo de registro bruto additional.event__AlgorithmName. |
| additional.event__AuthenticationPackageName | target.resource.name: %{additional.event__AuthenticationPackageName} | Valor extraído diretamente do campo de registro bruto additional.event__AuthenticationPackageName. |
| additional.event__CallerProcessId | principal.process.pid: %{additional.event__CallerProcessId} | Valor extraído diretamente do campo de registro bruto additional.event__CallerProcessId. |
| additional.event__CallerProcessName | principal.process.file.fullpath: %{additional.event_CallerProcessName} | Valor extraído diretamente do campo de registro bruto additional.event__CallerProcessName. |
| additional.event__ClientProcessId | principal.process.pid: %{additional.event__ClientProcessId} | Valor extraído diretamente do campo de registro bruto additional.event__ClientProcessId. |
| additional.event__ClientProcessStartKey | additional.fields.key: eventClientProcessStartKey additional.fields.value.string_value: %{additional.eventClientProcessStartKey} |
Valor extraído diretamente do campo de registro bruto additional.event__ClientProcessStartKey. |
| additional.event__CommandLine | target.process.commandline: %{additional.event_CommandLine} | Valor extraído diretamente do campo de registro bruto additional.event__CommandLine. |
| additional.event__ElevatedToken | additional.fields.key: event__ElevatedToken additional.fields.value.string_value: Yes/No |
Valor extraído diretamente do campo de registro bruto additional.event__ElevatedToken.Se o valor for "%%1842", ele será substituído por "Sim". Se o valor for "%%1843", ele será substituído por "Não". |
| additional.event__FQDN | principal.hostname: %{additional.event__FQDN} | Valor extraído diretamente do campo de registro bruto additional.event__FQDN. |
| additional.event__FailureReason | additional.fields.key: eventFailureReason additional.fields.value.string_value: %{additional.eventFailureReason} |
Valor extraído diretamente do campo de registro bruto additional.event__FailureReason. |
| additional.event__ImpersonationLevel | additional.fields.key: eventImpersonationLevel additional.fields.value.string_value: %{additional.eventImpersonationLevel} |
Valor extraído diretamente do campo de registro bruto additional.event__ImpersonationLevel. |
| additional.event__IpAddress | target.ip: %{additional.event__IpAddress} | Valor extraído diretamente do campo de registro bruto additional.event__IpAddress. |
| additional.event__IpPort | target.port: %{additional.event__IpPort} | Valor extraído diretamente do campo de registro bruto additional.event__IpPort e convertido em um número inteiro. |
| additional.event__KeyLength | additional.fields.key: eventKeyLength additional.fields.value.string_value: %{additional.eventKeyLength} |
Valor extraído diretamente do campo de registro bruto additional.event__KeyLength. |
| additional.event__KeyName | additional.fields.key: eventKeyName additional.fields.value.string_value: %{additional.eventKeyName} |
Valor extraído diretamente do campo de registro bruto additional.event__KeyName. |
| additional.event__KeyType | additional.fields.key: eventKeyType additional.fields.value.string_value: %{additional.eventKeyType} |
Valor extraído diretamente do campo de registro bruto additional.event__KeyType. |
| additional.event__LmPackageName | additional.fields.key: eventLmPackageName additional.fields.value.string_value: %{additional.eventLmPackageName} |
Valor extraído diretamente do campo de registro bruto additional.event__LmPackageName. |
| additional.event__LogonGuid | target.resource.product_objectid: %{additional.event_LogonGuid} | Valor extraído diretamente do campo de registro bruto additional.event__LogonGuid com as chaves removidas. |
| additional.event__LogonProcessName | target.process.file.fullpath: %{additional.event_LogonProcessName} | Valor extraído diretamente do campo de registro bruto additional.event__LogonProcessName. |
| additional.event__LogonType | extensions.auth.authdetails: Logon Type: %{additional.event_LogonType} | Valor extraído diretamente do campo de registro bruto additional.event__LogonType. |
| additional.event__MandatoryLabel | additional.fields.key: eventMandatoryLabel additional.fields.value.string_value: %{additional.eventMandatoryLabel} |
Valor extraído diretamente do campo de registro bruto additional.event__MandatoryLabel. |
| additional.event__NewProcessId | target.process.pid: %{additional.event__NewProcessId} | Valor extraído diretamente do campo de registro bruto additional.event__NewProcessId. |
| additional.event__NewProcessName | target.process.file.fullpath: %{additional.event_NewProcessName} | Valor extraído diretamente do campo de registro bruto additional.event__NewProcessName. |
| additional.event__ObjectServer | security_result.categorydetails: %{additional.event_ObjectServer} | Valor extraído diretamente do campo de registro bruto additional.event__ObjectServer. |
| additional.event__Operation | additional.fields.key: eventOperation additional.fields.value.string_value: %{additional.eventOperation} |
Valor extraído diretamente do campo de registro bruto additional.event__Operation. |
| additional.event__ParentProcessId | principal.process.parentprocess.pid: %{additional.event_ParentProcessId} | Valor extraído diretamente do campo de registro bruto additional.event__ParentProcessId. |
| additional.event__ParentProcessName | principal.process.parent_process.file.fullpath: %{additional.event_ParentProcessName} | Valor extraído diretamente do campo de registro bruto additional.event__ParentProcessName. |
| additional.event__ProcessId | principal.process.pid: %{additional.event__ProcessId} | Valor extraído diretamente do campo de registro bruto additional.event__ProcessId. |
| additional.event__ProcessName | principal.process.file.fullpath: %{additional.event_ProcessName} | Valor extraído diretamente do campo de registro bruto additional.event__ProcessName. |
| additional.event__PrivilegeList | principal.user.attribute.permissions.name: %{additional.event__PrivilegeList} | Valor extraído diretamente do campo de registro bruto additional.event__PrivilegeList. |
| additional.event__ProviderName | additional.fields.key: eventProviderName additional.fields.value.string_value: %{additional.eventProviderName} |
Valor extraído diretamente do campo de registro bruto additional.event__ProviderName. |
| additional.event__RestrictedAdminMode | additional.fields.key: eventRestrictedAdminMode additional.fields.value.string_value: %{additional.eventRestrictedAdminMode} |
Valor extraído diretamente do campo de registro bruto additional.event__RestrictedAdminMode. |
| additional.event__ReturnCode | additional.fields.key: eventReturnCode additional.fields.value.string_value: %{additional.eventReturnCode} |
Valor extraído diretamente do campo de registro bruto additional.event__ReturnCode. |
| additional.event__RpcCallClientLocality | additional.fields.key: eventRpcCallClientLocality additional.fields.value.string_value: %{additional.eventRpcCallClientLocality} |
Valor extraído diretamente do campo de registro bruto additional.event__RpcCallClientLocality. |
| additional.event__Service | securityresult.description: %{additional.event_Service} | Valor extraído diretamente do campo de registro bruto additional.event__Service. |
| additional.event__Status | additional.fields.key: eventStatus additional.fields.value.string_value: %{additional.eventStatus} |
Valor extraído diretamente do campo de registro bruto additional.event__Status. |
| additional.event__SubStatus | additional.fields.key: eventSubStatus additional.fields.value.string_value: %{additional.eventSubStatus} |
Valor extraído diretamente do campo de registro bruto additional.event__SubStatus. |
| additional.event__SubjectDomainName | principal.administrativedomain: %{additional.event_SubjectDomainName} | Valor extraído diretamente do campo de registro bruto additional.event__SubjectDomainName. |
| additional.event__SubjectLogonId | additional.fields.key: eventSubjectLogonId additional.fields.value.string_value: %{additional.eventSubjectLogonId} |
Valor extraído diretamente do campo de registro bruto additional.event__SubjectLogonId. |
| additional.event__SubjectUserName | principal.user.user_displayname: %{additional.event_SubjectUserName} | Valor extraído diretamente do campo de registro bruto additional.event__SubjectUserName. |
| additional.event__SubjectUserSid | principal.user.windowssid: %{additional.event_SubjectUserSid} | Valor extraído diretamente do campo de registro bruto additional.event__SubjectUserSid. |
| additional.event__TaskContentNew | additional.fields.key: eventTaskContentNew additional.fields.value.string_value: %{additional.eventTaskContentNew} |
Valor extraído diretamente do campo de registro bruto additional.event__TaskContentNew. |
| additional.event__TaskName | additional.fields.key: eventTaskName additional.fields.value.string_value: %{additional.eventTaskName} |
Valor extraído diretamente do campo de registro bruto additional.event__TaskName. |
| additional.event__TargetDomainName | target.administrativedomain: %{additional.event_TargetDomainName} | Valor extraído diretamente do campo de registro bruto additional.event__TargetDomainName. |
| additional.event__TargetLinkedLogonId | additional.fields.key: eventTargetLinkedLogonId additional.fields.value.string_value: %{additional.eventTargetLinkedLogonId} |
Valor extraído diretamente do campo de registro bruto additional.event__TargetLinkedLogonId. |
| additional.event__TargetLogonId | additional.fields.key: eventTargetLogonId additional.fields.value.string_value: %{additional.eventTargetLogonId} |
Valor extraído diretamente do campo de registro bruto additional.event__TargetLogonId. |
| additional.event__TargetOutboundDomainName | additional.fields.key: eventTargetOutboundDomainName additional.fields.value.string_value: %{additional.eventTargetOutboundDomainName} |
Valor extraído diretamente do campo de registro bruto additional.event__TargetOutboundDomainName. |
| additional.event__TargetOutboundUserName | additional.fields.key: eventTargetOutboundUserName additional.fields.value.string_value: %{additional.eventTargetOutboundUserName} |
Valor extraído diretamente do campo de registro bruto additional.event__TargetOutboundUserName. |
| additional.event__TargetSid | target.user.windowssid: %{additional.event_TargetSid} | Valor extraído diretamente do campo de registro bruto additional.event__TargetSid. |
| additional.event__TargetUserName | target.user.userid: %{additional.event__TargetUserName} | Valor extraído diretamente do campo de registro bruto additional.event__TargetUserName. |
| additional.event__TargetUserSid | target.user.windowssid: %{additional.event_TargetUserSid} | Valor extraído diretamente do campo de registro bruto additional.event__TargetUserSid. |
| additional.event__TokenElevationType | additional.fields.key: eventTokenElevationType additional.fields.value.string_value: %{additional.eventTokenElevationType} |
Valor extraído diretamente do campo de registro bruto additional.event__TokenElevationType. |
| additional.event__TransmittedServices | additional.fields.key: eventTransmittedServices additional.fields.value.string_value: %{additional.eventTransmittedServices} |
Valor extraído diretamente do campo de registro bruto additional.event__TransmittedServices. |
| additional.event__VirtualAccount | additional.fields.key: eventVirtualAccount additional.fields.value.string_value: %{additional.eventVirtualAccount} |
Valor extraído diretamente do campo de registro bruto additional.event__VirtualAccount. |
| additional.event__WorkstationName | target.hostname: %{additional.event__WorkstationName} | Valor extraído diretamente do campo de registro bruto additional.event__WorkstationName. |
| additional.event_id | security_result.rule_name: EventID: %{additional.event_id} | Valor extraído diretamente do campo de registro bruto additional.event_id e convertido em uma string. |
| additional.query | network.dns.questions.name: %{additional.query} | Valor extraído diretamente do campo de registro bruto additional.query. |
| additional.response | network.dns.answers.name: %{additional.response} | Valor extraído diretamente do campo de registro bruto additional.response. |
| metadata.description | metadata.description: %{metadata.description} | Valor extraído diretamente do campo de registro bruto metadata.description. |
| metadata.eventTimestamp | metadata.event_timestamp.seconds: Extracted from %{metadata.eventTimestamp} metadata.event_timestamp.nanos: Extracted from %{metadata.eventTimestamp} |
Os segundos e nanossegundos são extraídos do campo de registro bruto metadata.eventTimestamp usando a análise de data. |
| metadata.eventType | metadata.product_event_type: %{metadata.eventType} metadata.event_type: %{metadata.eventType} |
Valor extraído diretamente do campo de registro bruto metadata.eventType. |
| metadata.logType | metadata.product_event_type: %{metadata.logType} metadata.event_type: %{metadata.logType} |
Valor extraído diretamente do campo de registro bruto metadata.logType. |
| network.applicationProtocol | network.application_protocol: %{network.applicationProtocol} | Valor extraído diretamente do campo de registro bruto network.applicationProtocol. |
| network.direction | network.direction: %{network.direction} | Valor extraído diretamente do campo de registro bruto network.direction. |
| network.ipProtocol | network.ip_protocol: %{network.ipProtocol} | Valor extraído diretamente do campo de registro bruto network.ipProtocol. |
| principal.assetId | principal.asset_id: TANIUM:%{principal.assetId} | Valor extraído diretamente do campo de registro bruto principal.assetId e prefixado com "TANIUM:". |
| principal.hostname | principal.hostname: %{principal.hostname} | Valor extraído diretamente do campo de registro bruto principal.hostname. |
| principal.process.companySpecificParentProcessId | principal.process.product_specific_process_id: TANIUM:%{principal.assetId}:%{principal.process.companySpecificParentProcessId} | Valor extraído diretamente do campo de registro bruto principal.process.companySpecificParentProcessId e formatado como "TANIUM:%{principal.assetId}:%{principal.process.companySpecificParentProcessId}". |
| principal.process.companySpecificProcessId | principal.process.product_specific_process_id: TANIUM:%{principal.assetId}:%{principal.process.companySpecificProcessId} | Valor extraído diretamente do campo de registro bruto principal.process.companySpecificProcessId e formatado como "TANIUM:%{principal.assetId}:%{principal.process.companySpecificProcessId}". |
| principal.process.commandLine | target.process.command_line: %{principal.process.commandLine} | Valor extraído diretamente do campo de registro bruto principal.process.commandLine com as aspas duplas removidas e os hífens substituídos por &. |
| principal.process.file.fullPath | target.process.file.full_path: %{principal.process.file.fullPath} | Valor extraído diretamente do campo de registro bruto principal.process.file.fullPath. |
| principal.process.file.md5 | target.process.file.md5: %{principal.process.file.md5} | Valor extraído diretamente do campo de registro bruto principal.process.file.md5 e convertido em letras minúsculas. |
| principal.process.parentPid | principal.process.pid: %{principal.process.parentPid} | Valor extraído diretamente do campo de registro bruto principal.process.parentPid apenas para eventos PROCESS_LAUNCH. |
| principal.process.pid | target.process.pid: %{principal.process.pid} | Valor extraído diretamente do campo de registro bruto principal.process.pid apenas para eventos PROCESS_LAUNCH. |
| principal.process.productSpecificProcessId | principal.process.product_specific_process_id: TANIUM:%{principal.assetId}:%{principal.process.productSpecificProcessId} | Valor extraído diretamente do campo de registro bruto principal.process.productSpecificProcessId e formatado como "TANIUM:%{principal.assetId}:%{principal.process.productSpecificProcessId}". |
| principal.user.groupid | principal.user.group_identifiers: %{principal.user.groupid} | Valor extraído diretamente do campo de registro bruto principal.user.groupid. |
| principal.user.userid | principal.user.userid: %{principal.user.userid} | Valor extraído diretamente do campo de registro bruto principal.user.userid. |
| src.ip | principal.ip: %{src.ip} | Valor extraído diretamente do campo de registro bruto src.ip. |
| src.port | principal.port: %{src.port} | Valor extraído diretamente do campo de registro bruto src.port e convertido em um número inteiro. |
| target.file.fullPath | target.file.full_path: %{target.file.fullPath} | Valor extraído diretamente do campo de registro bruto target.file.fullPath. |
| target.file.md5 | target.file.md5: %{target.file.md5} | Valor extraído diretamente do campo de registro bruto target.file.md5. |
| target.port | target.port: %{target.port} | Valor extraído diretamente do campo de registro bruto target.port e convertido em um número inteiro. |
| target.registry.registryKey | target.registry.registry_key: %{target.registry.registryKey} | Valor extraído diretamente do campo de registro bruto target.registry.registryKey. |
| target.registry.registryValue | target.registry.registry_value_data: %{target.registry.registryValue} | Valor extraído diretamente do campo de registro bruto target.registry.registryValue. |
| target.user.userDisplayName | target.user.user_display_name: %{target.user.userDisplayName} | Valor extraído diretamente do campo de registro bruto target.user.userDisplayName. |
| target.user.windowsSid | target.user.windows_sid: %{target.user.windowsSid} | Valor extraído diretamente do campo de registro bruto target.user.windowsSid. |
| user-agent | network.http.user_agent: %{user-agent} | Valor extraído diretamente do campo de registro bruto user-agent com as aspas duplas removidas. |
| N/A | extensions.auth.auth_mechanism: LOCAL/NETWORK/BATCH/SERVICE/UNLOCK/NETWORK_CLEAR_TEXT/NEW_CREDENTIALS/REMOTE_INTERACTIVE/CACHED_INTERACTIVE/MECHANISM_UNSPECIFIED | Determinado pelo código do analisador com base no valor de additional.event__LogonType. |
| N/A | extensions.auth.type: MACHINE | Adicionado pelo código do analisador para eventos USER_LOGIN e USER_LOGOUT. |
| N/A | metadata.event_type: PROCESS_LAUNCH/NETWORK_CONNECTION/FILE_OPEN/FILE_DELETION/REGISTRY_MODIFICATION/USER_LOGIN/STATUS_UPDATE/USER_LOGOUT/PROCESS_MODULE_LOAD/PROCESS_TERMINATION/USER_CHANGE_PERMISSIONS/SCHEDULED_TASK_MODIFICATION/SCHEDULED_TASK_DISABLE/SCHEDULED_TASK_ENABLE/SCHEDULED_TASK_DELETION/SCHEDULED_TASK_CREATION/PROCESS_UNCATEGORIZED | Determinado pelo código do analisador com base no valor de metadata.logType e additional.event_id. |
| N/A | metadata.log_type: TANIUM_TH | Valor fixado no código adicionado pelo código do analisador. |
| N/A | metadata.product_name: Stream | Valor fixado no código adicionado pelo código do analisador. |
| N/A | metadata.vendor_name: Tanium | Valor fixado no código adicionado pelo código do analisador. |
| N/A | principal.hostname: %{principal_hostname} | Valor extraído de principal.hostname ou additional.event__FQDN. |
| N/A | principal.ip: %{srcIp} | Extraído da mensagem de registro bruta usando grok se src.ip estiver presente. |
| N/A | securityresult.about.resource.name: %{additional.event_AuthenticationPackageName} | Valor extraído diretamente do campo de registro bruto additional.event__AuthenticationPackageName para valores específicos de additional.event_id. |
| N/A | security_result.category: AUTH_VIOLATION | Adicionado pelo código do analisador para valores específicos de additional.event_id. |
| N/A | security_result.rule_name: EventID: %{additional.event_id} | Valor extraído diretamente do campo de registro bruto additional.event_id e convertido em uma string. |
| N/A | target.hostname: %{query_host} | Extraído do campo de registro bruto additional.query se ele tiver um nome de host. |
| N/A | target.ip: %{dstIp} | Extraído da mensagem de registro bruta usando grok se src.ip estiver presente. |
| N/A | target.ip: %{query_ip} | Extraído do campo de registro bruto additional.query se ele tiver um endereço IP. |
| N/A | target.process.command_line: %{principal_process_commandLine} | Valor extraído de principal.process.commandLine se não estiver vazio. |
| N/A | target.process.file.full_path: %{principal_process_file_fullPath} | Valor extraído de principal.process.file.fullPath se não estiver vazio. |
| N/A | target.process.file.md5: %{principal_process_file_md5} | Valor extraído de principal.process.file.md5 se não estiver vazio. |
| N/A | target.process.product_specific_process_id: TANIUM:%{principal.assetId}:%{principal.process.productSpecificProcessId} | Valor extraído de principal.process.productSpecificProcessId e formatado como "TANIUM:%{principal.assetId}:%{principal.process.productSpecificProcessId}". |
| N/A | target.resource.resource_type: TASK | Adicionado pelo código do analisador para valores específicos de additional.event_id. |
| N/A | timestamp.seconds: Extracted from %{metadata.eventTimestamp} timestamp.nanos: Extracted from %{metadata.eventTimestamp} |
Os segundos e nanossegundos são extraídos do campo de registro bruto metadata.eventTimestamp usando a análise de data. |
Registro de alterações
Confira o registro de alterações deste analisador
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.