Applied Threat Intelligence Fusion Feed

Didukung di:

Applied Threat Intelligence (ATI) Fusion Feed adalah kumpulan Indikator Penyusupan (IoC), termasuk hash, IP, domain, dan URL, yang terkait dengan pelaku ancaman, jenis malware, kampanye aktif, dan pelaporan intelijen yang telah selesai. Feed ini juga mencakup IoC dari feed open source yang telah diperiksa dan divalidasi dengan cermat oleh Mandiant Intelligence, sehingga memaksimalkan nilai dan memberikan akurasi tinggi.

Proses seleksi Mandiant mencakup fase berikut:

  • Respons insiden garis depan: Saat menyelidiki pelanggaran, analis Mandiant memperoleh pengetahuan langsung tentang alat dan teknik penyerang.

  • 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 Breach Analytics dibuat berdasarkan ATI Fusion Feed dengan menyertakan indikator dari investigasi pelanggaran Mandiant yang baru dan aktif. Google Threat Intelligence memberikan insight real-time tentang tren serangan terbaru. Untuk meningkatkan pencocokan indikator, aturan YARA-L dapat menggunakan informasi kontekstual dari ATI Fusion Feed, seperti grup ancaman terkait, keberadaan indikator di lingkungan yang disusupi, atau skor Mandiant untuk tingkat bahaya otomatis.

Menulis aturan YARA-L dengan ATI Fusion Feed

Penulisan aturan YARA-L yang menggunakan ATI Fusion Feed di Google Security Operations mengikuti proses yang mirip dengan penulisan aturan YARA-L yang menggunakan sumber entity konteks lainnya. Untuk mengetahui informasi selengkapnya, lihat Membuat analisis kontekstual.

Bagian acara dan pertandingan

Untuk menulis aturan, ikuti langkah-langkah berikut: 1. Memfilter grafik entity konteks yang dipilih. Dalam kasus ini, Fusion Feed. 1. Memfilter jenis indikator tertentu. Contoh, FILE. Lihat contoh berikut:

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"

Anda dapat menambahkan kondisi lain dari peristiwa atau entity konteks di bagian events. Anda dapat menggabungkan kolom dari entity konteks dan kolom peristiwa UDM.

Dalam contoh berikut, variabel placeholder ioc digunakan untuk melakukan penggabungan transitif antara entity konteks dan peristiwa. Variabel ioc kemudian digunakan di bagian match untuk memastikan ada 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 digunakan dalam aturan YARA-L, lihat bagian Kolom entity konteks Fusion Feed.

Bagian hasil

Melanjutkan contoh sebelumnya, aturan pencocokan indikator dasar disiapkan terhadap hash file di entity konteks di kolom graph.entity.file.md5 dan kolom UDM principal.process.file.md5.

Karena aturan ini dapat mencocokkan sejumlah besar peristiwa, sebaiknya Anda menyaring aturan agar cocok dengan entitas konteks yang memiliki kecerdasan tertentu. Misalnya, Anda mungkin ingin mencocokkan skor keyakinan yang ditetapkan Mandiant ke indikator, apakah indikator tersebut terlihat di lingkungan yang disusupi atau jenis malware yang terkait dengan indikator tersebut. Semua ini dapat dilakukan di bagian outcome pada 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 digabungkan dalam fungsi max. Teknik ini diperlukan untuk aturan multi-peristiwa. Teknik yang sama digunakan untuk mengekstrak variabel pwn dari verdict_info, yang menunjukkan apakah indikator telah terlihat di lingkungan yang disusupi yang diidentifikasi oleh Mandiant.

Kedua variabel hasil ini kemudian digabungkan dalam variabel matched_conditions lain, yang memungkinkan penggunaan logika berantai di bagian condition.

Bagian Condition

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 entitas konteks ATI Fusion Feed

Anda dapat menggunakan banyak kolom dari ATI Fusion Feed dalam aturan. Semua kolom ini ditentukan dalam daftar kolom Unified Data Model. Kolom berikut relevan untuk memprioritaskan indikator:

Kolom entity Nilai yang memungkinkan
metadata.threat.associations.type MALWARE, THREAT_ACTOR
metadata.threat.associations.name Nama pengaitan 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 dalam kombinasi untuk mengakses nilai yang benar. Contoh:

Kolom entity 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 Mandiant Analyst Intel 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))

Memeriksa kecocokan entitas di Google Security Operations membantu Anda mendapatkan gambaran komprehensif tentang data, sehingga mengungkapkan kolom tambahan yang dapat berguna dalam menilai prioritas dan konteks pemberitahuan indikator.

Contoh berikut menunjukkan entity konteks Fusion Feed 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 dalam entity konteks, Anda dapat menggabungkan beberapa variabel hasil untuk membuat logika kondisional yang lebih kompleks. Variabel hasil perantara dapat digunakan untuk menggabungkan beberapa kolom. Variabel ini kemudian digabungkan untuk membentuk variabel hasil baru yang dapat digunakan di bagian condition.

Contoh:

// 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 contoh ini, dua variabel hasil perantara, is_attributed_malware dan is_attributed_actor, digabungkan dalam variabel hasil is_attributed.

Nilai hasil perantara menampilkan nilai numerik, yang memungkinkan perbandingan numerik dalam variabel hasil baru.

