实战化威胁情报融合信息流

支持:

实战化威胁情报 (ATI) 融合信息流是一组失陷指标 (IoC),包括与已知威胁行为者、恶意软件变种、活跃攻击活动和已完成的情报报告关联的哈希、IP、域名和网址。该信息流还包含来自 Mandiant Intelligence 仔细检查和验证过的开源信息流的 IoC,可最大限度地提高价值并提供高准确性。

Mandiant 的整理流程包括以下阶段:

  • 一线突发事件响应:在调查违规行为时,Mandiant 分析师会获得有关攻击者工具和技术的第一手知识。

  • 威胁研究:专门的团队会跟踪威胁行为者、分析恶意软件并发现新兴的攻击基础设施。

  • 情境化:IoC 会映射到特定的威胁和攻击活动,这有助于了解突发事件并确定其优先级。

违规行为分析信息流以 ATI 融合信息流为基础,其中包含来自 Mandiant 新的活跃违规行为调查的指标。它提供有关最新攻击趋势的实时分析洞见。为了增强指标匹配,YARA-L 规则可以使用 ATI 融合信息流中的情境信息,例如关联的威胁组织、指标在受攻击环境中的存在情况或 Mandiant 的自动恶意性评分。

使用 ATI 融合信息流编写 YARA-L 规则

在 Google Security Operations 中编写使用 ATI 融合信息流的 YARA-L 规则的过程与编写使用其他情境实体来源的 YARA-L 规则的过程类似。如需了解详情,请参阅创建情境感知分析

事件和匹配部分

如需编写规则,请按以下步骤操作: 1. 过滤所选的情境实体图。在本例中,为 Fusion Feed。 1. 过滤特定指标类型。例如,FILE。请参阅以下示例:

events:
   $context_graph.graph.metadata.product_name = "MANDIANT_FUSION_IOC"
   $context_graph.graph.metadata.vendor_name = "MANDIANT_FUSION_IOC"
   $context_graph.graph.metadata.source_type = "GLOBAL_CONTEXT"
   $context_graph.graph.metadata.entity_type = "FILE"

您可以在 events 部分中添加事件或情境实体的任何其他条件。您可以联接情境实体中的字段和 UDM 事件字段。

在以下示例中,占位符变量 ioc 用于在情境实体和事件之间执行传递联接。然后,ioc 变量在 match 部分中使用,以确保在特定时间范围内存在匹配项。

   $ioc = $context_graph.graph.entity.file.md5
   $ioc = $e1.principal.process.file.md5

match:
   $ioc over 1h

如需详细了解可在 YARA-L 规则中使用的情境实体字段,请参阅融合信息流情境实体字段部分。

结果部分

继续上一个示例,基本指标匹配规则是针对 graph.entity.file.md5 字段和 principal.process.file.md5 UDM 字段中的情境实体中的文件哈希设置的。

由于此规则可以匹配大量事件,因此建议您优化该规则,以匹配具有特定情报的情境实体。例如,您可能希望匹配 Mandiant 为指标分配的置信度得分、指标是否在受攻击环境中出现,或者与指标关联的恶意软件系列。所有这些都可以在规则的 outcome 部分中完成。

 outcome:
   // Extract the Mandiant Automated Intel confidence score of maliciousness
   $confidence_score = max(if($context_graph.graph.metadata.threat.verdict_info.source_provider = "Mandiant Automated Intel", $context_graph.graph.metadata.threat.verdict_info.confidence_score, 0))
   // Extract the status of the indicator as seen in a breached environment
   $breached = max(if($context_graph.graph.metadata.threat.verdict_info.pwn = true, 1, 0))

   // Intermediary outcome variable to combine conditions of intelligence extracted in the previous outcome variables.
   // Return 1 if conditions are met, otherwise return 0.
   $matched_conditions = if($confidence_score >= 80 AND $breached = 1, 1, 0)

