Recolha registos do Proofpoint On-Demand

Compatível com:

Este documento explica como carregar registos do Proofpoint On-Demand para o Google Security Operations através da integração de API incorporada. O analisador extrai campos dos registos JSON, transformando-os no formato UDM do Chronicle. Processa dois formatos de registo principais: um que contém metadados de email e outro que contém detalhes de transações SMTP, usando lógica condicional para analisar os campos adequadamente 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 carateres estranhos e a conversão de datas/horas.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

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

Configure o acesso à API Proofpoint On-Demand

  1. Inicie sessão no portal Proofpoint Admin.
  2. Copie o ID do cluster (apresentado no canto superior direito da interface de gestão, junto ao número da versão).
  3. Aceda a Definições > Gestão de chaves de API.
  4. Clique em Criar novo para abrir a caixa de diálogo Criar nova chave de API.
  5. Introduza um Nome único (por exemplo, Google SecOps Key).
  6. Gere a chave da API.
  7. Selecione Ver detalhes no menu de reticências da nova chave da API.
  8. Copie a chave da API.

Configure feeds

Para configurar um feed, siga estes passos:

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

    • Cabeçalhos HTTP de autenticação: introduza a chave da API Proofpoint no formato Authorization: Bearer {API_KEY} e adicione uma nova linha com os seguintes dados da chave WebSocket: Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==.
    • ID do cluster: introduza o ID do cluster do Proofpoint que copiou anteriormente.
  9. Clicar em Seguinte.

  10. Reveja a configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Tabela de mapeamento do UDM

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

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