Collecter les journaux Proofpoint à la demande

Compatible avec:

Cet analyseur extrait des champs des journaux JSON Proofpoint à la demande et les transforme au format UDM. Il gère deux formats de journal principaux: l'un contenant des métadonnées de messagerie et l'autre des informations sur les transactions SMTP, à l'aide d'une logique conditionnelle pour analyser correctement les champs et renseigner les champs UDM en fonction des données disponibles. L'analyseur effectue également un nettoyage des données, par exemple en supprimant les caractères superflus et en convertissant les codes temporels.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google Security Operations.
  • Assurez-vous de disposer de la licence Proofpoint On Demand Remote Syslog.
  • Assurez-vous de disposer d'un accès privilégié à Proofpoint.

Configurer l'accès à l'API Proofpoint on Demand

  1. Connectez-vous au portail d'administration Proofpoint.
  2. Copiez votre ID de cluster, qui s'affiche dans votre interface de gestion à côté du numéro de version.
  3. Sélectionnez Settings (Paramètres) > API Key Management (Gestion des clés API).
  4. Cliquez sur Créer pour afficher la boîte de dialogue Créer une clé API.
  5. Saisissez un nom unique (par exemple, Google SecOps).
  6. Générez la clé API.
  7. Sélectionnez Afficher les détails dans le menu de la nouvelle clé API.
  8. Copiez la clé API.

Configurer un flux dans Google SecOps pour ingérer les journaux Proofpoint On Demand (PoD)

  1. Accédez à Paramètres du SIEM > Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux de POD).
  4. Sélectionnez API tierce comme type de source.
  5. Sélectionnez Proofpoint On Demand comme type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • En-têtes HTTP d'authentification: saisissez la clé API Proofpoint au format key:<value>.
    • ID de cluster: saisissez l'ID de cluster Proofpoint que vous avez copié précédemment.
    • Espace de noms des éléments: espace de noms des éléments.
    • Libellés d'ingestion: libellé appliqué aux événements de ce flux.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
