Applied Threat Intelligence Fusion フィード
Applied Threat Intelligence(ATI)Fusion フィードは、ハッシュ、IP、ドメイン、URL などのセキュリティ侵害インジケーター(IoC)のコレクションであり、既知の脅威アクター、マルウェア ストレイン、アクティブ キャンペーン、完成したインテリジェンス レポートに関連付けられています。このフィードには、Mandiant Intelligence が慎重にチェックして検証したオープンソース フィードの IoC も含まれているため、価値を最大限に高め、高い精度を実現しています。
Mandiant のキュレーション プロセスには、次のフェーズが含まれます。
最前線のインシデント対応: 侵害を調査する中で、Mandiant のアナリストは攻撃者のツールと手法に関する知識を直接得ています。
脅威調査: 専門チームが脅威アクターの追跡、マルウェアの分析、新たな攻撃インフラストラクチャの発見します。
コンテキスト化: IoC が特定の脅威やキャンペーンにマッピングされるため、インシデントの理解と優先順位付けに役立ちます。
Breach Analytics フィードは、ATI Fusion フィードを基盤としており、Mandiant の新規およびアクティブな侵害調査のインジケーターが含まれています。最新の攻撃の傾向に関するリアルタイムの分析情報を提供します。インジケーターのマッチングを強化するために、YARA-L ルールでは、関連する脅威グループ、侵害された環境でのインジケーターの存在、Mandiant の自動悪意度スコアなど、ATI Fusion フィードのコンテキスト情報を使用できます。
ATI Fusion フィードで YARA-L ルールを作成する
Google Security Operations で ATI Fusion フィードを使用する 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 ルールで使用できるコンテキスト エンティティ フィールドの詳細については、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 セクションでは、e1、context_graph、matched_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 Fusion フィードのコンテキスト エンティティ フィールド
ルールでは、ATI Fusion フィードの多くのフィールドを使用できます。これらのフィールドはすべて、統合データモデルのフィールド リストで定義されています。インジケーターの優先順位付けに関連するフィールドは次のとおりです。
| エンティティ フィールド | 設定可能な値 |
|---|---|
metadata.threat.associations.type |
MALWARE、THREAT_ACTOR |
metadata.threat.associations.name |
脅威の関連付け名 |
metadata.threat.verdict_info.pwn |
TRUE、FALSE |
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_malware と is_attributed_actor が結果変数 is_attributed に結合されています。
中間結果の値は数値を返すため、新しい結果変数で数値を比較できます。
インジケーターに MALWARE または THREAT_ACTOR タイプの脅威関連付けが 1 つ以上ある場合、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 フィードに移行しながら、脅威の検出範囲を中断することなく維持したい検出エンジニアとアナリストを対象としています。このドキュメントでは、以前のアラート機能を維持しながら、新しい GTI IoC に一致するように既存の YARA-L ルールを更新する方法について説明します。提供されたタイムラインと移行ワークフローを使用してルール構文を更新することで、以前のフィードがフリーズされる前にスムーズに移行できます。
YARA-L ルールを更新する
中断のないカバレッジを維持するため、YARA-L ルールを新しい GTI プロダクト名に更新することをおすすめします。
以前の Mandiant フィード名 |
新しい GTI 商品名 |
ライセンス階層 |
|---|---|---|
MANDIANT_FUSION_IOC |
GTI_IOC |
Enterprise または Enterprise+ |
OPEN_SOURCE_INTEL_IOC |
GTI_IOC |
Enterprise または Enterprise+ |
MANDIANT_ACTIVE_BREACH_IOC |
GTI_IOC |
Enterprise+ |
YARA-L 移行リファレンス
Gemini の [適用] 関数を使用しない場合は、これらのスニペットを使用してルールを手動で更新します。
基本移行
この YARA-L 構文を使用して、過去のデータと新しい GTI データの両方を照合します。
以前の YARA-L 構文:
$mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC"
推奨される YARA-L 構文:
(
$mandiant.graph.metadata.product_name = "GTI_IOC"
$mandiant.graph.metadata.threat_intel.stable = true
)
移行ワークフローを理解する
次のワークフローは、移行をガイドするように設計された更新されたルール管理エクスペリエンスを反映しています。
- 影響を受けるルールを特定します。[ルール管理/リスト] ページを開きます。テナントに影響を受けるルールがある場合は、目立つグローバル バナーが表示されます。
- インジケーター: 以前のフィードを参照するルールには、警告アイコンまたは
Update Requiredツールチップが表示されます。 - 対応: [Gemini に更新を依頼] をクリックするか、特定のルールを選択して詳細を確認します。
- インジケーター: 以前のフィードを参照するルールには、警告アイコンまたは
ルールの詳細を分析する。影響を受けるルールを開くと、ルールエディタで以前の構文(
$mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC"など)がハイライト表示されます。エディタのヘッダーに専用の移行ボタンが表示され、Gemini サイドパネルがトリガーされます。
Gemini を活用した更新をご覧ください。Gemini サイドパネルに、事前入力されたコンテキスト カードが自動的に読み込まれます。
- Gemini は、利用資格に基づいて、以前のフィードと新しい GTI フィードのマッピングを説明します。
- Gemini が [Suggested Fix] コードブロックを提供します。更新された YARA-L ロジックを確認します。このロジックでは、過去のカバレッジのレガシー参照を維持しながら
GTI_IOCが追加されています。
[エディタに適用] をクリックして、古いロジックを新しい推奨構文に置き換えます。
新しい構文を確認します。更新された
GTI_IOC構文でルールを保存すると、次の詳細が表示されます。- エディタとメインの [ルール一覧] ページから [更新が必要です] 警告アイコンが消えます。
- フラグ付きのルールをクリアすると、移行ステータスがリアルタイムで更新されます。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。