Nilai dalam is_attributed akan menjadi 1 atau lebih besar jika indikator memiliki setidaknya satu pengaitan ancaman jenis MALWARE atau THREAT_ACTOR.

Gabungan fleksibel dalam aturan YARA-L

Untuk mengurangi jumlah aturan yang diperlukan, Anda dapat menggunakan penggabungan fleksibel antara IoC untuk menghubungkan beberapa kolom UDM ke entity konteks.

Contoh berikut menunjukkan penggunaan penggabungan fleksibel untuk beberapa kolom UDM di bagian 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)

Memigrasikan feed lama Mandiant ke GTI

Google SecOps menggabungkan sumber data threat intelligence. Untuk menyediakan kumpulan Indikator Penyusupan (IoC) yang lebih luas dan menyederhanakan integrasi, kami bermigrasi dari feed Mandiant lama ke feed Google Threat Intelligence (GTI) terpadu.

Panduan ini ditujukan untuk engineer dan analis deteksi yang ingin mempertahankan cakupan ancaman tanpa gangguan saat bermigrasi ke feed GTI terpadu. Panduan ini menjelaskan cara memperbarui aturan YARA-L yang ada agar sesuai dengan IoC GTI baru sekaligus mempertahankan fungsi pemberitahuan lama. Dengan memperbarui sintaksis aturan menggunakan linimasa dan alur kerja migrasi yang disediakan, Anda memastikan transisi yang lancar sebelum feed lama dibekukan.

Memperbarui aturan YARA-L

Sebaiknya perbarui aturan YARA-L Anda ke nama produk GTI baru untuk mempertahankan cakupan yang tidak terputus.


Nama feed Mandiant lama

Nama produk GTI baru

Tingkat pemberian lisensi

MANDIANT_FUSION_IOC

GTI_IOC

Enterprise atau Enterprise+

OPEN_SOURCE_INTEL_IOC

GTI_IOC

Enterprise atau Enterprise+

MANDIANT_ACTIVE_BREACH_IOC

GTI_IOC

Enterprise+

Referensi migrasi YARA-L

Gunakan cuplikan ini untuk memperbarui aturan secara manual jika Anda tidak ingin menggunakan fungsi Terapkan Gemini.

Migrasi dasar

Gunakan sintaksis YARA-L ini untuk mencocokkan data historis dan data GTI baru.

Sintaksis YARA-L lama:

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

Sintaksis YARA-L yang direkomendasikan:

(
    $mandiant.graph.metadata.product_name = "GTI_IOC"
    $mandiant.graph.metadata.threat_intel.stable = true
)

Memahami alur kerja migrasi

Alur kerja berikut mencerminkan pengalaman Pengelolaan Aturan yang diperbarui dan dirancang untuk memandu Anda melalui migrasi.

  1. Identifikasi aturan yang terpengaruh. Buka halaman Rules Management/Lister. Banner global yang terlihat jelas akan muncul jika tenant Anda memiliki aturan yang terpengaruh.
    • Indikator: Aturan yang merujuk ke feed lama akan menampilkan ikon peringatan atau tooltip Update Required.
    • Tindakan: Klik Minta Gemini membantu memperbarui atau pilih aturan tertentu untuk melihat detail.
  2. Analisis detail aturan. Saat Anda membuka aturan yang terpengaruh, editor aturan akan menandai sintaksis lama (misalnya, $mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC").

    Tombol migrasi khusus akan muncul di header editor, yang memicu panel samping Gemini.

  3. Baca update yang dibantu Gemini. Panel samping Gemini akan otomatis memuat kartu konteks yang telah diisi otomatis:

    • Gemini menjelaskan pemetaan antara feed lama dan feed GTI baru berdasarkan hak Anda.
    • Gemini menyediakan blok kode Suggested Fix. Tinjau logika YARA-L yang diperbarui, yang menambahkan GTI_IOC sekaligus mempertahankan referensi lama untuk cakupan historis.
  4. Klik Apply to Editor untuk menukar logika lama dengan sintaksis baru yang disarankan.

  5. Verifikasi sintaksis baru Anda. Setelah aturan disimpan dengan sintaksis GTI_IOC yang diperbarui, detail berikut akan muncul:

    • Ikon peringatan Update Required akan hilang dari editor dan halaman Rules Lister utama.
    • Status migrasi Anda akan diperbarui secara real-time saat Anda menghapus aturan yang ditandai.

Memahami pemfilteran penyerapan feed GTI_IOC

Untuk memastikan fidelitas tinggi dan meminimalkan gangguan, Google SecOps memfilter IoC di feed GTI_IOC. Google SecOps menyertakan IoC dari feed hanya jika IoC tersebut memenuhi setidaknya salah satu kriteria berikut:

  • Memiliki skor keyakinan GTI 80 atau lebih tinggi.

  • File tersebut memiliki putusan GTI berbahaya.

  • Memiliki keterkaitan ancaman yang diketahui (misalnya, terkait dengan kampanye ancaman tertentu).

IoC yang belum ditinjau dan memenuhi kriteria ini tetap diserap ke Google SecOps dan tersedia untuk digunakan dalam aturan YARA-L Anda, tetapi ditandai dengan metadata.threat.stable = false. Setelah IoC ini ditinjau atau divalidasi sepenuhnya, tag stable akan diperbarui menjadi true.

Untuk mengetahui informasi selengkapnya, lihat Skor Indikator Google Threat Intelligence.

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.