Proofpoint On-Demand-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Proofpoint On-Demand-Logs mithilfe der integrierten API-Integration in Google Security Operations aufnehmen. Der Parser extrahiert Felder aus JSON-Logs und wandelt sie in das Chronicle UDM-Format um. Es werden zwei primäre Logformate verarbeitet: eines mit E-Mail-Metadaten und das andere mit SMTP-Transaktionsdetails. Dabei wird bedingte Logik verwendet, um Felder entsprechend zu parsen und die UDM-Felder (Unified Data Model) basierend auf den verfügbaren Daten zu füllen. Der Parser führt auch die Datenbereinigung durch, z. B. das Entfernen von überflüssigen Zeichen und das Konvertieren von Zeitstempeln.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Proofpoint On-Demand Remote Syslog-Lizenz
- Privilegierter Zugriff auf Proofpoint
Proofpoint On-Demand-API-Zugriff konfigurieren
- Melden Sie sich im Proofpoint Admin-Portal an.
- Kopieren Sie Ihre Cluster-ID. Sie wird rechts oben in der Verwaltungsoberfläche neben der Versionsnummer angezeigt.
- Rufen Sie die Einstellungen > API-Schlüsselverwaltung auf.
- Klicken Sie auf Neu erstellen, um das Dialogfeld Neuen API-Schlüssel erstellen zu öffnen.
- Geben Sie einen eindeutigen Namen ein, z. B.
Google SecOps Key
. - Generieren Sie den API-Schlüssel.
- Wählen Sie im Dreipunkt-Menü des neuen API-Schlüssels die Option Details ansehen aus.
- Kopieren Sie den API-Schlüssel.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds
- Content Hub> Content-Pakete
Feeds über „SIEM-Einstellungen“ > „Feeds“ einrichten
So konfigurieren Sie einen Feed:
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- Geben Sie im Feld Feed name einen Namen für den Feed ein, z. B.
PoD Logs
. - Wählen Sie Drittanbieter-API als Quelltyp aus.
- Wählen Sie den Logtyp Proofpoint On-Demand aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- HTTP-Header für die Authentifizierung: Geben Sie den Proofpoint-API-Schlüssel im Format
Authorization: Bearer {API_KEY}
ein und fügen Sie eine neue Zeile mit den folgenden WebSocket-Schlüsseldaten hinzu:Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==
. - Cluster-ID: Geben Sie die Proofpoint-Cluster-ID ein, die Sie zuvor kopiert haben.
- HTTP-Header für die Authentifizierung: Geben Sie den Proofpoint-API-Schlüssel im Format
Klicken Sie auf Weiter.
Prüfen Sie die Feedkonfiguration auf dem Bildschirm Finalize (Abschließen) und klicken Sie dann auf Submit (Senden).
Feeds über den Content Hub einrichten
Geben Sie Werte für die folgenden Felder an:
- HTTP-Header für die Authentifizierung: Geben Sie den Proofpoint-API-Schlüssel im Format
Authorization: Bearer {API_KEY}
ein und fügen Sie eine neue Zeile mit den folgenden WebSocket-Schlüsseldaten hinzu:Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==
. - Cluster-ID: Geben Sie die Proofpoint-Cluster-ID ein, die Sie zuvor kopiert haben.
Erweiterte Optionen
- Feedname:Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp:Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace:Der mit dem Feed verknüpfte Namespace.
- Aufnahmelabels:Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
classification |
security_result.detection_fields.classification |
Der Wert stammt direkt aus dem Feld classification im Rohlog. |
cluster |
security_result.detection_fields.cluster |
Der Wert stammt direkt aus dem Feld cluster im Rohlog. |
completelyRewritten |
security_result.detection_fields.completelyRewritten |
Der Wert stammt direkt aus dem Feld completelyRewritten im Rohlog. |
connection.country |
principal.location.country_or_region |
Der Wert stammt direkt aus dem Feld connection.country im Rohlog, sofern er nicht „**“ ist. |
connection.host |
principal.hostname |
Der Wert stammt direkt aus dem Feld connection.host im Rohlog. |
connection.ip |
principal.ip |
Der Wert stammt direkt aus dem Feld connection.ip im Rohlog, sofern es sich um eine gültige IPv4-Adresse handelt. Sie wird auch mit senderIP zusammengeführt, falls vorhanden. |
connection.protocol |
network.application_protocol |
Der Protokollteil vor dem Doppelpunkt in connection.protocol wird mit gsub extrahiert und zugeordnet. Beispiel: „smtp:smtp“ wird zu „SMTP“. |
connection.tls.inbound.cipher |
network.tls.cipher |
Der Wert stammt direkt aus dem Feld connection.tls.inbound.cipher im Rohlog, sofern er nicht „NONE“ lautet. |
connection.tls.inbound.version |
network.tls.version |
Der Wert stammt direkt aus dem Feld connection.tls.inbound.version im Rohlog, sofern die Chiffre nicht „NONE“ ist. |
envelope.from |
network.email.from |
Der Wert stammt direkt aus dem Feld envelope.from im Rohlog. Es wird auch durch sm.from oder fromAddress ersetzt, falls vorhanden. |
envelope.rcpts |
network.email.to |
Die E-Mail-Adressen in envelope.rcpts werden in das Feld network.email.to zusammengeführt, sofern es sich um gültige E-Mail-Adressen handelt. Es wird auch mit sm.to oder toAddresses zusammengeführt, falls vorhanden. |
envelope.rcptsHashed |
read_only_udm.additional.fields |
Die gehashten E‑Mail-Adressen in envelope.rcptsHashed werden als zusätzliche Felder mit Schlüsseln wie „toHashed_0“, „toHashed_1“ usw. hinzugefügt. |
eventTime |
@timestamp |
Der Wert wird aus dem Feld eventTime im ISO8601- oder RFC 3339-Format geparst. |
eventType |
security_result.summary |
Der Wert stammt direkt aus dem Feld eventType im Rohlog. |
filter.disposition |
security_result.action_details |
Der Wert stammt direkt aus dem Feld filter.disposition im Rohlog, sofern tls.verify nicht vorhanden ist. |
filter.modules.av.virusNames.0 |
security_result.threat_name |
Der Wert stammt direkt aus dem Feld filter.modules.av.virusNames.0 im Rohlog. |
filter.modules.dmarc.authResults |
read_only_udm.additional.fields |
Die Methode und das Ergebnis jedes Eintrags in filter.modules.dmarc.authResults werden als zusätzliche Felder mit Schlüsseln wie „authResultsMethod_0“, „authResults_result_0“, „authResultsMethod_1“ usw. hinzugefügt. |
filter.modules.spam.langs |
read_only_udm.additional.fields |
Jede Sprache in filter.modules.spam.langs wird als zusätzliches Feld mit Schlüsseln wie „lang_0“, „lang_1“ usw. hinzugefügt. |
filter.modules.spam.safeBlockedListMatches.0.listType |
security_result.detection_fields.safeBlockedListMatches_listType |
Der Wert stammt direkt aus dem Feld filter.modules.spam.safeBlockedListMatches.0.listType im Rohlog. |
filter.modules.spam.safeBlockedListMatches.0.rule |
security_result.detection_fields.safeBlockedListMatches_rule |
Der Wert stammt direkt aus dem Feld filter.modules.spam.safeBlockedListMatches.0.rule im Rohlog. |
filter.modules.spam.scores.classifiers.adult |
security_result.detection_fields.adult |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.adult im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.bulk |
security_result.detection_fields.bulk |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.bulk im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.impostor |
security_result.detection_fields.impostor |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.impostor im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.lowpriority |
security_result.detection_fields.lowpriority |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.lowpriority im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.malware |
security_result.detection_fields.malware |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.malware im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.mlx |
security_result.detection_fields.mlx |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.mlx im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.mlxlog |
security_result.detection_fields.mlxlog |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.mlxlog im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.phish |
security_result.detection_fields.phish |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.phish im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.spam |
security_result.detection_fields.spam |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.spam im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.classifiers.suspect |
security_result.detection_fields.suspect |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.classifiers.suspect im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.engine |
security_result.detection_fields.engine |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.engine im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.scores.overall |
security_result.detection_fields.overall |
Der Wert stammt direkt aus dem Feld filter.modules.spam.scores.overall im Rohlog, sofern es nicht leer oder 0 ist. |
filter.modules.spam.version.definitions |
security_result.summary |
Der Wert stammt direkt aus dem Feld filter.modules.spam.version.definitions im Rohlog. |
filter.modules.spam.version.engine |
metadata.product_version |
Der Wert stammt direkt aus dem Feld filter.modules.spam.version.engine im Rohlog. |
filter.modules.urldefense.counts.rewritten |
read_only_udm.additional.fields.urldefenseCountsRewritten |
Der Wert stammt direkt aus dem Feld filter.modules.urldefense.counts.rewritten im Rohlog. |
filter.modules.urldefense.counts.total |
security_result.detection_fields.urldefense_total |
Der Wert stammt direkt aus dem Feld filter.modules.urldefense.counts.total im Rohlog. |
filter.modules.zerohour.score |
read_only_udm.additional.fields.zeroHourScore |
Der Wert stammt direkt aus dem Feld filter.modules.zerohour.score im Rohlog. |
filter.origGuid |
read_only_udm.additional.fields.origGuid |
Der Wert stammt direkt aus dem Feld filter.origGuid im Rohlog. |
filter.qid |
read_only_udm.additional.fields.filterQid |
Der Wert stammt direkt aus dem Feld filter.qid im Rohlog. |
filter.quarantine.folder |
security_result.detection_fields.filter_quarantine_folder |
Der Wert stammt direkt aus dem Feld filter.quarantine.folder im Rohlog. |
filter.quarantine.folderId |
security_result.detection_fields.filter_quarantine_folderId |
Der Wert stammt direkt aus dem Feld filter.quarantine.quarantine.folderId im Rohlog. |
filter.quarantine.module |
security_result.detection_fields.filter_quarantine_module |
Der Wert stammt direkt aus dem Feld filter.quarantine.module im Rohlog. |
filter.quarantine.rule |
security_result.detection_fields.filter_quarantine_rule |
Der Wert stammt direkt aus dem Feld filter.quarantine.rule im Rohlog. |
filter.quarantine.type |
security_result.detection_fields.filter_quarantine_type |
Der Wert stammt direkt aus dem Feld filter.quarantine.type im Rohlog. |
filter.routeDirection |
network.direction |
Wenn filter.routeDirection „eingehend“ ist, wird network.direction auf „INBOUND“ festgelegt. Wenn filter.routeDirection „outbound“ ist, wird network.direction auf „OUTBOUND“ gesetzt. |
filter.routes |
read_only_udm.additional.fields |
Jede Route in filter.routes wird als zusätzliches Feld mit Schlüsseln wie „filterRoutes_0“, „filterRoutes_1“ usw. hinzugefügt. |
fromAddress |
network.email.from |
Die E-Mail-Adressen in fromAddress werden in das Feld network.email.from eingefügt, sofern es sich um gültige E-Mail-Adressen handelt. |
guid |
metadata.product_log_id |
Der Wert stammt direkt aus dem Feld guid im Rohlog. |
GUID |
metadata.product_log_id |
Der Wert stammt direkt aus dem Feld GUID im Rohlog. |
headerFrom |
network.email.from |
Der Wert stammt direkt aus dem Feld headerFrom im Rohlog. |
impostorScore |
security_result.detection_fields.impostorScore |
Der Wert stammt direkt aus dem Feld impostorScore im Rohlog. |
malwareScore |
security_result.detection_fields.malwareScore |
Der Wert stammt direkt aus dem Feld malwareScore im Rohlog. |
messageID |
network.email.mail_id |
Der Wert stammt direkt aus dem Feld messageID im Rohlog. |
messageSize |
security_result.detection_fields.messageSize |
Der Wert stammt direkt aus dem Feld messageSize im Rohlog. |
messageTime |
@timestamp |
Der Wert wird aus dem Feld messageTime im ISO8601- oder RFC 3339-Format geparst. |
metadata.customerId |
principal.labels.customerId |
Der Wert stammt direkt aus dem Feld metadata.customerId im Rohlog. |
metadata.origin.data.agent |
network.http.user_agent |
Der Wert stammt direkt aus dem Feld metadata.origin.data.agent im Rohlog. |
metadata.origin.data.cid |
principal.user.userid |
Der Wert stammt direkt aus dem Feld metadata.origin.data.cid im Rohlog. |
metadata.origin.data.version |
metadata.product_version |
Der Wert stammt direkt aus dem Feld metadata.origin.data.version im Rohlog. |
msg.header.from |
read_only_udm.additional.fields.msgHeaderFrom |
Der Wert stammt direkt aus dem Feld msg.header.from.0 im Rohlog. |
msg.header.reply-to |
network.email.reply_to |
Die E‑Mail-Adresse, die in msg.header.reply-to.0 in <> eingeschlossen ist, wird extrahiert und zugeordnet. |
msg.header.subject |
network.email.subject |
Der Wert stammt direkt aus dem Feld msg.header.subject im Rohlog. |
msg.header.to |
read_only_udm.additional.fields.msgHeaderTo |
Der Wert stammt direkt aus dem Feld msg.header.to im Rohlog. |
msg.normalizedHeader.subject |
network.email.subject |
Der Wert stammt direkt aus dem Feld msg.normalizedHeader.subject im Rohlog. |
msg.parsedAddresses.cc |
network.email.cc |
Die E-Mail-Adressen in msg.parsedAddresses.cc werden in das Feld network.email.cc zusammengeführt, sofern es sich um gültige E-Mail-Adressen handelt. |
msg.parsedAddresses.ccHashed |
read_only_udm.additional.fields |
Die gehashten E-Mail-Adressen in msg.parsedAddresses.ccHashed werden als zusätzliche Felder mit Schlüsseln wie „ccHashed_0“, „ccHashed_1“ usw. hinzugefügt. |
msg.parsedAddresses.from |
read_only_udm.additional.fields.msgParsedAddressesFrom |
Der Wert stammt direkt aus dem Feld msg.parsedAddresses.from.0 im Rohlog. |
msg.parsedAddresses.from.0 |
principal.user.email_addresses |
Der Wert stammt direkt aus dem Feld msg.parsedAddresses.from.0 im Rohlog. |
msg.parsedAddresses.fromHashed |
read_only_udm.additional.fields.fromHashed |
Der Wert stammt direkt aus dem Feld msg.parsedAddresses.fromHashed.0 im Rohlog. |
msg.parsedAddresses.to |
target.user.email_addresses |
Die E-Mail-Adressen in msg.parsedAddresses.to werden in das Feld target.user.email_addresses zusammengeführt, sofern es sich um gültige E-Mail-Adressen handelt. |
msgParts |
read_only_udm.about |
Es werden mehrere „Über“-Objekte erstellt, eines für jeden Eintrag in msgParts . Datei-Hashes, MIME-Typ, Größe und andere Metadaten werden extrahiert. |
QID |
security_result.detection_fields.QID |
Der Wert stammt direkt aus dem Feld QID im Rohlog. |
recipient |
target.user.email_addresses |
Die E-Mail-Adressen in recipient werden in das Feld target.user.email_addresses zusammengeführt, sofern es sich um gültige E-Mail-Adressen handelt. |
replyToAddress |
network.email.reply_to |
Die E-Mail-Adressen in replyToAddress werden in das Feld network.email.reply_to eingefügt, sofern es sich um gültige E-Mail-Adressen handelt. |
sender |
principal.user.email_addresses |
Der Wert stammt direkt aus dem Feld sender im Rohlog, sofern es sich um eine gültige E-Mail-Adresse handelt. |
senderIP |
principal.ip |
Der Wert stammt direkt aus dem Feld senderIP im Rohlog. |
sm.from |
network.email.from |
Der Wert stammt direkt aus dem Feld sm.from im Rohlog. |
sm.msgid |
network.email.mail_id |
Der Wert stammt direkt aus dem Feld sm.msgid im Rohlog, nachdem „<“ und „>“ entfernt wurden. |
sm.proto |
network.application_protocol |
Der Wert stammt direkt aus dem Feld sm.proto im Rohlog. |
sm.qid |
security_result.detection_fields.QUID |
Der Wert stammt direkt aus dem Feld sm.qid im Rohlog. |
sm.relay |
intermediary.hostname , intermediary.ip |
Der Hostname und die IP-Adresse werden mit „grok“ aus sm.relay extrahiert. |
sm.stat |
security_result.detection_fields.Stat |
Das erste Wort von sm.stat wird mit „grok“ extrahiert und zugeordnet. |
sm.to |
network.email.to |
Die E-Mail-Adressen in sm.to werden in das Feld network.email.to zusammengeführt, sofern es sich um gültige E-Mail-Adressen handelt. |
spamScore |
security_result.detection_fields.spamScore |
Der Wert stammt direkt aus dem Feld spamScore im Rohlog. |
subject |
network.email.subject |
Der Wert stammt direkt aus dem Feld subject im Rohlog. |
threat |
security_result.detection_fields.threat |
Der Wert stammt direkt aus dem Feld threat im Rohlog. |
threatsInfoMap |
security_result.detection_fields |
Schlüssel/Wert-Paare aus jedem Eintrag in threatsInfoMap werden als Erkennungsfelder hinzugefügt. |
threatType |
security_result.detection_fields.threatType |
Der Wert stammt direkt aus dem Feld threatType im Rohlog. |
tls.cipher |
network.tls.cipher |
Der Wert stammt direkt aus dem Feld tls.cipher im Rohlog, sofern er nicht „NONE“ lautet. |
tls.verify |
security_result.action_details |
Der Wert stammt direkt aus dem Feld tls.verify im Rohlog. |
tls.version |
network.tls.version |
Der Wert stammt direkt aus dem Feld tls.version im Rohlog, sofern die Chiffre nicht „NONE“ ist. |
toAddresses |
network.email.to |
Die E-Mail-Adressen in toAddresses werden in das Feld network.email.to zusammengeführt, sofern es sich um gültige E-Mail-Adressen handelt. |
ts |
@timestamp |
Der Wert wird aus dem Feld ts im ISO8601- oder RFC 3339-Format geparst, nachdem einige Vorverarbeitungen zur Behandlung zusätzlicher Bruchteile von Sekunden durchgeführt wurden. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten