将日志数据的格式设置为 UDM

所有统一数据模型 (UDM) 事件都有一组通用字段和消息,无论事件类型如何,合作伙伴均可填充。这些字段包括:

  • 实体:事件中涉及的设备、用户和进程。
  • 事件元数据:事件的发生时间、类型、来源等。
  • 网络元数据:面向网络事件的概要网络元数据以及子消息中的协议详情:
    • 电子邮件元数据:收件人、表单、抄送、密送和其他电子邮件字段的信息。
    • HTTP 元数据:方法、referral_url、用户代理等。
  • 安全结果:安全产品的任何分类或操作。
  • 其他元数据:可以使用自由格式的 json 载荷字段添加在 UDM 模型的正式部分中无法充分表示的任何重要的供应商特定事件数据。

以下部分介绍如何为统一数据模型 (UDM) 对事件进行编码和格式化。

UDM 编码

UDM 事件必须使用以下格式之一提交到 Chronicle:

在本文档中,字段使用点表示法表示。例如,以下 JSON 语法:

{"menu":
  {
    "id": "file",
    "value": "File",
    "popup": {
      "menuitem": [
        {"value": "New", "onclick": "CreateNewDoc()"}
      ]
    }
  }
}

其说明如下:

menu.id = "file"
menu.value = "File"
menu.popup.menuitem.value = "New"
menu.popup.menuitem.onclick = "CreateNewDoc()"

设置 UDM 事件的格式

如需设置 UDM 事件的格式以准备将其发送给 Google,您必须完成以下步骤:

  1. 指定事件类型 - 您选择的事件类型还必须指定事件中必须包含的字段。
  2. 指定事件时间戳 - metadata-position="body" } - 指定事件时间戳。
  3. 指定名词(实体)- 每个事件必须至少包含一个名词,用于描述事件所涉及的参与者设备或用户。
  4. 指定安全结果 -(可选)指定安全结果的详细信息,包括安全系统发现的安全风险和威胁,以及缓解这些风险和威胁时采取的措施。
  5. 使用 UDM 事件字段填写必填字段和可选事件信息的其余部分。

指定事件类型

对于为 UDM 格式提交的任何事件定义最重要的值,即使用 Metadata.event_type 可能可用的值之一指定的事件类型。包括 PROCESS_OPEN、FILE_CREATION、USER_CREATION、NETWORK_DNS 等值(有关完整列表,请参阅 Metadata.event_type)。每种事件类型还需要使用与原始事件关联的信息填充一组其他字段和值。请参阅每个 UDM 事件类型的必填字段和选填字段,详细了解每种事件类型要包含的字段。以下示例说明了如何使用 Proto3 文本表示法将 PROCESS_OPEN 指定为事件类型:

metadata {
    event_type: PROCESS_OPEN
}

指定事件时间戳

您必须使用 Metadata.event_timestamp 为使用 UDM 格式提交的任何事件指定 GMT 时间戳。时间戳必须使用以下标准之一进行编码:

  • 对于 JSON,使用 RFC 3339
  • Proto3 时间戳

以下示例说明了如何使用 RFC 3339 格式指定时间戳。在此例中,yyyy-mm-ddThh:mm:ss+hh:mm - 年、月、日、小时、分钟、秒与世界协调时间 (UTC) 的时差。相对于 UTC 的偏移量为 8 小时,表示太平洋标准时间。

metadata {
  event_timestamp: "2019-09-10T20:32:31-08:00"
}

指定名词(实体)

对于每个 UDM 事件,您必须定义一个或多个名词。名词代表 UDM 活动中的参与者或实体。例如,名词可以是执行事件中所述的活动的设备/用户,也可以是作为事件中描述的此类活动的目标的设备/用户。名词也可以是附件或网址等。最后,您还可以使用名词来描述观察到事件中所描述活动的安保设备(例如电子邮件代理或网络路由器)。

UDM 事件必须指定以下一个或多个名词:

