Ringkasan feed gabungan Applied Threat Intelligence
Feed indikator Mandiant Fusion adalah kumpulan indikator penyusupan (IOC), termasuk hash, IP, domain, dan URL, yang terkait dengan aktor ancaman yang diketahui, jenis malware, kampanye aktif, dan pelaporan intelijen yang telah selesai. Untuk memastikan nilai maksimum, feed juga menyertakan IOC yang telah diperiksa dan divalidasi dengan cermat oleh Mandiant Intelligence dari feed open source, sehingga memastikan akurasi yang tinggi. Proses seleksi Mandiant terdiri dari langkah-langkah berikut.
Respons insiden garis depan: Analis Mandiant memperoleh pengetahuan langsung tentang alat dan teknik penyerang saat menyelidiki pelanggaran.
Riset ancaman: Tim khusus melacak pelaku ancaman, menganalisis malware, dan mengungkap infrastruktur serangan yang muncul.
Kontekstualisasi: IOC dipetakan ke ancaman dan kampanye tertentu yang membantu dalam memahami dan memprioritaskan insiden.
Feed Analisis Pelanggaran dibuat berdasarkan Fusion, dengan menambahkan indikator yang terkait dengan pelanggaran baru dan yang muncul yang sedang diselidiki secara aktif oleh Mandiant. Fitur ini memberikan insight real-time tentang tren serangan terbaru. Aturan YARA-L dapat memanfaatkan informasi kontekstual dari Feed Gabungan Intelijen Ancaman yang Diterapkan untuk meningkatkan aturan pencocokan indikator sederhana. Hal ini mencakup kelompok ancaman terkait, kehadiran indikator di lingkungan yang disusupi, atau skor keyakinan otomatis Mandiant terhadap niat jahat.
Menulis aturan YARA-L dengan Feed Gabungan
Proses penulisan aturan YARA-L menggunakan Feed Gabungan mirip dengan penulisan aturan YARA-L dengan sumber entitas konteks lainnya. Untuk mengetahui informasi selengkapnya tentang cara menulis aturan YARA-L jenis ini, lihat Membuat analisis yang memahami konteks.
Bagian acara dan pertandingan
Untuk menulis aturan, filter grafik entity konteks yang dipilih.
Dalam hal ini, feed-nya adalah feed Fusion. Kemudian, filter pada jenis indikator
tertentu. Misalnya, FILE
. Berikut adalah contohnya.
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"
Mirip dengan aturan YARA-L yang tidak menggunakan entitas konteks, Anda dapat menambahkan kondisi lain dari peristiwa atau entitas konteks di bagian events
. Anda dapat menggabungkan kolom dari entitas konteks dan kolom peristiwa UDM. Dalam contoh berikut, variabel placeholder ioc
digunakan untuk melakukan gabungan transitif antara entity konteks dan peristiwa. Variabel placeholder ini kemudian digunakan
di bagian match
untuk memastikan kecocokan dalam jangka waktu tertentu.
$ioc = $context_graph.graph.entity.file.md5
$ioc = $e1.principal.process.file.md5
match:
$ioc over 1h
Untuk mengetahui informasi selengkapnya tentang kolom entity konteks yang dapat dimanfaatkan dalam aturan YARA-L, lihat bagian Kolom entity konteks Feed Gabungan.
Bagian hasil
Melanjutkan contoh sebelumnya, aturan pencocokan indikator dasar disiapkan
terhadap hash file yang ditempatkan di entity konteks pada kolom graph.entity.file.md5
dan kolom UDM principal.process.file.md5
.
Aturan pencocokan sederhana ini dapat mencocokkan sejumlah besar peristiwa. Oleh karena itu, sebaiknya Anda menyempurnakan kecocokan aturan pada entity konteks yang memiliki kecerdasan tertentu yang menarik.
Misalnya, hal ini dapat mencakup skor keyakinan yang ditetapkan ke indikator oleh Mandiant, apakah indikator tersebut terlihat di lingkungan yang dilanggar, atau keluarga malware yang terkait dengan indikator tersebut. Semua ini dapat dilakukan di bagian outcome
aturan.
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)
Di bagian outcome
aturan YARA-L, skor keyakinan diekstrak menggunakan if statement
yang di-wrap dalam fungsi max
. Teknik ini diperlukan untuk aturan multiperistiwa. Teknik yang sama digunakan untuk mengekstrak variabel pwn
dari verdict_info
, yang menunjukkan apakah indikator telah terlihat di lingkungan yang dilanggar seperti yang diidentifikasi oleh Mandiant.
Kedua variabel hasil ini kemudian digabungkan dalam variabel
matched_conditions
lain, yang memungkinkan penggunaan logika berantai
di bagian condition
.
Bagian kondisi
Bagian condition
memastikan bahwa e1
,
context_graph
, dan matched_conditions
ada dan/atau
cocok dengan kondisi yang ditentukan.
condition:
// Ensure $e1, $context_graph and $matched_conditions conditions are met.
$e1 AND $context_graph AND $matched_conditions = 1
Aturan YARA-L lengkap
Pada tahap ini, aturan siap digunakan dan akan terlihat seperti berikut:
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
}
Kolom entity konteks Feed Gabungan
Anda dapat menggunakan banyak kolom dari feed indikator Mandiant Fusion dalam aturan. Semua kolom ini ditentukan dalam daftar kolom Unified Data Model. Kolom berikut relevan untuk memprioritaskan indikator:
Kolom entitas | Nilai yang memungkinkan |
---|---|
metadata.threat.associations.type |
MALWARE , THREAT_ACTOR |
metadata.threat.associations.name |
Nama asosiasi ancaman |
metadata.threat.verdict_info.pwn |
TRUE , FALSE |
metadata.threat.verdict_info.pwn_first_tagged_time.seconds |
Stempel waktu (detik) |
Beberapa kolom memiliki pasangan nilai kunci yang perlu digunakan bersamaan untuk mengakses nilai yang benar. Berikut adalah contohnya.
Kolom entitas 1 | Nilai | Kolom entity 2 | Nilai |
---|---|---|---|
metadata.threat.verdict_info.source_provider |
Mandiant Global Intel | metadata.threat.verdict_info.global_hits_count |
Bilangan bulat |
metadata.threat.verdict_info.source_provider |
Mandiant Global Intel | metadata.threat.verdict_info.global_customer_count |
Bilangan bulat |
metadata.threat.verdict_info.source_provider |
Analisis Intelijen Mandiant | metadata.threat.verdict_info.confidence_score |
Bilangan bulat |
metadata.threat.verdict_info.source_provider |
Mandiant Automated Intel | metadata.threat.verdict_info.confidence_score |
Bilangan bulat |
Di bagian outcome
aturan YARA-L, Anda dapat mengakses nilai yang ditetapkan
oleh kunci tertentu menggunakan perintah berikut:
$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))
Dengan memeriksa kecocokan entitas di Google Security Operations, Anda dapat memperoleh gambaran komprehensif tentang data, yang mengungkapkan kolom tambahan yang dapat berguna dalam menilai prioritas dan konteks pemberitahuan indikator.
Berikut adalah contoh entitas konteks Feed Fusion sebagai titik referensi awal.
{
"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"
},
...
]
}
}
Kondisi kompleks
Untuk menggunakan beberapa kolom sekaligus dalam entity konteks, Anda dapat menggabungkan beberapa variabel hasil untuk membuat logika bersyarat yang lebih kompleks.
Untuk menggabungkan beberapa kolom, Anda dapat membuat variabel hasil perantara.
Variabel ini kemudian digabungkan untuk membentuk variabel hasil baru yang dapat
digunakan di bagian condition
.
Berikut adalah contohnya.
// 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"
Dalam hal ini, dua variabel hasil perantara, is_attributed_malware
dan is_attributed_actor
, digabungkan dalam variabel hasil
is_attributed
.
Dalam contoh ini, nilai hasil perantara menampilkan nilai numerik, yang
memungkinkan perbandingan numerik dalam variabel hasil baru.
Dalam contoh ini, is_attributed
akan bernilai 1 atau lebih besar jika indikator memiliki setidaknya satu asosiasi ancaman berjenis MALWARE
atau THREAT_ACTOR
.
Penggabungan Fleksibel di YARA-L
Penggabungan yang fleksibel antara IOC memungkinkan beberapa kolom UDM digabungkan dengan entitas konteks. Hal ini mengurangi jumlah aturan yang diperlukan jika beberapa kolom UDM digabungkan dengan entitas konteks.
Berikut adalah contoh bagian event
yang menggunakan gabungan fleksibel untuk
beberapa kolom 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)
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.