classification security_result.detection_fields.classification La valeur provient directement du champ classification du journal brut.
cluster security_result.detection_fields.cluster La valeur provient directement du champ cluster du journal brut.
completelyRewritten security_result.detection_fields.completelyRewritten La valeur provient directement du champ completelyRewritten du journal brut.
connection.country principal.location.country_or_region La valeur provient directement du champ connection.country du journal brut, sauf si elle est "**".
connection.host principal.hostname La valeur provient directement du champ connection.host du journal brut.
connection.ip principal.ip La valeur provient directement du champ connection.ip du journal brut, s'il s'agit d'une adresse IPv4 valide. Il est également fusionné avec senderIP, le cas échéant.
connection.protocol network.application_protocol La partie du protocole avant le deux-points dans connection.protocol est extraite à l'aide de gsub et mappée. Par exemple, "smtp:smtp" devient "SMTP".
connection.tls.inbound.cipher network.tls.cipher La valeur provient directement du champ connection.tls.inbound.cipher du journal brut, sauf si elle est "NONE".
connection.tls.inbound.version network.tls.version La valeur provient directement du champ connection.tls.inbound.version dans le journal brut, sauf si le chiffrement est "NONE".
envelope.from network.email.from La valeur provient directement du champ envelope.from du journal brut. Il est également remplacé par sm.from ou fromAddress, le cas échéant.
envelope.rcpts network.email.to Les adresses e-mail de envelope.rcpts sont fusionnées dans le champ network.email.to si elles sont valides. Il est également fusionné avec sm.to ou toAddresses, le cas échéant.
envelope.rcptsHashed read_only_udm.additional.fields Les adresses e-mail hachées dans envelope.rcptsHashed sont ajoutées en tant que champs supplémentaires avec des clés telles que "toHashed_0", "toHashed_1", etc.
eventTime @timestamp La valeur est extraite du champ eventTime au format ISO8601 ou RFC 3339.
eventType security_result.summary La valeur provient directement du champ eventType du journal brut.
filter.disposition security_result.action_details La valeur provient directement du champ filter.disposition dans le journal brut, sauf si tls.verify est présent.
filter.modules.av.virusNames.0 security_result.threat_name La valeur provient directement du champ filter.modules.av.virusNames.0 du journal brut.
filter.modules.dmarc.authResults read_only_udm.additional.fields La méthode et le résultat de chaque entrée dans filter.modules.dmarc.authResults sont ajoutés en tant que champs supplémentaires avec des clés telles que "authResultsMethod_0", "authResults_result_0", "authResultsMethod_1", etc.
filter.modules.spam.langs read_only_udm.additional.fields Chaque langue dans filter.modules.spam.langs est ajoutée en tant que champ supplémentaire avec des clés telles que "lang_0", "lang_1", etc.
filter.modules.spam.safeBlockedListMatches.0.listType security_result.detection_fields.safeBlockedListMatches_listType La valeur provient directement du champ filter.modules.spam.safeBlockedListMatches.0.listType du journal brut.
filter.modules.spam.safeBlockedListMatches.0.rule security_result.detection_fields.safeBlockedListMatches_rule La valeur provient directement du champ filter.modules.spam.safeBlockedListMatches.0.rule du journal brut.
filter.modules.spam.scores.classifiers.adult security_result.detection_fields.adult La valeur provient directement du champ filter.modules.spam.scores.classifiers.adult dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.bulk security_result.detection_fields.bulk La valeur provient directement du champ filter.modules.spam.scores.classifiers.bulk dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.impostor security_result.detection_fields.impostor La valeur provient directement du champ filter.modules.spam.scores.classifiers.impostor dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.lowpriority security_result.detection_fields.lowpriority La valeur provient directement du champ filter.modules.spam.scores.classifiers.lowpriority dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.malware security_result.detection_fields.malware La valeur provient directement du champ filter.modules.spam.scores.classifiers.malware dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.mlx security_result.detection_fields.mlx La valeur provient directement du champ filter.modules.spam.scores.classifiers.mlx dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.mlxlog security_result.detection_fields.mlxlog La valeur provient directement du champ filter.modules.spam.scores.classifiers.mlxlog dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.phish security_result.detection_fields.phish La valeur provient directement du champ filter.modules.spam.scores.classifiers.phish dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.spam security_result.detection_fields.spam La valeur provient directement du champ filter.modules.spam.scores.classifiers.spam dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.classifiers.suspect security_result.detection_fields.suspect La valeur provient directement du champ filter.modules.spam.scores.classifiers.suspect dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.engine security_result.detection_fields.engine La valeur provient directement du champ filter.modules.spam.scores.engine dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.scores.overall security_result.detection_fields.overall La valeur provient directement du champ filter.modules.spam.scores.overall dans le journal brut, s'il n'est pas vide ni égal à 0.
filter.modules.spam.version.definitions security_result.summary La valeur provient directement du champ filter.modules.spam.version.definitions du journal brut.
filter.modules.spam.version.engine metadata.product_version La valeur provient directement du champ filter.modules.spam.version.engine du journal brut.
filter.modules.urldefense.counts.rewritten read_only_udm.additional.fields.urldefenseCountsRewritten La valeur provient directement du champ filter.modules.urldefense.counts.rewritten du journal brut.
filter.modules.urldefense.counts.total security_result.detection_fields.urldefense_total La valeur provient directement du champ filter.modules.urldefense.counts.total du journal brut.
filter.modules.zerohour.score read_only_udm.additional.fields.zeroHourScore La valeur provient directement du champ filter.modules.zerohour.score du journal brut.
filter.origGuid read_only_udm.additional.fields.origGuid La valeur provient directement du champ filter.origGuid du journal brut.
filter.qid read_only_udm.additional.fields.filterQid La valeur provient directement du champ filter.qid du journal brut.
filter.quarantine.folder security_result.detection_fields.filter_quarantine_folder La valeur provient directement du champ filter.quarantine.folder du journal brut.
filter.quarantine.folderId security_result.detection_fields.filter_quarantine_folderId La valeur provient directement du champ filter.quarantine.quarantine.folderId du journal brut.
filter.quarantine.module security_result.detection_fields.filter_quarantine_module La valeur provient directement du champ filter.quarantine.module du journal brut.
filter.quarantine.rule security_result.detection_fields.filter_quarantine_rule La valeur provient directement du champ filter.quarantine.rule du journal brut.
filter.quarantine.type security_result.detection_fields.filter_quarantine_type La valeur provient directement du champ filter.quarantine.type du journal brut.
filter.routeDirection network.direction Si filter.routeDirection est défini sur "inbound" (entrant), network.direction est défini sur "INBOUND". Si filter.routeDirection est "outbound", network.direction est défini sur "OUTBOUND".
filter.routes read_only_udm.additional.fields Chaque itinéraire dans filter.routes est ajouté en tant que champ supplémentaire avec des clés telles que "filterRoutes_0", "filterRoutes_1", etc.
fromAddress network.email.from Les adresses e-mail de fromAddress sont remplacées dans le champ network.email.from si elles sont valides.
guid metadata.product_log_id La valeur provient directement du champ guid du journal brut.
GUID metadata.product_log_id La valeur provient directement du champ GUID du journal brut.
headerFrom network.email.from La valeur provient directement du champ headerFrom du journal brut.
impostorScore security_result.detection_fields.impostorScore La valeur provient directement du champ impostorScore du journal brut.
malwareScore security_result.detection_fields.malwareScore La valeur provient directement du champ malwareScore du journal brut.
messageID network.email.mail_id La valeur provient directement du champ messageID du journal brut.
messageSize security_result.detection_fields.messageSize La valeur provient directement du champ messageSize du journal brut.
messageTime @timestamp La valeur est extraite du champ messageTime au format ISO8601 ou RFC 3339.
metadata.customerId principal.labels.customerId La valeur provient directement du champ metadata.customerId du journal brut.
metadata.origin.data.agent network.http.user_agent La valeur provient directement du champ metadata.origin.data.agent du journal brut.
metadata.origin.data.cid principal.user.userid La valeur provient directement du champ metadata.origin.data.cid du journal brut.
metadata.origin.data.version metadata.product_version La valeur provient directement du champ metadata.origin.data.version du journal brut.
msg.header.from read_only_udm.additional.fields.msgHeaderFrom La valeur provient directement du champ msg.header.from.0 du journal brut.
msg.header.reply-to network.email.reply_to L'adresse e-mail placée entre <> dans msg.header.reply-to.0 est extraite et mappée.
msg.header.subject network.email.subject La valeur provient directement du champ msg.header.subject du journal brut.
msg.header.to read_only_udm.additional.fields.msgHeaderTo La valeur provient directement du champ msg.header.to du journal brut.
msg.normalizedHeader.subject network.email.subject La valeur provient directement du champ msg.normalizedHeader.subject du journal brut.
msg.parsedAddresses.cc network.email.cc Les adresses e-mail de msg.parsedAddresses.cc sont fusionnées dans le champ network.email.cc si elles sont valides.
msg.parsedAddresses.ccHashed read_only_udm.additional.fields Les adresses e-mail hachées dans msg.parsedAddresses.ccHashed sont ajoutées en tant que champs supplémentaires avec des clés telles que "ccHashed_0", "ccHashed_1", etc.
msg.parsedAddresses.from read_only_udm.additional.fields.msgParsedAddressesFrom La valeur provient directement du champ msg.parsedAddresses.from.0 du journal brut.
msg.parsedAddresses.from.0 principal.user.email_addresses La valeur provient directement du champ msg.parsedAddresses.from.0 du journal brut.
msg.parsedAddresses.fromHashed read_only_udm.additional.fields.fromHashed La valeur provient directement du champ msg.parsedAddresses.fromHashed.0 du journal brut.
msg.parsedAddresses.to target.user.email_addresses Les adresses e-mail de msg.parsedAddresses.to sont fusionnées dans le champ target.user.email_addresses si elles sont valides.
msgParts read_only_udm.about Plusieurs objets "à propos" sont créés, un pour chaque entrée dans msgParts. Les hachages de fichier, le type MIME, la taille et d'autres métadonnées sont extraits.
QID security_result.detection_fields.QID La valeur provient directement du champ QID du journal brut.
recipient target.user.email_addresses Les adresses e-mail de recipient sont fusionnées dans le champ target.user.email_addresses si elles sont valides.
replyToAddress network.email.reply_to Les adresses e-mail de replyToAddress sont remplacées dans le champ network.email.reply_to si elles sont valides.
sender principal.user.email_addresses La valeur provient directement du champ sender du journal brut, s'il s'agit d'une adresse e-mail valide.
senderIP principal.ip La valeur provient directement du champ senderIP du journal brut.
sm.from network.email.from La valeur provient directement du champ sm.from du journal brut.
sm.msgid network.email.mail_id La valeur provient directement du champ sm.msgid du journal brut, après avoir supprimé "<" et ">".
sm.proto network.application_protocol La valeur provient directement du champ sm.proto du journal brut.
sm.qid security_result.detection_fields.QUID La valeur provient directement du champ sm.qid du journal brut.
sm.relay intermediary.hostname, intermediary.ip Le nom d'hôte et l'adresse IP sont extraits de sm.relay à l'aide de grok.
sm.stat security_result.detection_fields.Stat Le premier mot de sm.stat est extrait à l'aide de grok et mappé.
sm.to network.email.to Les adresses e-mail de sm.to sont fusionnées dans le champ network.email.to si elles sont valides.
spamScore security_result.detection_fields.spamScore La valeur provient directement du champ spamScore du journal brut.
subject network.email.subject La valeur provient directement du champ subject du journal brut.
threat security_result.detection_fields.threat La valeur provient directement du champ threat du journal brut.
threatsInfoMap security_result.detection_fields Les paires clé-valeur de chaque entrée dans threatsInfoMap sont ajoutées en tant que champs de détection.
threatType security_result.detection_fields.threatType La valeur provient directement du champ threatType du journal brut.
tls.cipher network.tls.cipher La valeur provient directement du champ tls.cipher du journal brut, sauf si elle est "NONE".
tls.verify security_result.action_details La valeur provient directement du champ tls.verify du journal brut.
tls.version network.tls.version La valeur provient directement du champ tls.version dans le journal brut, sauf si le chiffrement est "NONE".
toAddresses network.email.to Les adresses e-mail de toAddresses sont fusionnées dans le champ network.email.to si elles sont valides.
ts @timestamp La valeur est analysée à partir du champ ts au format ISO8601 ou RFC 3339, après un prétraitement pour gérer les secondes fractionnaires supplémentaires.