principal:表示在事件中说明相应活动的活动实体或设备。主帐号必须至少包含一项机器详细信息(主机名、MAC、IP、端口、CrowdStrike 机器 GUID 等标识符)或用户详细信息(例如用户名),还可以选择包含进程详情。不得包含以下任何字段:电子邮件、文件、注册表项或值。

如果所有事件都发生在同一机器上,则只需要在 principal 中描述该机器。该机器不需要在 targetsrc 中进行描述。

以下示例说明了如何填充 principal 字段:

principal {
  hostname: "jane_win10"
  asset_id: "Sophos.AV:C070123456-ABCDE"
      ip: "10.0.2.10"
      port: 60671
      user {  userid: "john.smith" }
}

上面的示例介绍了所有已知的设备,以及在事件中所述的主要操作者的用户。此示例包含设备的 IP 地址和端口号,以及主机名。它还包括供应商专用资产标识符(来自 Sophos),这是第三方安全产品生成的唯一标识符。

target:表示事件所引用的目标设备,或目标设备上的对象。例如,在从设备 A 到设备 B 的防火墙连接中,A 描述为主帐号,B 描述为目标。对于通过进程 C 到目标进程 D 的进程注入,进程 C 被描述为主进程,进程 D 被描述为目标。

udm 中的主帐号与目标 UDM 中的主帐号与目标

以下示例展示了如何填充目标的字段:

target {
   ip: "198.51.100.31"
   port: 80
}

同样,如果存在主机名、其他 IP 地址、MAC 地址、专有资源标识符等更多信息,这些信息也应包含在 target 中。

principaltarget(以及其他名词)都可以引用同一台机器上的操作者。例如,在机器 X 上运行的进程 A (principal) 也在机器 X 上处理进程 B (target)。

  • src:表示参与者执行操作的源对象,以及源对象的设备或进程上下文(源对象所在的机器)。例如,如果用户 U 将机器 A 上的文件 A 复制到机器 Y 上的文件 B,则 UDM 事件的 src 部分中将指定文件 A 和机器 X。
  • intermediary:表示有关处理事件中描述的一个或多个中间设备的详细信息。这包括有关代理服务器、SMTP 中继服务器等的设备详情。
  • observer:表示观察者设备(例如数据包嗅探器或基于网络的漏洞扫描仪),但不是直接中介,而是观察和报告相关事件。
  • about:用于存储事件引用的所有对象的详细信息,这些对象在 participantsrctargetintermediaryobserver 中没有另外描述。例如,它可用于跟踪以下各项:
    • 电子邮件文件附件
    • 电子邮件正文中嵌入的网域/网址/IP 地址
    • 在 PROCESS_LAUNCH 事件期间加载的 DLL

UDM 事件的实体部分包含事件中说明的各个参与者(设备、用户、网址、文件等对象)的相关信息。Chronicle UDM 对填充名词字段有强制性要求。每个 UDM 事件类型的必填字段和选填字段中介绍了这些要求。根据事件类型,必须填写的一组实体字段会有所不同。

指定安全性结果

您可以选择通过填充 SecurityResult 字段来指定安全结果,包括有关安全系统发现的安全风险和威胁的详细信息,以及为减轻这些风险和威胁而采取的措施。以下是需要填充 SecurityResult 字段的一些类型的安全性事件示例:

  • 电子邮件安全代理检测到网上诱骗攻击 (mail_PHISHING),并阻止 (BLOCK) 电子邮件。
  • 电子邮件安全代理防火墙检测到两个受感染的附件 (SOFTWARE_MALICIOUS) 并隔离和消毒 (QUARANTINE, ALLOW_WITH_MODIFICATION) 这些附件,然后转发已消毒的电子邮件。
  • SSO 系统促进了被阻止 (BLOCK) 的登录 (AUTH_VIOLATION)。
  • 恶意软件沙盒在将文件发送 (ALLOW) 给用户收件箱中的用户五分钟后,在文件附件中检测到间谍软件 (SOFTWARE_MALICIOUS)。