在 YARA-L 规则的 outcome 部分中,置信度得分使用封装在 max 函数中的 if statement 提取。此技术是多事件规则所必需的。同样的技术用于从 verdict_info 中提取 pwn 变量,该变量指示指标是否在 Mandiant 识别的受攻击环境中出现。

然后,这两个结果变量在另一个 matched_conditions变量中组合在一起,这允许在 condition部分中使用链式逻辑。

条件部分

condition 部分确保 e1context_graphmatched_conditions 存在,并且/或者 与指定的条件匹配。

 condition:
   // Ensure $e1, $context_graph and $matched_conditions conditions are met.
   $e1 AND $context_graph AND $matched_conditions = 1

完整的 YARA-L 规则

此时,该规则已可供使用,应如下所示:

rule fusion_feed_example_principal_process_file_md5 {
 meta:
   rule_name = "File Hash - Applied Threat Intelligence"
   description = "Matches file hashes against the Applied Threat Intelligence Fusion Feed."

 events:
   // Filter graph
   $context_graph.graph.metadata.product_name = "MANDIANT_FUSION_IOC"
   $context_graph.graph.metadata.vendor_name = "MANDIANT_FUSION_IOC"
   $context_graph.graph.metadata.entity_type = "FILE"
   $context_graph.graph.metadata.source_type = "GLOBAL_CONTEXT"

   // Do join
   $ioc = $context_graph.graph.entity.file.md5
   $ioc = $e1.principal.process.file.md5

 match:
   $ioc over 1h

 outcome:
   // Extract the Mandiant Automated Intel confidence score of maliciousness
   $confidence_score = max(if($context_graph.graph.metadata.threat.verdict_info.source_provider = "Mandiant Automated Intel", $context_graph.graph.metadata.threat.verdict_info.confidence_score, 0))
   // Extract the status of the indicator as seen in a breached environment
   $breached = max(if($context_graph.graph.metadata.threat.verdict_info.pwn = true, 1, 0))

   // Intermediary outcome variable to combine conditions of intelligence extracted in the previous outcome variables.
   // Return 1 if conditions are met, otherwise return 0.
   $matched_conditions = if($confidence_score >= 80 AND $breached = 1, 1, 0)

 condition:
   // Ensure $e1, $context_graph and $matched_conditions conditions are met.
   $e1 AND $context_graph AND $matched_conditions = 1
}

ATI 融合信息流情境实体字段

您可以在规则中使用 ATI 融合信息流中的许多字段。所有这些字段 都在统一数据模型字段列表中定义。 以下字段与确定指标的优先级相关:

实体字段 可能的值
metadata.threat.associations.type MALWARETHREAT_ACTOR
metadata.threat.associations.name 威胁关联名称
metadata.threat.verdict_info.pwn TRUEFALSE
metadata.threat.verdict_info.pwn_first_tagged_time.seconds 时间戳(秒)

某些字段具有需要组合使用的键值对,才能访问正确的值。例如:

实体字段 1 实体字段 2
metadata.threat.verdict_info.source_provider Mandiant Global Intel metadata.threat.verdict_info.global_hits_count 整数
metadata.threat.verdict_info.source_provider Mandiant Global Intel metadata.threat.verdict_info.global_customer_count 整数
metadata.threat.verdict_info.source_provider Mandiant Analyst Intel metadata.threat.verdict_info.confidence_score 整数
metadata.threat.verdict_info.source_provider Mandiant Automated Intel metadata.threat.verdict_info.confidence_score 整数

在 YARA-L 规则的 outcome 部分中,您可以使用以下命令访问由特定键指定的值:

$hit_count = max(if($context_graph.graph.metadata.threat.verdict_info.source_provider = "Mandiant Global Intel", $context_graph.graph.metadata.threat.verdict_info.global_hits_count, 0))

在 Google Security Operations 中检查实体匹配项有助于您全面了解数据,揭示其他字段,这些字段对于评估指标提醒的优先级和情境非常有用。

以下示例展示了融合信息流情境实体作为初始参考点:

{
  "metadata": {
    "product_entity_id": "md5--147d19e6-cdae-57bb-b9a1-a8676265fa4c",
    "collected_timestamp": {
      "seconds": "1695165683",
      "nanos": 48000000
    },
    "vendor_name": "MANDIANT_FUSION_IOC",
    "product_name": "MANDIANT_FUSION_IOC",
    "product_version": "1710194393",
    "entity_type": "FILE",
    "creation_timestamp": {
      "seconds": "1710201600"
    },
    "interval": {
      "start_time": {
        "seconds": "1"
      },
      "end_time": {
        "seconds": "253402300799"
      }
    },
    "threat": [
      {
        "category_details": [
          "A phishing email message or the relevant headers from a phishing email."
        ],
        "severity_details": "HIGH",
        "confidence_details": "75",
        "risk_score": 75,
        "first_discovered_time": {
          "seconds": "1683294326"
        },
        "associations": [
          {
            "id": "threat-actor--3e5e6bdf-5b4e-5166-84fa-83045e637f23",
            "type": "THREAT_ACTOR",
            "name": "UNC2633"
          },
          {
            "id": "threat-actor--3e5e6bdf-5b4e-5166-84fa-83045e637f23",
            "country_code": [
              "unknown"
            ],
            "type": "THREAT_ACTOR",
            "name": "UNC2633",
            "description": "UNC2633 is a distribution threat cluster that delivers emails containing malicious attachments or links that lead to malware payloads, primarily QAKBOT, but also SNOWCONE.GZIPLOADER (which leads to ICEDID) and MATANBUCHUS. Historically, UNC2633 has distributed ZIP files containing malicious Excel files that download malware payloads. In early 2023, UNC2633 started distributing OneNote files (.one) that usually led to QAKBOT. It has also leveraged HTML smuggling to distribute ZIP files containing IMG files that contain LNK files and malware payloads.",
            "alias": [
              {
                "name": "TA570 (Proofpoint)"
              }
            ],
            "first_reference_time": {
              "seconds": "1459085092"
            },
            "last_reference_time": {
              "seconds": "1687392000"
            },
            "industries_affected": [
              "Aerospace & Defense",
              "Agriculture",
              "Automotive",
              "Chemicals & Materials",
              "Civil Society & Non-Profits",
              "Construction & Engineering",
              "Education",
              "Energy & Utilities",
              "Financial Services",
              "Governments",
              "Healthcare",
              "Hospitality",
              "Insurance",
              "Legal & Professional Services",
              "Manufacturing",
              "Media & Entertainment",
              "Oil & Gas",
              "Pharmaceuticals",
              "Retail",
              "Technology",
              "Telecommunications",
              "Transportation"
            ]
          }
        ],
        "campaigns": [
          "CAMP.23.007"
        ],
        "last_updated_time": {
          "seconds": "1695165683",
          "nanos": 48000000
        },
        "verdict_info": [
          {
            "source_provider": "Mandiant Automated Intel",
            "confidence_score": 75
          },
          {
            "verdict_type": "ANALYST_VERDICT",
            "confidence_score": 75
          },
          {
            "source_count": 91,
            "response_count": 1,
            "verdict_type": "PROVIDER_ML_VERDICT",
            "malicious_count": 1,
            "ioc_stats": [
              {
                "ioc_stats_type": "MANDIANT_SOURCES",
                "second_level_source": "Knowledge Graph",
                "quality": "HIGH_CONFIDENCE",
                "malicious_count": 1,
                "response_count": 1,
                "source_count": 8
              },
              {
                "ioc_stats_type": "MANDIANT_SOURCES",
                "second_level_source": "Malware Analysis",
                "source_count": 4
              },
              {
                "ioc_stats_type": "MANDIANT_SOURCES",
                "second_level_source": "Spam Monitoring",
                "source_count": 1
              },
              {
                "ioc_stats_type": "THIRD_PARTY_SOURCES",
                "second_level_source": "Crowdsourced Threat Analysis",
                "source_count": 71
              },
              {
                "ioc_stats_type": "THIRD_PARTY_SOURCES",
                "first_level_source": "MISP",
                "second_level_source": "Trusted Software List",
                "source_count": 3
              },
              {
                "ioc_stats_type": "THIRD_PARTY_SOURCES",
                "first_level_source": "Threat Intelligence Feeds",
                "second_level_source": "Digitalside It Hashes",
                "source_count": 1
              },
              {
                "ioc_stats_type": "THIRD_PARTY_SOURCES",
                "first_level_source": "Threat Intelligence Feeds",
                "second_level_source": "Tds Harvester",
                "source_count": 1
              },
              {
                "ioc_stats_type": "THIRD_PARTY_SOURCES",
                "first_level_source": "Threat Intelligence Feeds",
                "second_level_source": "Urlhaus",
                "source_count": 1
              }
            ]
          },
          {
            "source_provider": "Mandiant Analyst Intel",
            "confidence_score": 75,
            "pwn": true,
            "pwn_first_tagged_time": {
              "seconds": "1683911695"
            }
          }
        ],
        "last_discovered_time": {
          "seconds": "1683909854"
        }
      }
    ],
    "source_type": "GLOBAL_CONTEXT",
    "source_labels": [
      {
        "key": "is_scanner",
        "value": "false"
      },
      {
        "key": "osint",
        "value": "false"
      },
      {
        "key": "misp_akamai",
        "value": "false"
      },
...
      {
        "key": "has_pwn",
        "value": "2023-05-12T17:14:55.000+0000"
      }
    ],
    "event_metadata": {
      "id": "\\000\\000\\000\\000\\034Z\\n\\2545\\237\\367\\353\\271\\357\\302\\215t\\330\\275\\237\\000\\000\\000\\000\\007\\000\\000\\000\\206\\000\\000\\000",
      "base_labels": {
        "log_types": [
          "MANDIANT_FUSION_IOC"
        ],
        "allow_scoped_access": true
      }
    }
  },
  "entity": {
    "file": {
      "sha256": "000bc5900dc7a32851e380f418cc178ff0910242ee0561ae37ff424e6d3ec64a",
      "md5": "f0095b0a7480c826095d9ffc9d5d2d8f",
      "sha1": "8101315b9fbbf6a72bddbfe64837d246f4c8b419"
    },
    "labels": [
      {
        "key": "is_scanner",
        "value": "false"
      },
      {
        "key": "osint",
        "value": "false"
      },
      {
        "key": "misp_akamai",
        "value": "false"
      },
...
    ]
  }
}