Modifications

2024-11-28

  • Amélioration:
  • Mappage de "msgParts.metadata.company" et "msgParts.metadata.author" sur "security_result.detection_fields".
  • Suppression de la mise en correspondance en double de "email.subject".
  • Modification de la mise en correspondance des champs "filter.modules.dmarc.authResults." de "additional.fields" à "security_result.detection_fields".

2024-08-28

  • Amélioration:
  • La clé "security_result.detection_fields" est passée de "filterQid" à "qid".

2024-08-21

  • Amélioration:
  • Mappage de "metadata.origin.data.cid" sur "additional.fields".

2024-07-22

  • Amélioration:
  • Si "about.file.size" est un entier non signé valide, mappez "msgPart.detectedSizeBytes" sur "about.file.size".
  • Ajout de la compatibilité avec un nouveau format de journaux SYSLOG.

2024-07-09

  • Amélioration:
  • Mappage de "msg.header.x-mailer" sur "additional.fields".

2024-07-09

  • Amélioration:
  • Mappage de "msg.header.x-mailer" sur "additional.fields".

2023-11-13

  • Mappage de "subject" sur "network.email.subject".
  • "messageID" a été mappé sur "network.email.mail_id".
  • Mappage de "fromAddress" sur "network.email.from".
  • Mappage de "ccAddresses" sur "network.email.cc".
  • Mappage de "replyToAddress" sur "network.email.reply_to".
  • Mappage de "toAddresses" sur "network.email.to".
  • Mappage de "sender" sur "principal.user.email_addresses".
  • Mappage de "senderIP" sur "principal.ip".
  • Mappage de "recipient" sur "target.user.email_addresses".
  • Mappage de "spamScore", "phishScore", "threatsInfoMap", "impostorScore", "malwareScore" et "" sur "security_result.detection_fields".

