Fusionsfeed für angewandte Bedrohungsinformationen – Übersicht

Unterstützt in:

Der Mandiant Fusion-Indikatorfeed enthält eine Sammlung von Kompromittierungsindikatoren (IOCs), darunter Hashes, IP-Adressen, Domains und URLs, die mit bekannten Bedrohungsakteuren, Malware-Stämmen, aktiven Kampagnen und aussagekräftigen Intelligence-Berichten in Verbindung stehen. Für den größtmöglichen Nutzen enthält der Feed auch IOCs, die von Mandiant Intelligence sorgfältig aus Open-Source-Feeds geprüft und validiert wurden. So wird eine hohe Genauigkeit gewährleistet. Der Auswahlprozess von Mandiant besteht aus den folgenden Schritten.

  • Vorabmaßnahmen bei Vorfällen: Mandiant-Analysten gewinnen bei der Untersuchung von Sicherheitsverletzungen aus erster Hand Informationen über die Tools und Techniken der Angreifer.

  • Bedrohungsforschung: Spezielle Teams verfolgen Bedrohungsakteure, analysieren Malware und identifizieren neue Angriffsinfrastrukturen.

  • Kontextualisierung: IOCs werden bestimmten Bedrohungen und Kampagnen zugeordnet, was das Verständnis und die Priorisierung von Vorfällen erleichtert.

Der Breach Analytics-Feed basiert auf Fusion und enthält zusätzliche Indikatoren für neue und aufkommende Sicherheitsverletzungen, die von Mandiant aktiv untersucht werden. Sie bietet Echtzeitinformationen zu den neuesten Angriffstrends. YARA-L-Regeln können Kontextinformationen aus dem Fusion-Feed der angewandten Bedrohungsinformationen verwenden, um einfache Regeln für den Abgleich von Indikatoren zu verbessern. Dazu gehören zugehörige Bedrohungsgruppen, das Vorhandensein eines Indikators in einer manipulierten Umgebung oder der automatisierte Konfidenzwert für schädliche Aktivitäten von Mandiant.

YARA-L-Regeln mit dem Fusion-Feed schreiben

Das Erstellen von YARA-L-Regeln mit dem Fusion-Feed ähnelt dem Erstellen von YARA-L-Regeln mit anderen Quellen für Kontextentitäten. Weitere Informationen zum Erstellen dieser Art von YARA-L-Regel finden Sie unter Kontextbezogene Analysen erstellen.

Bereich „Ereignisse und Abgleich“

Filtern Sie das ausgewählte Kontextentitätsdiagramm, um eine Regel zu erstellen. In diesem Fall ist es der Fusion-Feed. Filtern Sie dann nach einem bestimmten Indikatortyp. Beispiel: FILE. Folgendes ist ein Beispiel.

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"

Ähnlich wie bei YARA-L-Regeln, die keine Kontextentitäten verwenden, können Sie im Abschnitt events weitere Bedingungen für das Ereignis oder die Kontextentität hinzufügen. Sie können ein Feld aus der Kontextentität mit dem UDM-Ereignisfeld verknüpfen. Im folgenden Beispiel wird die Platzhaltervariable ioc verwendet, um eine übertragbare Verbindung zwischen der Kontextentität und dem Ereignis herzustellen. Diese Platzhaltervariable wird dann im Abschnitt match verwendet, um eine Übereinstimmung in einem bestimmten Zeitraum sicherzustellen.

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

match:
   $ioc over 1h

Weitere Informationen zu Kontextereignisfeldern, die in YARA-L-Regeln verwendet werden können, finden Sie im Abschnitt Kontextereignisfelder in Fusion-Feeds.

Abschnitt „Ergebnis“

Im Anschluss an das vorherige Beispiel wird die grundlegende Übereinstimmungsregel für Indikatoren für Datei-Hashes eingerichtet, die in den Kontextentitäten im Feld graph.entity.file.md5 und im UDM-Feld principal.process.file.md5 platziert sind. Diese einfache Abgleichsregel kann mit einer großen Anzahl von Ereignissen übereinstimmen. Daher wird empfohlen, die Regelabgleiche auf Kontextentitäten mit bestimmten Informationen zu verfeinern, die von Interesse sind. Dazu gehören beispielsweise der von Mandiant dem Indikator zugewiesene Konfidenzwert, ob er in einer gehackten Umgebung beobachtet wurde oder die mit dem Indikator verknüpfte Malwarefamilie. All das kann im Bereich outcome der Regel erledigt werden.

 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)