复杂条件

如需在情境实体中使用多个字段,您可以组合使用多个结果变量来创建更复杂的条件逻辑。中间结果变量可用于组合多个字段。然后,这些变量会组合在一起,形成可在 condition 部分中使用的新结果变量。

例如:

// Value will be 1 if threat.associations.type = "MALWARE"
// Wrapper max function required for multi-event rules
$is_attributed_malware = max(if($entity_context.graph.metadata.threat.associations.type = "MALWARE", 1, 0))

// Value will be 1 if threat.associations.type = "THREAT_ACTOR"
$is_attributed_actor = max(if($entity_context.graph.metadata.threat.associations.type = "THREAT_ACTOR", 1,0))

// Value will be the sum of the $is_attributed_malware $is_attributed_malware and $is_attributed_actor
$is_attributed = if($is_attributed_malware = 1, 1, 0)
                    +
                    if($is_attributed_actor = 1, 1, 0)

// If the value of $is_attributed is greater than 1, this indicates the indicator has been attributed at least once with the type "MALWARE" or "THREAT_ACTOR"

在此示例中,两个中间结果变量 is_attributed_malwareis_attributed_actor 在结果变量 is_attributed 中组合在一起。

中间结果值返回数值,这允许在新结果变量中进行数值比较。

如果指标至少有一个类型为 MALWARETHREAT_ACTOR 的威胁关联,则 is_attributed 中的值将为 1 或更大。

