Coletar registros do Proofpoint On-Demand

Compatível com:

Esse analisador extrai campos dos registros JSON sob demanda da Proofpoint e os transforma no formato UDM. Ele processa dois formatos de registro principais: um com metadados de e-mail e outro com detalhes da transação SMTP, usando lógica condicional para analisar os campos adequadamente e preencher os campos do UDM com base nos dados disponíveis. O analisador também executa 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 uma instância do Google Security Operations.
  • Verifique se você tem a licença do Proofpoint On Demand Remote Syslog.
  • Verifique se você tem acesso privilegiado ao Proofpoint.

Configurar o acesso à API Proofpoint on Demand

  1. Faça login no portal de administrador da Proofpoint.
  2. Copie o ID do cluster, que aparece na interface de gerenciamento ao lado do número da versão.
  3. Selecione 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.
  6. Gere a chave de API.
  7. Selecione Ver detalhes no menu da nova chave de API.
  8. Copie a chave de API.

Configurar um feed no Google SecOps para ingerir registros do Proofpoint On Demand (PoD)

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed (por exemplo, Registros de PoD).
  4. Selecione API de terceiros como o Tipo de origem.
  5. Selecione Proofpoint On Demand como o tipo de registro.
  6. Clique em Próxima.
  7. Especifique valores para os seguintes parâmetros de entrada:
    • Cabeçalhos HTTP de autenticação: insira a chave da API da Proofpoint no formato key:<value>.
    • ID do cluster: insira o ID do cluster da Proofpoint que você copiou anteriormente.
    • Namespace de recursos: o namespace de recursos.
    • Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
  8. Clique em Próxima.
  9. Revise a configuração do feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento do 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" se torna "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 "NÃO".
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 "Nenhuma".
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 presente.
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 presente.
envelope.rcptsHashed read_only_udm.additional.fields Os endereços de e-mail com hash em envelope.rcptsHashed são adicionados como campos adicionais 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 adicionais 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 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 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 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 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 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 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 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 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 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 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 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 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 "saída", network.direction será definido como "SAÍDA".
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 incluído em <> 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 adicionais 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. Os hashes de arquivos, o tipo MIME, o 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 o 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 "NÃO".
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 "Nenhuma".
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 processar segundos fracionários extras.

Alterações

2024-11-28

  • Melhoria:
  • "msgParts.metadata.company" e "msgParts.metadata.author" foram mapeados para "security_result.detection_fields".
  • O mapeamento duplicado de "email.subject" foi removido.
  • O mapeamento dos campos "filter.modules.dmarc.authResults." foi alterado de "additional.fields" para "security_result.detection_fields".

2024-08-28

  • Melhoria:
  • A chave "security_result.detection_fields" mudou de "filterQid" para "qid".

2024-08-21

  • Melhoria:
  • "metadata.origin.data.cid" foi mapeado para "additional.fields".

2024-07-22

  • Melhoria:
  • Se "about.file.size" for um número inteiro sem sinal válido, mapeie "msgPart.detectedSizeBytes" para "about.file.size".
  • Suporte adicionado para um novo padrão de registros SYSLOG.

2024-07-09

  • Melhoria:
  • "msg.header.x-mailer" foi associado a "additional.fields".

2024-07-09

  • Melhoria:
  • "msg.header.x-mailer" foi associado a "additional.fields".

2023-11-13

  • "Assunto" foi mapeado para "network.email.subject".
  • "messageID" foi mapeado para "network.email.mail_id".
  • "fromAddress" foi mapeado para "network.email.from".
  • "ccAddresses" foi associado a "network.email.cc".
  • "replyToAddress" foi associado a "network.email.reply_to".
  • Mapeamos "toAddresses" para "network.email.to".
  • "sender" foi mapeado para "principal.user.email_addresses".
  • Mapeamos "senderIP" para "principal.ip".
  • Mapeamos "recipient" para "target.user.email_addresses".
  • "spamScore", "phishScore", "threatsInfoMap", "impostorScore", "malwareScore" e "" foram mapeados para "security_result.detection_fields".

2023-10-26

  • "msg.headeparsedAddressesr.from.0" foi associado a "principal.user.email_addresses".
  • Mapeamentos modificados de campos UDM descontinuados para campos alternativos.
  • Foi adicionado o mapeamento de "about.labels" para "about.resource.attribute.labels".
  • Foi adicionado o mapeamento de "principal.labels" para "principal.resource.attribute.labels".

2023-06-05

  • Foi adicionada uma verificação a "msg.header.reply-to.0" antes do mapeamento para a UDM para verificar se é uma matriz de e-mails.
  • Adicionamos a verificação "-1" a "msgPart.detectedSizeBytes" antes do mapeamento para o UDM.

2022-07-14

  • Melhoria para mapear o elemento a seguir para o elemento UDM:
  • Mapeou langs para additional.fields.
  • Definições mapeadas para "security_result.summary".
  • O mecanismo foi mapeado para metadata.product_version.

2022-06-29

  • Melhoria: adição de gsub para remover "<>" dos campos "sm.msgid" e "msg.header.message-id.0" mapeados para "network.email.mail_id".

2022-05-20

  • Melhoria para mapear os seguintes elementos para elementos do UDM:
  • Mapeamos "tls.verify" e "filter.disposition" para "security_result.action_details".
  • O mapeamento de "filter.modules.dmarc.authResults.result" para "additional.fields".
  • Mapeou "filter.quarantine.module", "filter.quarantine.folder", "filter.quarantine.type", "filter.quarantine.folderId", "filter.modules.spam.scores.overall", "filter.modules.spam.scores.engine", "filter.modules.spam.scores.classifiers.spam", "filter.modules.spam.scores.classifiers.mlxlog", "filter.modules.spam.scores.classifiers.phish", "filter.modules.spam.scores.classifiers.impostor", "filter.modules.spam.scores.classifiers.lowpriority", "filter.modules.spam.scores.classifiers.mlx", "filter.modules.spam.scores.classifiers.bulk", "filter.modules.spam.scores.classifiers.suspect", "filter.modules.spam.scores.classifiers.malware", "filter.modules.spam.scores.classifiers.adult" para "security_result.detection_fields".

2022-04-13

  • Melhoria para mapear o elemento a seguir para o elemento UDM:
  • O mapeamento de filter.modules.av.virusNames para "security_result.threat_name".