Ringkasan feed fusi Applied Threat Intelligence

Feed indikator Mandiant Fusion adalah kumpulan indikator penyusupan (IOC), termasuk hash, IP, domain, dan URL, yang terkait dengan pelaku 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 tinggi. Proses kurasi Mandiant terdiri dari beberapa langkah berikut.

  • Respons insiden garis depan: Analis Mandiant mendapatkan pengetahuan langsung tentang alat dan teknik penyerang saat menyelidiki pelanggaran.

  • Riset ancaman: Tim khusus melacak pelaku ancaman, menganalisis malware, dan menemukan infrastruktur serangan yang berkembang.

  • Kontekstualisasi: IOC dipetakan ke ancaman dan kampanye tertentu yang membantu memahami dan memprioritaskan insiden.

Feed Breach Analytics dibangun berdasarkan Fusion, menambahkan indikator yang terkait dengan pelanggaran baru dan yang baru muncul yang secara aktif diselidiki Mandiant. Alat ini memberikan insight real-time tentang tren serangan terbaru. Aturan YARA-L dapat memanfaatkan informasi kontekstual dari Feed Applied Threat Intelligence Fusion untuk meningkatkan kualitas aturan pencocokan indikator sederhana. Hal ini mencakup kelompok ancaman terkait, keberadaan indikator di lingkungan yang disusupi, atau skor keyakinan berbahaya otomatis Mandiant.

Menulis aturan YARA-L dengan Feed Fusion

Proses penulisan aturan YARA-L menggunakan Fusion Feed mirip dengan menulis aturan YARA-L dengan sumber entity konteks lainnya. Untuk mengetahui informasi selengkapnya tentang cara menulis jenis aturan YARA-L ini, lihat Membuat analisis kontekstual.

Bagian acara dan pertandingan

Untuk menulis aturan, filter grafik entity konteks yang dipilih. Dalam hal ini, feed tersebut adalah feed Fusion. Kemudian, filter 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 = "ENTITY_CONTEXT"
   $context_graph.graph.metadata.entity_type = "FILE"

Serupa dengan aturan YARA-L yang tidak menggunakan entity konteks, 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 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 Fusion Feed.

Bagian hasil

Melanjutkan dengan contoh sebelumnya, aturan pencocokan indikator dasar disiapkan berdasarkan hash file yang ditempatkan di entity konteks di kolom graph.entity.file.md5 dan kolom UDM principal.process.file.md5. Aturan pencocokan sederhana ini dapat cocok dengan sejumlah besar peristiwa. Oleh karena itu, sebaiknya pertajam pencocokan aturan pada entity konteks yang memiliki kecerdasan tertentu yang menarik. Misalnya, hal ini dapat mencakup skor keyakinan yang ditetapkan untuk indikator oleh Mandiant, baik terlihat di lingkungan yang disusupi, atau kelompok 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 dalam 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 seperti yang diidentifikasi oleh Mandiant.

Kedua variabel hasil ini kemudian digabungkan bersama 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

Lengkapi aturan YARA-L

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 = "ENTITY_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 Feed Fusion

Anda dapat menggunakan banyak kolom dari feed indikator Mandiant Fusion di aturan. Semua kolom ini ditentukan dalam daftar kolom Model Data Terpadu. Kolom berikut relevan untuk memprioritaskan indikator:

Kolom entity 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 key-value pair yang perlu digunakan bersamaan untuk mengakses nilai yang benar. Berikut adalah contohnya.

Kolom entitas 1 Nilai Kolom entitas 2 Nilai
metadata.threat.verdict_info.source_provider Intel Global Mandiant metadata.threat.verdict_info.global_hits_count Bilangan bulat
metadata.threat.verdict_info.source_provider Intel Global Mandiant metadata.threat.verdict_info.global_customer_count Bilangan bulat
metadata.threat.verdict_info.source_provider Analis Mandiant Intel metadata.threat.verdict_info.confidence_score Bilangan bulat
metadata.threat.verdict_info.source_provider Intel Otomatis Mandiant metadata.threat.verdict_info.confidence_score Bilangan bulat

Di bagian outcome dalam 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 pencocokan entity di Chronicle, Anda dapat memperoleh tampilan data yang komprehensif, sehingga akan 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": "ENTITY_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 satu entity konteks, Anda dapat menggabungkan beberapa variabel hasil sekaligus untuk membuat logika bersyarat yang lebih kompleks. Untuk menggabungkan beberapa bidang, 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 bersama 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 pengaitan ancaman dari jenis MALWARE atau THREAT_ACTOR.

Bergabung Fleksibel di YARA-L

Gabungan fleksibel antar-IOC memungkinkan beberapa kolom UDM digabungkan dengan entity konteks. Hal ini mengurangi jumlah aturan yang diperlukan jika beberapa kolom UDM digabungkan dengan entity 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 = "ENTITY_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)