2023-10-26

  • Mappage de "msg.headeparsedAddressesr.from.0" sur "principal.user.email_addresses".
  • Les mappages ont été modifiés pour passer des champs UDM obsolètes à d'autres champs.
  • Ajout de la mise en correspondance de "about.labels" à "about.resource.attribute.labels".
  • Ajout de la mise en correspondance de "principal.labels" à "principal.resource.attribute.labels".

2023-06-05

  • Ajout d'une vérification de "msg.header.reply-to.0" avant le mappage vers UDM pour vérifier s'il s'agit d'un tableau d'adresses e-mail.
  • Ajout d'une vérification de non-valeur "-1" à "msgPart.detectedSizeBytes" avant le mappage vers UDM.

2022-07-14

  • Amélioration de la mise en correspondance de l'élément suivant avec l'élément UDM:
  • Langues mappées sur additional.fields.
  • Définitions mappées sur security_result.summary.
  • Moteur mappé sur metadata.product_version.

2022-06-29

  • Amélioration : ajout de gsub pour supprimer "<>' des champs "sm.msgid" et "msg.header.message-id.0" mappés sur "network.email.mail_id".

2022-05-20

  • Amélioration de la mise en correspondance des éléments suivants avec des éléments UDM:
  • Mappage de "tls.verify" et "filter.disposition" sur "security_result.action_details".
  • Correspondance de "filter.modules.dmarc.authResults.result" avec "additional.fields".
  • Mappage de "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" sur "security_result.detection_fields".

2022-04-13

  • Amélioration de la mise en correspondance de l'élément suivant avec l'élément UDM:
  • Mappage de filter.modules.av.virusNames sur "security_result.threat_name".