Raccogliere i log di Proofpoint On-Demand

Supportato in:

Questo parser estrae i campi dai log JSON di Proofpoint On-Demand e li trasforma nel formato UDM. Gestisce due formati di log principali: uno contenente i metadati delle email e l'altro contenente i dettagli delle transazioni SMTP, utilizzando la logica condizionale per analizzare i campi in modo appropriato e compilare i campi UDM in base ai dati disponibili. Il parser esegue anche la pulizia dei dati, ad esempio la rimozione di caratteri estranei e la conversione dei timestamp.

Prima di iniziare

  • Assicurati di avere un'istanza Google Security Operations.
  • Assicurati di disporre della licenza Proofpoint On Demand Remote Syslog.
  • Assicurati di disporre di accesso privilegiato a Proofpoint.

Configurare l'accesso all'API Proofpoint on Demand

  1. Accedi al portale di amministrazione di Proofpoint.
  2. Copia l'ID cluster, visualizzato nell'interfaccia di gestione accanto al numero della release.
  3. Seleziona Impostazioni > Gestione chiavi API.
  4. Fai clic su Crea nuova per visualizzare la finestra di dialogo Crea nuova chiave API.
  5. Inserisci un nome univoco (ad esempio Google SecOps).
  6. Genera la chiave API.
  7. Seleziona Visualizza dettagli dal menu della nuova chiave API.
  8. Copia la chiave API.

Configurare un feed in Google SecOps per importare i log di Proofpoint On Demand (PoD)

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuova.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log PoD).
  4. Seleziona API di terze parti come Tipo di origine.
  5. Seleziona Proofpoint On Demand come tipo di log.
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:
    • Intestazioni HTTP di autenticazione: inserisci la chiave API Proofpoint in un formato key:<value>.
    • ID cluster: inserisci l'ID cluster Proofpoint che hai copiato in precedenza.
    • Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
    • Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
  8. Fai clic su Avanti.
  9. Controlla la configurazione del feed nella schermata Concludi e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
