Coletar registros do Proofpoint On-Demand

Compatível com:

Este documento explica como ingerir registros do Proofpoint On-Demand no Google Security Operations usando a integração de API integrada. O analisador extrai campos de registros JSON, transformando-os no formato UDM do Chronicle. Ele processa dois formatos de registro principais: um com metadados de e-mail e outro com detalhes de transação SMTP. Ele usa lógica condicional para analisar campos de maneira adequada e preencher os campos do Modelo de Dados Unificado (UDM) com base nos dados disponíveis. O analisador também realiza a limpeza de dados, como a remoção de caracteres estranhos e a conversão de carimbos de data/hora.

Antes de começar

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

  • Instância do Google SecOps
  • Licença do Proofpoint On-Demand Remote Syslog
  • Acesso privilegiado à Proofpoint

Configurar o acesso à API do Proofpoint On-Demand

  1. Faça login no portal Proofpoint Admin.
  2. Copie o ID do cluster, que aparece no canto superior direito da interface de gerenciamento, ao lado do número da versão.
  3. Acesse Configurações > Gerenciamento de chaves de API.
  4. Clique em Criar nova para abrir a caixa de diálogo Criar nova chave de API.
  5. Insira um Nome exclusivo (por exemplo, Google SecOps Key).
  6. Gere a chave de API.
  7. Selecione Ver detalhes no menu de reticências da nova chave de API.
  8. Copie a chave de API.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em "Configurações do SIEM" > "Feeds".

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, PoD Logs).
  5. Selecione API de terceiros como o Tipo de origem.
  6. Selecione o tipo de registro Proofpoint On-Demand.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • Cabeçalhos HTTP de autenticação: insira a chave da API do Proofpoint no formato Authorization: Bearer {API_KEY} e adicione uma nova linha com os seguintes dados de chave do WebSocket: Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==.
    • ID do cluster: insira o ID do cluster do Proofpoint que você copiou antes.
  9. Clique em Próxima.

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

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • Cabeçalhos HTTP de autenticação: insira a chave de API do Proofpoint em um formato Authorization: Bearer {API_KEY} e adicione uma nova linha com os seguintes dados de chave do WebSocket: Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==.
  • ID do cluster: insira o ID do cluster do Proofpoint que você copiou antes.

Opções avançadas

  • Nome do feed:um valor pré-preenchido que identifica o feed.
  • Tipo de origem:método usado para coletar registros no Google SecOps.
  • Namespace do recurso:namespace associado ao feed.
  • Rótulos de ingestão:rótulos aplicados a todos os eventos deste feed.

Tabela de mapeamento da UDM