Im Abschnitt outcome der YARA-L-Regel wird der Wert für die Wahrscheinlichkeit mithilfe einer if statement-Funktion extrahiert, die in einer max-Funktion verpackt ist. Diese Methode ist für Mehrfachereignisregeln erforderlich. Mit derselben Methode wird die Variable pwn aus verdict_info extrahiert. Sie gibt an, ob ein Indikator in einer von Mandiant erkannten Umgebung mit Sicherheitsverletzungen gefunden wurde.

Diese beiden Ergebnisvariablen werden dann in einer weiteren matched_conditions-Variablen kombiniert, was die Verwendung verketteter Logik im Abschnitt condition ermöglicht.

Abschnitt „Bedingung“

Im Abschnitt condition wird dafür gesorgt, dass e1, context_graph und matched_conditions vorhanden sind und/oder der angegebenen Bedingung entsprechen.

 condition:
   // Ensure $e1, $context_graph and $matched_conditions conditions are met.
   $e1 AND $context_graph AND $matched_conditions = 1

Vollständige YARA-L-Regel

Die Regel ist jetzt einsatzbereit und sollte so aussehen:

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
}

Felder für Fusion Feed-Kontextentitäten

Sie können viele Felder aus dem Mandiant Fusion-Indikatorfeed in Regeln verwenden. Diese Felder sind alle in der Liste der Felder für einheitliche Datenmodelle definiert. Die folgenden Felder sind für die Priorisierung von Indikatoren relevant:

Entitätsfeld Mögliche Werte
metadata.threat.associations.type MALWARE, THREAT_ACTOR
metadata.threat.associations.name Name der Bedrohungsverknüpfung
metadata.threat.verdict_info.pwn TRUE, FALSE
metadata.threat.verdict_info.pwn_first_tagged_time.seconds Zeitstempel (Sekunden)

Einige Felder enthalten Schlüssel/Wert-Paare, die in Kombination verwendet werden müssen, um auf die richtigen Werte zuzugreifen. Hier ein Beispiel:

Entitätsfeld 1 Werte Entitätsfeld 2 Werte
metadata.threat.verdict_info.source_provider Mandiant Global Intel metadata.threat.verdict_info.global_hits_count Ganzzahl
metadata.threat.verdict_info.source_provider Mandiant Global Intel metadata.threat.verdict_info.global_customer_count Ganzzahl
metadata.threat.verdict_info.source_provider Mandiant Analyst Intel metadata.threat.verdict_info.confidence_score Ganzzahl
metadata.threat.verdict_info.source_provider Mandiant Automated Intel metadata.threat.verdict_info.confidence_score Ganzzahl

Im Abschnitt outcome einer YARA-L-Regel können Sie mit dem folgenden Befehl auf einen Wert zugreifen, der durch einen bestimmten Schlüssel angegeben ist:

$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))

Wenn Sie Entitätsübereinstimmungen in Google Security Operations untersuchen, erhalten Sie einen umfassenden Überblick über die Daten. Dabei werden zusätzliche Felder angezeigt, die bei der Bewertung der Priorität und des Kontexts einer Indikatorbenachrichtigung hilfreich sein können.

Im Folgenden finden Sie ein Beispiel für eine Fusion Feed-Kontextentität als Ausgangspunkt.

{
  "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"
      },
...
    ]
  }
}

Komplexe Bedingungen

Wenn Sie mehrere Felder gleichzeitig in einem Kontextelement verwenden möchten, können Sie mehrere Ergebnisvariablen kombinieren, um eine komplexere bedingte Logik zu erstellen. Wenn Sie mehrere Felder kombinieren möchten, können Sie Zwischenergebnisvariablen erstellen. Diese Variablen werden dann zu einer neuen Ergebnisvariablen kombiniert, die im Bereich condition verwendet werden kann.

Folgendes ist ein Beispiel.

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

In diesem Fall werden zwei Zwischenergebnisvariablen, is_attributed_malware und is_attributed_actor, in einer Ergebnisvariablen is_attributed kombiniert.

In diesem Beispiel geben die Zwischenergebniswerte numerische Werte zurück, was numerische Vergleiche in der neuen Ergebnisvariablen ermöglicht. In diesem Beispiel hat is_attributed den Wert 1 oder höher, wenn der Indikator mindestens eine Bedrohungsverknüpfung vom Typ MALWARE oder THREAT_ACTOR hat.

Flexible Joins in YARA-L

Durch flexible Zusammenführungen zwischen IOCs können mehrere UDM-Felder mit einer Kontextentität zusammengeführt werden. Dadurch wird die Anzahl der erforderlichen Regeln reduziert, wenn mehrere UDM-Felder mit Kontextentitäten zusammengeführt werden.

Im Folgenden finden Sie ein Beispiel für einen event-Abschnitt, in dem flexible Joins für mehrere UDM-Felder verwendet werden.

  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)