YARA-L 规则中的灵活联接

为了减少所需的规则数量,您可以在 IoC 之间使用灵活联接,将多个 UDM 字段连接到情境实体。

以下示例展示了在 event 部分中对多个 UDM 字段使用灵活联接:

  events:
    // Filter graph
    $mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC"
    $mandiant.graph.metadata.vendor_name = "MANDIANT_FUSION_IOC"
    $mandiant.graph.metadata.entity_type = "FILE"
    $mandiant.graph.metadata.source_type = "GLOBAL_CONTEXT"

    $mandiant.graph.entity.file.md5 = strings.coalesce($e.target.process.file.md5, $e.target.process.file.md5) OR
    $mandiant.graph.entity.file.md5 = strings.coalesce($e.principal.process.file.md5, $e.principal.process.file.md5)

将 Mandiant 旧版信息流迁移到 GTI

Google SecOps 正在整合威胁情报数据来源。为了提供更广泛的失陷指标 (IoC) 并简化集成,我们将从旧版 Mandiant 信息流迁移到统一的 Google Threat Intelligence (GTI) 信息流。

本指南适用于希望在迁移到统一的 GTI 信息流时保持不间断威胁覆盖范围的检测工程师和分析师。它介绍了如何在保留旧版提醒功能的同时更新现有 YARA-L 规则以匹配新的 GTI IoC。通过使用提供的时间表和迁移工作流更新规则语法,您可以确保在旧版信息流冻结之前顺利过渡。

更新 YARA-L 规则

我们建议您将 YARA-L 规则更新为新的 GTI 产品名称,以保持不间断的覆盖范围。


旧版 Mandiant 信息流名称

新的 GTI 产品名称

许可层级

MANDIANT_FUSION_IOC

GTI_IOC

企业版或企业加强版

OPEN_SOURCE_INTEL_IOC

GTI_IOC

企业版或企业加强版

MANDIANT_ACTIVE_BREACH_IOC

GTI_IOC

企业加强版

YARA-L 迁移参考文档

如果您不想使用 Gemini 应用 功能,请使用这些代码段手动更新规则。

基本迁移

使用此 YARA-L 语法来匹配历史数据和新的 GTI 数据。

旧的 YARA-L 语法

$mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC"

推荐的 YARA-L 语法

(
    $mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC" OR 
    $mandiant.graph.metadata.product_name = "GTI_IOC"
)

了解迁移工作流

以下工作流反映了更新后的规则管理体验,旨在 引导您完成迁移。

  1. 确定受影响的规则。打开规则管理/列表 页面。 如果您的租户有受影响的规则,系统会显示醒目的全局横幅。
    • 指示 :引用旧版信息流的规则会显示警告图标或 Update Required 工具提示。
    • 操作 :点击问问 Gemini,帮助更新 或选择特定规则以查看详细信息。
  2. 分析规则详细信息 。当您打开受影响的规则时,规则编辑器 会突出显示旧版语法(例如 $mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC")。

    编辑器标头中会显示一个专用的迁移按钮,该按钮会触发 Gemini 侧边栏。

  3. 阅读 Gemini 辅助更新 。Gemini 侧边栏会自动加载预填充的情境卡片:

    • Gemini 会根据您的权利说明旧信息流和新的 GTI 信息流之间的映射。
    • Gemini 提供了一个建议的修复方案 代码块。查看更新后的 YARA-L 逻辑,该逻辑添加了 GTI_IOC,同时保留了历史覆盖范围的旧版引用。
  4. 点击应用于编辑器 ,将旧逻辑替换为建议的新语法。

  5. 验证新语法 。使用更新后的 GTI_IOC 语法保存规则后,系统会显示以下详细信息:

    • Update Required 警告图标会从编辑器和主规则列表 页面中消失。
    • 在您清除标记的规则时,迁移状态会实时更新。

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