Campo de registro Mapeamento do UDM Lógica
classification security_result.detection_fields.classification O valor vem diretamente do campo classification no registro bruto.
cluster security_result.detection_fields.cluster O valor vem diretamente do campo cluster no registro bruto.
completelyRewritten security_result.detection_fields.completelyRewritten O valor vem diretamente do campo completelyRewritten no registro bruto.
connection.country principal.location.country_or_region O valor vem diretamente do campo connection.country no registro bruto, a menos que seja "**".
connection.host principal.hostname O valor vem diretamente do campo connection.host no registro bruto.
connection.ip principal.ip O valor vem diretamente do campo connection.ip no registro bruto, se for um endereço IPv4 válido. Ele também é mesclado com senderIP, se presente.
connection.protocol network.application_protocol A parte do protocolo antes dos dois pontos em connection.protocol é extraída usando gsub e mapeada. Por exemplo, "smtp:smtp" vira "SMTP".
connection.tls.inbound.cipher network.tls.cipher O valor vem diretamente do campo connection.tls.inbound.cipher no registro bruto, a menos que seja "NONE".
connection.tls.inbound.version network.tls.version O valor vem diretamente do campo connection.tls.inbound.version no registro bruto, a menos que a criptografia seja "NONE".
envelope.from network.email.from O valor vem diretamente do campo envelope.from no registro bruto. Ele também é substituído por sm.from ou fromAddress, se estiverem presentes.
envelope.rcpts network.email.to Os endereços de e-mail em envelope.rcpts são mesclados no campo network.email.to se forem válidos. Ele também é mesclado com sm.to ou toAddresses, se estiverem presentes.
envelope.rcptsHashed read_only_udm.additional.fields Os endereços de e-mail com hash em envelope.rcptsHashed são adicionados como campos extras com chaves como "toHashed_0", "toHashed_1" etc.
eventTime @timestamp O valor é analisado do campo eventTime usando o formato ISO8601 ou RFC 3339.
eventType security_result.summary O valor vem diretamente do campo eventType no registro bruto.
filter.disposition security_result.action_details O valor vem diretamente do campo filter.disposition no registro bruto, a menos que tls.verify esteja presente.
filter.modules.av.virusNames.0 security_result.threat_name O valor vem diretamente do campo filter.modules.av.virusNames.0 no registro bruto.
filter.modules.dmarc.authResults read_only_udm.additional.fields O método e o resultado de cada entrada em filter.modules.dmarc.authResults são adicionados como campos extras com chaves como "authResultsMethod_0", "authResults_result_0", "authResultsMethod_1" etc.
filter.modules.spam.langs read_only_udm.additional.fields Cada idioma em filter.modules.spam.langs é adicionado como um campo extra com chaves como "lang_0", "lang_1" etc.
filter.modules.spam.safeBlockedListMatches.0.listType security_result.detection_fields.safeBlockedListMatches_listType O valor vem diretamente do campo filter.modules.spam.safeBlockedListMatches.0.listType no registro bruto.
filter.modules.spam.safeBlockedListMatches.0.rule security_result.detection_fields.safeBlockedListMatches_rule O valor vem diretamente do campo filter.modules.spam.safeBlockedListMatches.0.rule no registro bruto.
filter.modules.spam.scores.classifiers.adult security_result.detection_fields.adult O valor vem diretamente do campo filter.modules.spam.scores.classifiers.adult no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.bulk security_result.detection_fields.bulk O valor vem diretamente do campo filter.modules.spam.scores.classifiers.bulk no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.impostor security_result.detection_fields.impostor O valor vem diretamente do campo filter.modules.spam.scores.classifiers.impostor no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.lowpriority security_result.detection_fields.lowpriority O valor vem diretamente do campo filter.modules.spam.scores.classifiers.lowpriority no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.malware security_result.detection_fields.malware O valor vem diretamente do campo filter.modules.spam.scores.classifiers.malware no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.mlx security_result.detection_fields.mlx O valor vem diretamente do campo filter.modules.spam.scores.classifiers.mlx no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.mlxlog security_result.detection_fields.mlxlog O valor vem diretamente do campo filter.modules.spam.scores.classifiers.mlxlog no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.phish security_result.detection_fields.phish O valor vem diretamente do campo filter.modules.spam.scores.classifiers.phish no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.spam security_result.detection_fields.spam O valor vem diretamente do campo filter.modules.spam.scores.classifiers.spam no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.classifiers.suspect security_result.detection_fields.suspect O valor vem diretamente do campo filter.modules.spam.scores.classifiers.suspect no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.engine security_result.detection_fields.engine O valor vem diretamente do campo filter.modules.spam.scores.engine no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.scores.overall security_result.detection_fields.overall O valor vem diretamente do campo filter.modules.spam.scores.overall no registro bruto, se não estiver vazio ou for 0.
filter.modules.spam.version.definitions security_result.summary O valor vem diretamente do campo filter.modules.spam.version.definitions no registro bruto.
filter.modules.spam.version.engine metadata.product_version O valor vem diretamente do campo filter.modules.spam.version.engine no registro bruto.
filter.modules.urldefense.counts.rewritten read_only_udm.additional.fields.urldefenseCountsRewritten O valor vem diretamente do campo filter.modules.urldefense.counts.rewritten no registro bruto.
filter.modules.urldefense.counts.total security_result.detection_fields.urldefense_total O valor vem diretamente do campo filter.modules.urldefense.counts.total no registro bruto.
filter.modules.zerohour.score read_only_udm.additional.fields.zeroHourScore O valor vem diretamente do campo filter.modules.zerohour.score no registro bruto.
filter.origGuid read_only_udm.additional.fields.origGuid O valor vem diretamente do campo filter.origGuid no registro bruto.
filter.qid read_only_udm.additional.fields.filterQid O valor vem diretamente do campo filter.qid no registro bruto.
filter.quarantine.folder security_result.detection_fields.filter_quarantine_folder O valor vem diretamente do campo filter.quarantine.folder no registro bruto.
filter.quarantine.folderId security_result.detection_fields.filter_quarantine_folderId O valor vem diretamente do campo filter.quarantine.quarantine.folderId no registro bruto.
filter.quarantine.module security_result.detection_fields.filter_quarantine_module O valor vem diretamente do campo filter.quarantine.module no registro bruto.
filter.quarantine.rule security_result.detection_fields.filter_quarantine_rule O valor vem diretamente do campo filter.quarantine.rule no registro bruto.
filter.quarantine.type security_result.detection_fields.filter_quarantine_type O valor vem diretamente do campo filter.quarantine.type no registro bruto.
filter.routeDirection network.direction Se filter.routeDirection for "inbound", network.direction será definido como "INBOUND". Se filter.routeDirection for "outbound", network.direction será definido como "OUTBOUND".
filter.routes read_only_udm.additional.fields Cada rota em filter.routes é adicionada como um campo extra com chaves como "filterRoutes_0", "filterRoutes_1" etc.
fromAddress network.email.from Os endereços de e-mail em fromAddress são substituídos no campo network.email.from se forem válidos.
guid metadata.product_log_id O valor vem diretamente do campo guid no registro bruto.
GUID metadata.product_log_id O valor vem diretamente do campo GUID no registro bruto.
headerFrom network.email.from O valor vem diretamente do campo headerFrom no registro bruto.
impostorScore security_result.detection_fields.impostorScore O valor vem diretamente do campo impostorScore no registro bruto.
malwareScore security_result.detection_fields.malwareScore O valor vem diretamente do campo malwareScore no registro bruto.
messageID network.email.mail_id O valor vem diretamente do campo messageID no registro bruto.
messageSize security_result.detection_fields.messageSize O valor vem diretamente do campo messageSize no registro bruto.
messageTime @timestamp O valor é analisado do campo messageTime usando o formato ISO8601 ou RFC 3339.
metadata.customerId principal.labels.customerId O valor vem diretamente do campo metadata.customerId no registro bruto.
metadata.origin.data.agent network.http.user_agent O valor vem diretamente do campo metadata.origin.data.agent no registro bruto.
metadata.origin.data.cid principal.user.userid O valor vem diretamente do campo metadata.origin.data.cid no registro bruto.
metadata.origin.data.version metadata.product_version O valor vem diretamente do campo metadata.origin.data.version no registro bruto.
msg.header.from read_only_udm.additional.fields.msgHeaderFrom O valor vem diretamente do campo msg.header.from.0 no registro bruto.
msg.header.reply-to network.email.reply_to O endereço de e-mail entre <> em msg.header.reply-to.0 é extraído e mapeado.
msg.header.subject network.email.subject O valor vem diretamente do campo msg.header.subject no registro bruto.
msg.header.to read_only_udm.additional.fields.msgHeaderTo O valor vem diretamente do campo msg.header.to no registro bruto.
msg.normalizedHeader.subject network.email.subject O valor vem diretamente do campo msg.normalizedHeader.subject no registro bruto.
msg.parsedAddresses.cc network.email.cc Os endereços de e-mail em msg.parsedAddresses.cc são mesclados no campo network.email.cc se forem válidos.
msg.parsedAddresses.ccHashed read_only_udm.additional.fields Os endereços de e-mail com hash em msg.parsedAddresses.ccHashed são adicionados como campos extras com chaves como "ccHashed_0", "ccHashed_1" etc.
msg.parsedAddresses.from read_only_udm.additional.fields.msgParsedAddressesFrom O valor vem diretamente do campo msg.parsedAddresses.from.0 no registro bruto.
msg.parsedAddresses.from.0 principal.user.email_addresses O valor vem diretamente do campo msg.parsedAddresses.from.0 no registro bruto.
msg.parsedAddresses.fromHashed read_only_udm.additional.fields.fromHashed O valor vem diretamente do campo msg.parsedAddresses.fromHashed.0 no registro bruto.
msg.parsedAddresses.to target.user.email_addresses Os endereços de e-mail em msg.parsedAddresses.to são mesclados no campo target.user.email_addresses se forem válidos.
msgParts read_only_udm.about Vários objetos "about" são criados, um para cada entrada em msgParts. Hashes de arquivo, tipo MIME, tamanho e outros metadados são extraídos.
QID security_result.detection_fields.QID O valor vem diretamente do campo QID no registro bruto.
recipient target.user.email_addresses Os endereços de e-mail em recipient são mesclados no campo target.user.email_addresses se forem válidos.
replyToAddress network.email.reply_to Os endereços de e-mail em replyToAddress são substituídos no campo network.email.reply_to se forem válidos.
sender principal.user.email_addresses O valor vem diretamente do campo sender no registro bruto, se for um endereço de e-mail válido.
senderIP principal.ip O valor vem diretamente do campo senderIP no registro bruto.
sm.from network.email.from O valor vem diretamente do campo sm.from no registro bruto.
sm.msgid network.email.mail_id O valor vem diretamente do campo sm.msgid no registro bruto, depois de remover "<" e ">".
sm.proto network.application_protocol O valor vem diretamente do campo sm.proto no registro bruto.
sm.qid security_result.detection_fields.QUID O valor vem diretamente do campo sm.qid no registro bruto.
sm.relay intermediary.hostname, intermediary.ip O nome do host e o endereço IP são extraídos de sm.relay usando grok.
sm.stat security_result.detection_fields.Stat A primeira palavra de sm.stat é extraída usando grok e mapeada.
sm.to network.email.to Os endereços de e-mail em sm.to são mesclados no campo network.email.to se forem válidos.
spamScore security_result.detection_fields.spamScore O valor vem diretamente do campo spamScore no registro bruto.
subject network.email.subject O valor vem diretamente do campo subject no registro bruto.
threat security_result.detection_fields.threat O valor vem diretamente do campo threat no registro bruto.
threatsInfoMap security_result.detection_fields Os pares de chave-valor de cada entrada em threatsInfoMap são adicionados como campos de detecção.
threatType security_result.detection_fields.threatType O valor vem diretamente do campo threatType no registro bruto.
tls.cipher network.tls.cipher O valor vem diretamente do campo tls.cipher no registro bruto, a menos que seja "NONE".
tls.verify security_result.action_details O valor vem diretamente do campo tls.verify no registro bruto.
tls.version network.tls.version O valor vem diretamente do campo tls.version no registro bruto, a menos que a criptografia seja "NONE".
toAddresses network.email.to Os endereços de e-mail em toAddresses são mesclados no campo network.email.to se forem válidos.
ts @timestamp O valor é analisado do campo ts usando o formato ISO8601 ou RFC 3339, após algum pré-processamento para lidar com segundos fracionários extras.

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