收集 Proofpoint On Demand 日志
支持的平台:
Google SecOps
SIEM
此解析器会从 Proofpoint 按需 JSON 日志中提取字段,并将其转换为 UDM 格式。它处理两种主要日志格式:一种包含电子邮件元数据,另一种包含 SMTP 事务详情,使用条件逻辑来适当地解析字段,并根据可用数据填充 UDM 字段。解析器还会执行数据清理,例如移除多余字符和转换时间戳。
准备工作
- 确保您有一个 Google Security Operations 实例。
- 确保您拥有 Proofpoint 按需远程 Syslog 许可。
- 确保您拥有对 Proofpoint 的特权访问权限。
配置 Proofpoint On Demand API 访问权限
- 登录 Proofpoint 管理控制台。
- 复制您的集群 ID,该 ID 显示在管理界面中版本号旁边。
- 依次选择设置 > API 密钥管理。
- 点击新建以显示创建新的 API 密钥对话框。
- 输入具有唯一性的名称(例如 Google SecOps)。
- 生成 API 密钥。
- 在新的 API 密钥的菜单中,选择查看详情。
- 复制 API 密钥。
在 Google SecOps 中配置 Feed 以提取 Proofpoint On Demand (PoD) 日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在Feed 名称字段中,输入 Feed 的名称(例如 PoD 日志)。
- 选择第三方 API 作为来源类型。
- 选择 Proofpoint On Demand 作为日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- 身份验证 HTTP 标头:以
key:<value>
格式输入 Proofpoint API 密钥。 - 集群 ID:输入您之前复制的 Proofpoint 集群 ID。
- 资源命名空间:资源命名空间。
- 提取标签:应用于此 Feed 中的事件的标签。
- 身份验证 HTTP 标头:以
- 点击下一步。
- 在最终确定界面中查看 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
classification |
security_result.detection_fields.classification |
该值直接来自原始日志中的 classification 字段。 |
cluster |
security_result.detection_fields.cluster |
此值直接来自原始日志中的 cluster 字段。 |
completelyRewritten |
security_result.detection_fields.completelyRewritten |
该值直接来自原始日志中的 completelyRewritten 字段。 |
connection.country |
principal.location.country_or_region |
此值直接来自原始日志中的 connection.country 字段,除非该字段的值为“**”。 |
connection.host |
principal.hostname |
此值直接来自原始日志中的 connection.host 字段。 |
connection.ip |
principal.ip |
该值直接来自原始日志中的 connection.ip 字段(如果该字段是有效的 IPv4 地址)。它还会与 senderIP (如果存在)合并。 |
connection.protocol |
network.application_protocol |
系统会使用 gsub 提取 connection.protocol 中冒号前的协议部分,并进行映射。例如,“smtp:smtp”会变为“SMTP”。 |
connection.tls.inbound.cipher |
network.tls.cipher |
此值直接来自原始日志中的 connection.tls.inbound.cipher 字段,除非该字段的值为“NONE”。 |
connection.tls.inbound.version |
network.tls.version |
此值直接来自原始日志中的 connection.tls.inbound.version 字段,除非加密算法为“NONE”。 |
envelope.from |
network.email.from |
该值直接来自原始日志中的 envelope.from 字段。它还会被 sm.from 或 fromAddress (如果存在)替换。 |
envelope.rcpts |
network.email.to |
如果 envelope.rcpts 中的电子邮件地址有效,则会合并到 network.email.to 字段中。它还会与 sm.to 或 toAddresses (如果存在)合并。 |
envelope.rcptsHashed |
read_only_udm.additional.fields |
envelope.rcptsHashed 中的经过哈希处理的电子邮件地址会添加为其他字段,键为“toHashed_0”“toHashed_1”等。 |
eventTime |
@timestamp |
系统会使用 ISO8601 或 RFC 3339 格式从 eventTime 字段解析该值。 |
eventType |
security_result.summary |
此值直接来自原始日志中的 eventType 字段。 |
filter.disposition |
security_result.action_details |
此值直接来自原始日志中的 filter.disposition 字段,除非存在 tls.verify 。 |
filter.modules.av.virusNames.0 |
security_result.threat_name |
该值直接来自原始日志中的 filter.modules.av.virusNames.0 字段。 |
filter.modules.dmarc.authResults |
read_only_udm.additional.fields |
filter.modules.dmarc.authResults 中的每个条目的方法和结果都会添加为额外的字段,键为“authResultsMethod_0”“authResults_result_0”“authResultsMethod_1”等。 |
filter.modules.spam.langs |
read_only_udm.additional.fields |
filter.modules.spam.langs 中的每种语言都会作为一个额外的字段添加,键为“lang_0”“lang_1”等。 |
filter.modules.spam.safeBlockedListMatches.0.listType |
security_result.detection_fields.safeBlockedListMatches_listType |
该值直接来自原始日志中的 filter.modules.spam.safeBlockedListMatches.0.listType 字段。 |
filter.modules.spam.safeBlockedListMatches.0.rule |
security_result.detection_fields.safeBlockedListMatches_rule |
该值直接来自原始日志中的 filter.modules.spam.safeBlockedListMatches.0.rule 字段。 |
filter.modules.spam.scores.classifiers.adult |
security_result.detection_fields.adult |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.adult 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.bulk |
security_result.detection_fields.bulk |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.bulk 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.impostor |
security_result.detection_fields.impostor |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.impostor 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.lowpriority |
security_result.detection_fields.lowpriority |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.lowpriority 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.malware |
security_result.detection_fields.malware |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.malware 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.mlx |
security_result.detection_fields.mlx |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.mlx 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.mlxlog |
security_result.detection_fields.mlxlog |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.mlxlog 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.phish |
security_result.detection_fields.phish |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.phish 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.spam |
security_result.detection_fields.spam |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.spam 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.classifiers.suspect |
security_result.detection_fields.suspect |
该值直接来自原始日志中的 filter.modules.spam.scores.classifiers.suspect 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.engine |
security_result.detection_fields.engine |
该值直接来自原始日志中的 filter.modules.spam.scores.engine 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.scores.overall |
security_result.detection_fields.overall |
该值直接来自原始日志中的 filter.modules.spam.scores.overall 字段(如果该字段不为空或不为 0)。 |
filter.modules.spam.version.definitions |
security_result.summary |
此值直接来自原始日志中的 filter.modules.spam.version.definitions 字段。 |
filter.modules.spam.version.engine |
metadata.product_version |
该值直接来自原始日志中的 filter.modules.spam.version.engine 字段。 |
filter.modules.urldefense.counts.rewritten |
read_only_udm.additional.fields.urldefenseCountsRewritten |
该值直接来自原始日志中的 filter.modules.urldefense.counts.rewritten 字段。 |
filter.modules.urldefense.counts.total |
security_result.detection_fields.urldefense_total |
该值直接来自原始日志中的 filter.modules.urldefense.counts.total 字段。 |
filter.modules.zerohour.score |
read_only_udm.additional.fields.zeroHourScore |
该值直接来自原始日志中的 filter.modules.zerohour.score 字段。 |
filter.origGuid |
read_only_udm.additional.fields.origGuid |
该值直接来自原始日志中的 filter.origGuid 字段。 |
filter.qid |
read_only_udm.additional.fields.filterQid |
该值直接来自原始日志中的 filter.qid 字段。 |
filter.quarantine.folder |
security_result.detection_fields.filter_quarantine_folder |
该值直接来自原始日志中的 filter.quarantine.folder 字段。 |
filter.quarantine.folderId |
security_result.detection_fields.filter_quarantine_folderId |
此值直接来自原始日志中的 filter.quarantine.quarantine.folderId 字段。 |
filter.quarantine.module |
security_result.detection_fields.filter_quarantine_module |
该值直接来自原始日志中的 filter.quarantine.module 字段。 |
filter.quarantine.rule |
security_result.detection_fields.filter_quarantine_rule |
该值直接来自原始日志中的 filter.quarantine.rule 字段。 |
filter.quarantine.type |
security_result.detection_fields.filter_quarantine_type |
该值直接来自原始日志中的 filter.quarantine.type 字段。 |
filter.routeDirection |
network.direction |
如果 filter.routeDirection 为“inbound”,则 network.direction 会设为“INBOUND”。如果 filter.routeDirection 为“出站”,则 network.direction 会设置为“OUTBOUND”。 |
filter.routes |
read_only_udm.additional.fields |
filter.routes 中的每个路线都会添加为一个额外的字段,键为“filterRoutes_0”“filterRoutes_1”等。 |
fromAddress |
network.email.from |
如果 fromAddress 中的电子邮件地址有效,系统会将其替换到 network.email.from 字段中。 |
guid |
metadata.product_log_id |
此值直接来自原始日志中的 guid 字段。 |
GUID |
metadata.product_log_id |
此值直接来自原始日志中的 GUID 字段。 |
headerFrom |
network.email.from |
该值直接来自原始日志中的 headerFrom 字段。 |
impostorScore |
security_result.detection_fields.impostorScore |
此值直接来自原始日志中的 impostorScore 字段。 |
malwareScore |
security_result.detection_fields.malwareScore |
该值直接来自原始日志中的 malwareScore 字段。 |
messageID |
network.email.mail_id |
该值直接来自原始日志中的 messageID 字段。 |
messageSize |
security_result.detection_fields.messageSize |
此值直接来自原始日志中的 messageSize 字段。 |
messageTime |
@timestamp |
系统会使用 ISO8601 或 RFC 3339 格式从 messageTime 字段解析该值。 |
metadata.customerId |
principal.labels.customerId |
该值直接来自原始日志中的 metadata.customerId 字段。 |
metadata.origin.data.agent |
network.http.user_agent |
此值直接来自原始日志中的 metadata.origin.data.agent 字段。 |
metadata.origin.data.cid |
principal.user.userid |
该值直接来自原始日志中的 metadata.origin.data.cid 字段。 |
metadata.origin.data.version |
metadata.product_version |
该值直接来自原始日志中的 metadata.origin.data.version 字段。 |
msg.header.from |
read_only_udm.additional.fields.msgHeaderFrom |
该值直接来自原始日志中的 msg.header.from.0 字段。 |
msg.header.reply-to |
network.email.reply_to |
系统会提取 msg.header.reply-to.0 中用 <> 括起来的电子邮件地址并进行映射。 |
msg.header.subject |
network.email.subject |
该值直接来自原始日志中的 msg.header.subject 字段。 |
msg.header.to |
read_only_udm.additional.fields.msgHeaderTo |
该值直接来自原始日志中的 msg.header.to 字段。 |
msg.normalizedHeader.subject |
network.email.subject |
该值直接来自原始日志中的 msg.normalizedHeader.subject 字段。 |
msg.parsedAddresses.cc |
network.email.cc |
如果 msg.parsedAddresses.cc 中的电子邮件地址有效,则会合并到 network.email.cc 字段中。 |
msg.parsedAddresses.ccHashed |
read_only_udm.additional.fields |
msg.parsedAddresses.ccHashed 中的经过哈希处理的电子邮件地址会添加为其他字段,键为“ccHashed_0”“ccHashed_1”等。 |
msg.parsedAddresses.from |
read_only_udm.additional.fields.msgParsedAddressesFrom |
此值直接来自原始日志中的 msg.parsedAddresses.from.0 字段。 |
msg.parsedAddresses.from.0 |
principal.user.email_addresses |
该值直接来自原始日志中的 msg.parsedAddresses.from.0 字段。 |
msg.parsedAddresses.fromHashed |
read_only_udm.additional.fields.fromHashed |
该值直接来自原始日志中的 msg.parsedAddresses.fromHashed.0 字段。 |
msg.parsedAddresses.to |
target.user.email_addresses |
如果 msg.parsedAddresses.to 中的电子邮件地址有效,则会合并到 target.user.email_addresses 字段中。 |
msgParts |
read_only_udm.about |
系统会创建多个 about 对象,每个对象对应 msgParts 中的每个条目。系统会提取文件哈希、MIME 类型、大小和其他元数据。 |
QID |
security_result.detection_fields.QID |
该值直接来自原始日志中的 QID 字段。 |
recipient |
target.user.email_addresses |
如果 recipient 中的电子邮件地址有效,则会合并到 target.user.email_addresses 字段中。 |
replyToAddress |
network.email.reply_to |
如果 replyToAddress 中的电子邮件地址有效,系统会将其替换到 network.email.reply_to 字段中。 |
sender |
principal.user.email_addresses |
如果该值是有效的电子邮件地址,则直接来自原始日志中的 sender 字段。 |
senderIP |
principal.ip |
该值直接来自原始日志中的 senderIP 字段。 |
sm.from |
network.email.from |
该值直接来自原始日志中的 sm.from 字段。 |
sm.msgid |
network.email.mail_id |
此值直接来自原始日志中的 sm.msgid 字段(移除“<”和“>”后)。 |
sm.proto |
network.application_protocol |
该值直接来自原始日志中的 sm.proto 字段。 |
sm.qid |
security_result.detection_fields.QUID |
此值直接来自原始日志中的 sm.qid 字段。 |
sm.relay |
intermediary.hostname ,intermediary.ip |
系统使用 grok 从 sm.relay 中提取主机名和 IP 地址。 |
sm.stat |
security_result.detection_fields.Stat |
系统使用 grok 提取 sm.stat 的第一个字词并进行映射。 |
sm.to |
network.email.to |
如果 sm.to 中的电子邮件地址有效,则会合并到 network.email.to 字段中。 |
spamScore |
security_result.detection_fields.spamScore |
该值直接来自原始日志中的 spamScore 字段。 |
subject |
network.email.subject |
该值直接来自原始日志中的 subject 字段。 |
threat |
security_result.detection_fields.threat |
该值直接来自原始日志中的 threat 字段。 |
threatsInfoMap |
security_result.detection_fields |
threatsInfoMap 中的每个条目中的键值对都会添加为检测字段。 |
threatType |
security_result.detection_fields.threatType |
该值直接来自原始日志中的 threatType 字段。 |
tls.cipher |
network.tls.cipher |
此值直接来自原始日志中的 tls.cipher 字段,除非该字段的值为“NONE”。 |
tls.verify |
security_result.action_details |
该值直接来自原始日志中的 tls.verify 字段。 |
tls.version |
network.tls.version |
此值直接来自原始日志中的 tls.version 字段,除非加密算法为“NONE”。 |
toAddresses |
network.email.to |
如果 toAddresses 中的电子邮件地址有效,则会合并到 network.email.to 字段中。 |
ts |
@timestamp |
系统会先进行一些预处理来处理额外的秒数,然后再使用 ISO8601 或 RFC 3339 格式从 ts 字段解析该值。 |
变化
2024-11-28
- 增强功能:
- 将“msgParts.metadata.company”和“msgParts.metadata.author”映射到“security_result.detection_fields”。
- 移除了“email.subject”的重复映射。
- 将“filter.modules.dmarc.authResults.”字段的映射从“additional.fields”更改为“security_result.detection_fields”。
2024-08-28
- 增强功能:
- 将“security_result.detection_fields”键从“filterQid”更改为“qid”。
2024-08-21
- 增强功能:
- 将“metadata.origin.data.cid”映射到“additional.fields”。
2024-07-22
- 增强功能:
- 如果“about.file.size”是有效的无符号整数,则将“msgPart.detectedSizeBytes”映射到“about.file.size”。
- 添加了对新 SYSLOG 日志模式的支持。
2024-07-09
- 增强功能:
- 将“msg.header.x-mailer”映射到“additional.fields”。
2024-07-09
- 增强功能:
- 将“msg.header.x-mailer”映射到“additional.fields”。
2023-11-13
- 将“subject”映射到“network.email.subject”。
- 将“messageID”映射到“network.email.mail_id”。
- 将“fromAddress”映射到“network.email.from”。
- 将“ccAddresses”映射到“network.email.cc”。
- 将“replyToAddress”映射到“network.email.reply_to”。
- 将“toAddresses”映射到“network.email.to”。
- 将“sender”映射到“principal.user.email_addresses”。
- 将“senderIP”映射到“principal.ip”。
- 将“收件人”映射到“target.user.email_addresses”。
- 将“spamScore”“phishScore”“threatsInfoMap”“impostorScore”“malwareScore”映射到“security_result.detection_fields”。
2023-10-26
- 将“msg.headeparsedAddressesr.from.0”映射到“principal.user.email_addresses”。
- 将映射从使用已废弃的 UDM 字段更改为使用替代字段。
- 添加了“about.labels”到“about.resource.attribute.labels”的映射。
- 添加了“principal.labels”到“principal.resource.attribute.labels”的映射。
2023-06-05
- 在将“msg.header.reply-to.0”映射到 UDM 之前,添加了对其进行检查的功能,以检查其是否为电子邮件数组。
- 在映射到 UDM 之前,向“msgPart.detectedSizeBytes”添加了非“-1”检查。
2022-07-14
- 改进了将跟随元素映射到 UDM 元素的功能:
- 将 langs 映射到 additional.fields。
- 将定义映射到 security_result.summary。
- 将引擎映射到 metadata.product_version。
2022-06-29
- 增强功能 - 添加了 gsub,用于从映射到“network.email.mail_id”的字段“sm.msgid”和“msg.header.message-id.0”中移除“<>”。
2022-05-20
- 改进了将以下元素映射到 UDM 元素的功能:
- 将“tls.verify”“filter.disposition”映射到“security_result.action_details”。
- 将“filter.modules.dmarc.authResults.result”映射到“additional.fields”。
- 将“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”映射到“security_result.detection_fields”。
2022-04-13
- 改进了将跟随元素映射到 UDM 元素的功能:
- 将 filter.modules.av.virusNames 映射到“security_result.threat_name”。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。