classification security_result.detection_fields.classification Il valore proviene direttamente dal campo classification nel log non elaborato.
cluster security_result.detection_fields.cluster Il valore proviene direttamente dal campo cluster nel log non elaborato.
completelyRewritten security_result.detection_fields.completelyRewritten Il valore proviene direttamente dal campo completelyRewritten nel log non elaborato.
connection.country principal.location.country_or_region Il valore proviene direttamente dal campo connection.country nel log non elaborato, a meno che non sia "**".
connection.host principal.hostname Il valore proviene direttamente dal campo connection.host nel log non elaborato.
connection.ip principal.ip Il valore proviene direttamente dal campo connection.ip nel log non elaborato, se si tratta di un indirizzo IPv4 valido. Viene inoltre unito a senderIP, se presente.
connection.protocol network.application_protocol La parte del protocollo prima dei due punti in connection.protocol viene estratta utilizzando gsub e mappata. Ad esempio, "smtp:smtp" diventa "SMTP".
connection.tls.inbound.cipher network.tls.cipher Il valore proviene direttamente dal campo connection.tls.inbound.cipher nel log non elaborato, a meno che non sia "NESSUNO".
connection.tls.inbound.version network.tls.version Il valore proviene direttamente dal campo connection.tls.inbound.version nel log non elaborato, a meno che la crittografia non sia "NESSUNA".
envelope.from network.email.from Il valore proviene direttamente dal campo envelope.from nel log non elaborato. Viene sostituito anche da sm.from o fromAddress, se presenti.
envelope.rcpts network.email.to Gli indirizzi email in envelope.rcpts vengono uniti al campo network.email.to se sono validi. Viene inoltre unito a sm.to o toAddresses, se presente.
envelope.rcptsHashed read_only_udm.additional.fields Gli indirizzi email sottomessi ad hashing in envelope.rcptsHashed vengono aggiunti come campi aggiuntivi con chiavi come "toHashed_0", "toHashed_1" e così via.
eventTime @timestamp Il valore viene analizzato dal campo eventTime utilizzando il formato ISO8601 o RFC 3339.
eventType security_result.summary Il valore proviene direttamente dal campo eventType nel log non elaborato.
filter.disposition security_result.action_details Il valore proviene direttamente dal campo filter.disposition nel log non elaborato, a meno che non sia presente tls.verify.
filter.modules.av.virusNames.0 security_result.threat_name Il valore proviene direttamente dal campo filter.modules.av.virusNames.0 nel log non elaborato.
filter.modules.dmarc.authResults read_only_udm.additional.fields Il metodo e il risultato di ogni voce in filter.modules.dmarc.authResults vengono aggiunti come campi aggiuntivi con chiavi come "authResultsMethod_0", "authResults_result_0", "authResultsMethod_1" e così via.
filter.modules.spam.langs read_only_udm.additional.fields Ogni lingua in filter.modules.spam.langs viene aggiunta come campo aggiuntivo con chiavi come "lang_0", "lang_1" e così via.
filter.modules.spam.safeBlockedListMatches.0.listType security_result.detection_fields.safeBlockedListMatches_listType Il valore proviene direttamente dal campo filter.modules.spam.safeBlockedListMatches.0.listType nel log non elaborato.
filter.modules.spam.safeBlockedListMatches.0.rule security_result.detection_fields.safeBlockedListMatches_rule Il valore proviene direttamente dal campo filter.modules.spam.safeBlockedListMatches.0.rule nel log non elaborato.
filter.modules.spam.scores.classifiers.adult security_result.detection_fields.adult Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.adult nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.bulk security_result.detection_fields.bulk Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.bulk nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.impostor security_result.detection_fields.impostor Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.impostor nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.lowpriority security_result.detection_fields.lowpriority Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.lowpriority nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.malware security_result.detection_fields.malware Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.malware nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.mlx security_result.detection_fields.mlx Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.mlx nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.mlxlog security_result.detection_fields.mlxlog Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.mlxlog nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.phish security_result.detection_fields.phish Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.phish nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.spam security_result.detection_fields.spam Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.spam nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.classifiers.suspect security_result.detection_fields.suspect Il valore proviene direttamente dal campo filter.modules.spam.scores.classifiers.suspect nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.engine security_result.detection_fields.engine Il valore proviene direttamente dal campo filter.modules.spam.scores.engine nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.scores.overall security_result.detection_fields.overall Il valore proviene direttamente dal campo filter.modules.spam.scores.overall nel log non elaborato, se non è vuoto o 0.
filter.modules.spam.version.definitions security_result.summary Il valore proviene direttamente dal campo filter.modules.spam.version.definitions nel log non elaborato.
filter.modules.spam.version.engine metadata.product_version Il valore proviene direttamente dal campo filter.modules.spam.version.engine nel log non elaborato.
filter.modules.urldefense.counts.rewritten read_only_udm.additional.fields.urldefenseCountsRewritten Il valore proviene direttamente dal campo filter.modules.urldefense.counts.rewritten nel log non elaborato.
filter.modules.urldefense.counts.total security_result.detection_fields.urldefense_total Il valore proviene direttamente dal campo filter.modules.urldefense.counts.total nel log non elaborato.
filter.modules.zerohour.score read_only_udm.additional.fields.zeroHourScore Il valore proviene direttamente dal campo filter.modules.zerohour.score nel log non elaborato.
filter.origGuid read_only_udm.additional.fields.origGuid Il valore proviene direttamente dal campo filter.origGuid nel log non elaborato.
filter.qid read_only_udm.additional.fields.filterQid Il valore proviene direttamente dal campo filter.qid nel log non elaborato.
filter.quarantine.folder security_result.detection_fields.filter_quarantine_folder Il valore proviene direttamente dal campo filter.quarantine.folder nel log non elaborato.
filter.quarantine.folderId security_result.detection_fields.filter_quarantine_folderId Il valore proviene direttamente dal campo filter.quarantine.quarantine.folderId nel log non elaborato.
filter.quarantine.module security_result.detection_fields.filter_quarantine_module Il valore proviene direttamente dal campo filter.quarantine.module nel log non elaborato.
filter.quarantine.rule security_result.detection_fields.filter_quarantine_rule Il valore proviene direttamente dal campo filter.quarantine.rule nel log non elaborato.
filter.quarantine.type security_result.detection_fields.filter_quarantine_type Il valore proviene direttamente dal campo filter.quarantine.type nel log non elaborato.
filter.routeDirection network.direction Se filter.routeDirection è "in entrata", network.direction è impostato su "INBOUND". Se filter.routeDirection è "outbound", network.direction è impostato su "OUTBOUND".
filter.routes read_only_udm.additional.fields Ogni percorso in filter.routes viene aggiunto come campo aggiuntivo con chiavi come "filterRoutes_0", "filterRoutes_1" e così via.
fromAddress network.email.from Gli indirizzi email in fromAddress vengono sostituiti nel campo network.email.from se sono indirizzi email validi.
guid metadata.product_log_id Il valore proviene direttamente dal campo guid nel log non elaborato.
GUID metadata.product_log_id Il valore proviene direttamente dal campo GUID nel log non elaborato.
headerFrom network.email.from Il valore proviene direttamente dal campo headerFrom nel log non elaborato.
impostorScore security_result.detection_fields.impostorScore Il valore proviene direttamente dal campo impostorScore nel log non elaborato.
malwareScore security_result.detection_fields.malwareScore Il valore proviene direttamente dal campo malwareScore nel log non elaborato.
messageID network.email.mail_id Il valore proviene direttamente dal campo messageID nel log non elaborato.
messageSize security_result.detection_fields.messageSize Il valore proviene direttamente dal campo messageSize nel log non elaborato.
messageTime @timestamp Il valore viene analizzato dal campo messageTime utilizzando il formato ISO8601 o RFC 3339.
metadata.customerId principal.labels.customerId Il valore proviene direttamente dal campo metadata.customerId nel log non elaborato.
metadata.origin.data.agent network.http.user_agent Il valore proviene direttamente dal campo metadata.origin.data.agent nel log non elaborato.
metadata.origin.data.cid principal.user.userid Il valore proviene direttamente dal campo metadata.origin.data.cid nel log non elaborato.
metadata.origin.data.version metadata.product_version Il valore proviene direttamente dal campo metadata.origin.data.version nel log non elaborato.
msg.header.from read_only_udm.additional.fields.msgHeaderFrom Il valore proviene direttamente dal campo msg.header.from.0 nel log non elaborato.
msg.header.reply-to network.email.reply_to L'indirizzo email racchiuso tra <> in msg.header.reply-to.0 viene estratto e mappato.
msg.header.subject network.email.subject Il valore proviene direttamente dal campo msg.header.subject nel log non elaborato.
msg.header.to read_only_udm.additional.fields.msgHeaderTo Il valore proviene direttamente dal campo msg.header.to nel log non elaborato.
msg.normalizedHeader.subject network.email.subject Il valore proviene direttamente dal campo msg.normalizedHeader.subject nel log non elaborato.
msg.parsedAddresses.cc network.email.cc Gli indirizzi email in msg.parsedAddresses.cc vengono uniti al campo network.email.cc se sono validi.
msg.parsedAddresses.ccHashed read_only_udm.additional.fields Gli indirizzi email sottoposti ad hashing in msg.parsedAddresses.ccHashed vengono aggiunti come campi aggiuntivi con chiavi come "ccHashed_0", "ccHashed_1" e così via.
msg.parsedAddresses.from read_only_udm.additional.fields.msgParsedAddressesFrom Il valore proviene direttamente dal campo msg.parsedAddresses.from.0 nel log non elaborato.
msg.parsedAddresses.from.0 principal.user.email_addresses Il valore proviene direttamente dal campo msg.parsedAddresses.from.0 nel log non elaborato.
msg.parsedAddresses.fromHashed read_only_udm.additional.fields.fromHashed Il valore proviene direttamente dal campo msg.parsedAddresses.fromHashed.0 nel log non elaborato.
msg.parsedAddresses.to target.user.email_addresses Gli indirizzi email in msg.parsedAddresses.to vengono uniti al campo target.user.email_addresses se sono validi.
msgParts read_only_udm.about Vengono creati più oggetti about, uno per ogni voce in msgParts. Vengono estratti gli hash dei file, il tipo MIME, le dimensioni e altri metadati.
QID security_result.detection_fields.QID Il valore proviene direttamente dal campo QID nel log non elaborato.
recipient target.user.email_addresses Gli indirizzi email in recipient vengono uniti al campo target.user.email_addresses se sono validi.
replyToAddress network.email.reply_to Gli indirizzi email in replyToAddress vengono sostituiti nel campo network.email.reply_to se sono indirizzi email validi.
sender principal.user.email_addresses Il valore proviene direttamente dal campo sender nel log non elaborato, se si tratta di un indirizzo email valido.
senderIP principal.ip Il valore proviene direttamente dal campo senderIP nel log non elaborato.
sm.from network.email.from Il valore proviene direttamente dal campo sm.from nel log non elaborato.
sm.msgid network.email.mail_id Il valore proviene direttamente dal campo sm.msgid nel log non elaborato, dopo aver rimosso "<" e ">".
sm.proto network.application_protocol Il valore proviene direttamente dal campo sm.proto nel log non elaborato.
sm.qid security_result.detection_fields.QUID Il valore proviene direttamente dal campo sm.qid nel log non elaborato.
sm.relay intermediary.hostname, intermediary.ip Il nome host e l'indirizzo IP vengono estratti da sm.relay utilizzando grok.
sm.stat security_result.detection_fields.Stat La prima parola di sm.stat viene estratta utilizzando grok e mappata.
sm.to network.email.to Gli indirizzi email in sm.to vengono uniti al campo network.email.to se sono validi.
spamScore security_result.detection_fields.spamScore Il valore proviene direttamente dal campo spamScore nel log non elaborato.
subject network.email.subject Il valore proviene direttamente dal campo subject nel log non elaborato.
threat security_result.detection_fields.threat Il valore proviene direttamente dal campo threat nel log non elaborato.
threatsInfoMap security_result.detection_fields Le coppie chiave-valore di ogni voce in threatsInfoMap vengono aggiunte come campi di rilevamento.
threatType security_result.detection_fields.threatType Il valore proviene direttamente dal campo threatType nel log non elaborato.
tls.cipher network.tls.cipher Il valore proviene direttamente dal campo tls.cipher nel log non elaborato, a meno che non sia "NESSUNO".
tls.verify security_result.action_details Il valore proviene direttamente dal campo tls.verify nel log non elaborato.
tls.version network.tls.version Il valore proviene direttamente dal campo tls.version nel log non elaborato, a meno che la crittografia non sia "NESSUNA".
toAddresses network.email.to Gli indirizzi email in toAddresses vengono uniti al campo network.email.to se sono validi.
ts @timestamp Il valore viene analizzato dal campo ts utilizzando il formato ISO8601 o RFC 3339, dopo un'elaborazione preliminare per gestire i secondi frazionari aggiuntivi.

