Applied Threat Intelligence Fusion フィードの概要

以下でサポートされています。

Mandiant Fusion インジケーター フィードは、ハッシュ、IP、ドメイン、URL などのセキュリティ侵害インジケーター(IOC)のコレクションであり、既知の脅威アクター、マルウェア ストレイン、アクティブ キャンペーン、完成したインテリジェンス レポートに関連付けられています。最大限の価値を確保するため、このフィードには、Mandiant Intelligence がオープンソース フィードから慎重にチェックして検証した IOC も含まれており、高い精度が保証されています。Mandiant のキュレーション プロセスは次の手順で構成されます。

  • 最前線のインシデント対応: Mandiant のアナリストは、侵害を調査する中で、攻撃者のツールと手法に関する直接的な知識を得ています。

  • 脅威調査: 専門チームが脅威アクターの追跡、マルウェアの分析、新たな攻撃インフラストラクチャの発見します。

  • コンテキスト化: IOC が特定の脅威やキャンペーンにマッピングされるため、インシデントの把握と優先順位付けに役立ちます。

Breach Analytics のフィードは Fusion を基盤としており、Mandiant が現在調査している新たな侵害に関連するインジケーターを追加しています。最新の攻撃の傾向に関するリアルタイムの分析情報を提供します。YARA-L ルールは、Applied Threat Intelligence Fusion フィードのコンテキスト情報を使用して、単純なインジケーター一致ルールを強化できます。関連する脅威グループ、侵害された環境でのインジケーターの存在、悪意のある行為に対する Mandiant の自動信頼度スコアなどが含まれます。

Fusion フィードで YARA-L ルールを作成する

Fusion フィードを使用して YARA-L ルールを作成するプロセスは、他のコンテキスト エンティティ ソースを使用して YARA-L ルールを作成するプロセスと似ています。このタイプの YARA-L ルールを作成する方法については、コンテキスト認識分析を作成するをご覧ください。

イベントと一致セクション

ルールを作成するには、選択したコンテキスト エンティティ グラフをフィルタします。この場合は Fusion フィードです。次に、特定のインジケーター タイプでフィルタします。例: 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"

コンテキスト エンティティを使用しない YARA-L ルールと同様に、events セクションにイベントやコンテキスト エンティティの他の条件を追加できます。コンテキスト エンティティと UDM イベント フィールドからフィールドを結合できます。次の例では、プレースホルダ変数 ioc を使用して、コンテキスト エンティティとイベント間の推移結合を行います。このプレースホルダ変数は、特定の期間内の一致を保証するために match セクションで使用されます。

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

match:
   $ioc over 1h

YARA-L ルールで活用できるコンテキスト エンティティ フィールドの詳細については、Fusion フィードのコンテキスト エンティティ フィールドをご覧ください。

結果セクション

前の例に引き続き、基本インジケーター マッチング ルールは、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 によって識別された侵害環境でインジケーターが検出されたかどうかを示します。

これらの 2 つの結果変数は、別の 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
}

Fusion フィードのコンテキスト エンティティ フィールド

ルールでは、Mandiant Fusion インジケーター フィードの多くのフィールドを使用できます。これらのフィールドはすべて、統合データモデルのフィールド リストで定義されています。次のフィールドは、指標の優先順位付けに関連しています。

エンティティ フィールド 設定可能な値
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 タイムスタンプ(秒)

一部のフィールドには、正しい値にアクセスするために組み合わせて使用する必要がある Key-Value ペアがあります。次に例を示します。

エンティティ フィールド 1 エンティティ フィールド 2
metadata.threat.verdict_info.source_provider Mandiant のグローバル インテリジェンス metadata.threat.verdict_info.global_hits_count 整数
metadata.threat.verdict_info.source_provider Mandiant のグローバル インテリジェンス metadata.threat.verdict_info.global_customer_count 整数
metadata.threat.verdict_info.source_provider Mandiant のアナリスト インテリジェンス metadata.threat.verdict_info.confidence_score 整数
metadata.threat.verdict_info.source_provider Mandiant の自動インテリジェンス 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 でエンティティの一致を調べると、データの包括的なビューを取得し、指標アラートの優先度とコンテキストの評価に役立つ追加のフィールドを確認できます。

次の例は、初期参照ポイントとしての Fusion フィードのコンテキスト エンティティです。

{
  "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"

この場合、2 つの中間結果変数 is_attributed_malwareis_attributed_actor が結果変数 is_attributed に結合されます。

この例では、中間結果の値は数値値を返します。これにより、新しい結果変数で数値比較が可能になります。この例では、インジケーターに MALWARE または THREAT_ACTOR タイプの脅威関連付けが 1 つ以上ある場合、is_attributed は 1 以上の値になります。

YARA-L での柔軟な結合

IOC 間の柔軟な結合により、複数の UDM フィールドをコンテキスト エンティティに対して結合できます。これにより、複数の UDM フィールドがコンテキスト エンティティと結合されている場合に、必要なルールの数を減らすことができます。

次に、複数の UDM フィールドに柔軟な結合を使用する event セクションの例を示します。

  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)

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。