收集 Proofpoint On-Demand 日志

支持的语言:

本文档介绍了如何使用内置 API 集成将 Proofpoint On-Demand 日志注入到 Google Security Operations。解析器从 JSON 日志中提取字段,并将其转换为 Chronicle UDM 格式。它可处理两种主要日志格式:一种包含电子邮件元数据,另一种包含 SMTP 交易详情;它使用条件逻辑来适当解析字段,并根据可用数据填充统一数据模型 (UDM) 字段。解析器还会执行数据清理,例如移除无关字符和转换时间戳。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例
  • Proofpoint On-Demand Remote Syslog 许可
  • 对 Proofpoint 的特权访问权限

配置 Proofpoint On-Demand API 访问权限

  1. 登录 Proofpoint 管理员门户。
  2. 复制您的集群 ID(显示在管理界面右上角,版本号旁边)。
  3. 前往设置 > API 密钥管理
  4. 点击新建,打开创建新的 API 密钥对话框。
  5. 输入唯一的名称(例如 Google SecOps Key)。
  6. 生成 API 密钥
  7. 从新 API 密钥的省略号菜单中选择查看详情
  8. 复制 API 密钥

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed
  • 内容中心 > 内容包

通过“SIEM 设置”>“Feed”设置 Feed

如需配置 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称(例如 PoD Logs)。
  5. 选择第三方 API 作为来源类型
  6. 选择 Proofpoint On-Demand 日志类型。
  7. 点击下一步
  8. 为以下输入参数指定值:

    • 身份验证 HTTP 标头:以 Authorization: Bearer {API_KEY} 格式输入 Proofpoint API 密钥,并添加一个新行,其中包含以下 WebSocket-Key 数据:Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==
    • 集群 ID:输入您之前复制的 Proofpoint 集群 ID。
  9. 点击下一步

  10. 最终确定界面中检查 Feed 配置,然后点击提交

设置来自内容中心的 Feed

为以下字段指定值:

  • 身份验证 HTTP 标头:以 Authorization: Bearer {API_KEY} 格式输入 Proofpoint API 密钥,并在新行中添加以下 WebSocket-Key 数据:Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==
  • 集群 ID:输入您之前复制的 Proofpoint 集群 ID。

高级选项

  • Feed 名称:用于标识 Feed 的预填充值。
  • 来源类型:用于将日志收集到 Google SecOps 中的方法。
  • 资源命名空间:与 Feed 关联的命名空间。
  • 提取标签:应用于相应 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.fromfromAddress,则也会替换此值。
envelope.rcpts network.email.to 如果 envelope.rcpts 中的电子邮件地址有效,则会合并到 network.email.to 字段中。如果存在,还会与 sm.totoAddresses 合并。
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 为“outbound”,则 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.hostnameintermediary.ip 主机名和 IP 地址是从 sm.relay 中使用 grok 提取的。
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 该值通过以下方式从 ts 字段解析得出:使用 ISO8601 或 RFC 3339 格式,并进行一些预处理以处理额外的秒的小数部分。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。