Modifiche

2024-11-28

  • Miglioramento:
  • "msgParts.metadata.company" e "msgParts.metadata.author" sono stati mappati a "security_result.detection_fields".
  • È stata rimossa la mappatura duplicata di "email.subject".
  • È stata modificata la mappatura dei campi "filter.modules.dmarc.authResults" da "additional.fields" a "security_result.detection_fields".

2024-08-28

  • Miglioramento:
  • La chiave "security_result.detection_fields" è stata modificata da "filterQid" in "qid".

2024-08-21

  • Miglioramento:
  • "metadata.origin.data.cid" è stato mappato a "additional.fields".

2024-07-22

  • Miglioramento:
  • Se "about.file.size" è un numero intero non firmato valido, mappa "msgPart.detectedSizeBytes" a "about.file.size".
  • È stato aggiunto il supporto per un nuovo pattern di log SYSLOG.

2024-07-09

  • Miglioramento:
  • "msg.header.x-mailer" è stato mappato a "additional.fields".

2024-07-09

  • Miglioramento:
  • "msg.header.x-mailer" è stato mappato a "additional.fields".

2023-11-13

  • "subject" è stato mappato a "network.email.subject".
  • "messageID" è stato mappato a "network.email.mail_id".
  • "fromAddress" è stato mappato a "network.email.from".
  • "ccAddresses" è stato mappato a "network.email.cc".
  • "replyToAddress" è stato mappato a "network.email.reply_to".
  • "toAddresses" è stato mappato a "network.email.to".
  • "sender" è stato mappato a "principal.user.email_addresses".
  • "senderIP" è stato mappato a "principal.ip".
  • "recipient" è stato mappato a "target.user.email_addresses".
  • "spamScore", "phishScore", "threatsInfoMap", "impostorScore", "malwareScore", "" sono stati mappati a "security_result.detection_fields".

