Raccogliere i log on demand di Proofpoint

Supportato in:

Questo documento spiega come importare i log Proofpoint On-Demand in Google Security Operations utilizzando l'integrazione API integrata. Il parser estrae i campi dai log JSON, trasformandoli nel formato UDM di Chronicle. 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 Unified Data Model (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 soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps
  • Licenza Proofpoint On-Demand Remote Syslog
  • Accesso privilegiato a Proofpoint

Configurare l'accesso all'API Proofpoint On-Demand

  1. Accedi al portale Proofpoint Admin.
  2. Copia l'ID cluster (visualizzato nell'angolo in alto a destra dell'interfaccia di gestione, accanto al numero di versione).
  3. Vai a Impostazioni > Gestione delle chiavi API.
  4. Fai clic su Crea nuova per aprire la finestra di dialogo Crea nuova chiave API.
  5. Inserisci un Nome univoco (ad esempio, Google SecOps Key).
  6. Genera la chiave API.
  7. Seleziona Visualizza dettagli dal menu con i tre puntini sulla nuova chiave API.
  8. Copia la chiave API.

Configurare i feed

Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:

  • Impostazioni SIEM > Feed
  • Hub dei contenuti > Pacchetti di contenuti

Configura i feed da Impostazioni SIEM > Feed

Per configurare un feed:

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, PoD Logs).
  5. Seleziona API di terze parti come Tipo di origine.
  6. Seleziona il tipo di log Proofpoint On-Demand.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • Intestazioni HTTP di autenticazione: inserisci la chiave API Proofpoint nel formato Authorization: Bearer {API_KEY} e aggiungi una nuova riga con i seguenti dati della chiave WebSocket: Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==.
    • ID cluster: inserisci l'ID cluster Proofpoint che hai copiato in precedenza.
  9. Fai clic su Avanti.

  10. Controlla la configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Configurare i feed dall'hub dei contenuti

Specifica i valori per i seguenti campi:

  • Intestazioni HTTP di autenticazione: inserisci la chiave API Proofpoint in formato Authorization: Bearer {API_KEY} e aggiungi una nuova riga con i seguenti dati della chiave WebSocket: Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==.
  • ID cluster: inserisci l'ID cluster Proofpoint che hai copiato in precedenza.

Opzioni avanzate

  • Nome feed:un valore precompilato che identifica il feed.
  • Tipo di origine:metodo utilizzato per raccogliere i log in Google SecOps.
  • Spazio dei nomi dell'asset:lo spazio dei nomi associato al feed.
  • Etichette di importazione:etichette applicate a tutti gli eventi di questo feed.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
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 è un indirizzo IPv4 valido. Viene anche 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 "NONE".
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 cifra non sia "NONE".
envelope.from network.email.from Il valore proviene direttamente dal campo envelope.from nel log non elaborato. Viene inoltre sostituito da sm.from o fromAddress, se presenti.
envelope.rcpts network.email.to Gli indirizzi email in envelope.rcpts vengono uniti nel campo network.email.to se sono indirizzi email validi. Viene anche unito a sm.to o toAddresses, se presenti.
envelope.rcptsHashed read_only_udm.additional.fields Gli indirizzi email sottoposti 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 è "inbound", 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 nel campo network.email.cc se sono indirizzi email 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 nel campo target.user.email_addresses se sono indirizzi email validi.
msgParts read_only_udm.about Vengono creati più oggetti About, uno per ogni voce in msgParts. Vengono estratti gli hash, il tipo MIME, le dimensioni e altri metadati del file.
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 nel campo target.user.email_addresses se sono indirizzi email 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 deriva direttamente dal campo sender nel log non elaborato, se è 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 deriva 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 nel campo network.email.to se sono indirizzi email 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 "NONE".
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 cifra non sia "NONE".
toAddresses network.email.to Gli indirizzi email in toAddresses vengono uniti nel campo network.email.to se sono indirizzi email validi.
ts @timestamp Il valore viene analizzato dal campo ts utilizzando il formato ISO8601 o RFC 3339, dopo un po' di preelaborazione per gestire i secondi frazionari aggiuntivi.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.