2023-10-26

  • "msg.headeparsedAddressesr.from.0" è stato mappato a "principal.user.email_addresses".
  • Mappature modificate dall'utilizzo di campi UDM obsoleti a campi alternativi.
  • È stata aggiunta la mappatura da "about.labels" a "about.resource.attribute.labels".
  • È stata aggiunta la mappatura da "principal.labels" a "principal.resource.attribute.labels".

2023-06-05

  • È stato aggiunto un controllo a "msg.header.reply-to.0" prima della mappatura a UDM per verificare se si tratta di un array di email.
  • È stato aggiunto il controllo non "-1" a "msgPart.detectedSizeBytes" prima della mappatura a UDM.

2022-07-14

  • Miglioramento per mappare l'elemento successivo all'elemento UDM:
  • Le lingue mappate a additional.fields.
  • Definizioni mappate a security_result.summary.
  • Motore mappato a metadata.product_version.

2022-06-29

  • Miglioramento: è stata aggiunta la funzione gsub per rimuovere "<>' dai campi "sm.msgid" e "msg.header.message-id.0" mappati a "network.email.mail_id".

2022-05-20

  • Miglioramento per mappare i seguenti elementi agli elementi UDM:
  • Sono stati mappati "tls.verify" e "filter.disposition" a "security_result.action_details".
  • È stato mappato "filter.modules.dmarc.authResults.result" a "additional.fields".
  • Sono stati mappati "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" a "security_result.detection_fields".

2022-04-13

  • Miglioramento per mappare l'elemento successivo all'elemento UDM:
  • È stato eseguito il mapping di filter.modules.av.virusNames a "security_result.threat_name".