Übersicht über den Applied Threat Intelligence Fusion-Feed

Unterstützt in:

Der Mandiant Fusion-Indikatorfeed ist eine Sammlung von Kompromittierungsindikatoren (indicators of compromise, IOCs), darunter Hashes, IPs, Domains und URLs, die mit bekannten Bedrohungsakteuren, Malware-Varianten, aktiven Kampagnen und abgeschlossenen Intelligence-Berichten in Verbindung stehen. Um den größtmöglichen Nutzen zu erzielen, enthält der Feed auch IOCs, die von Mandiant Intelligence sorgfältig geprüft und aus Open-Source-Feeds validiert wurden, um eine hohe Genauigkeit zu gewährleisten. Der Kuratierungsprozess von Mandiant besteht aus den folgenden Schritten.

  • Incident Response an vorderster Front: Mandiant-Analysten erhalten bei der Untersuchung von Sicherheitsverletzungen Informationen aus erster Hand zu den Tools und Techniken von Angreifern.

  • Bedrohungsrecherche: Spezialisierte Teams verfolgen Bedrohungsakteure, analysieren Malware und decken neue Angriffsstrukturen auf.

  • 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 Indikatoren, die mit neuen und aufkommenden Sicherheitsverletzungen in Verbindung stehen, die Mandiant aktiv untersucht. Sie erhalten Echtzeitinformationen zu den neuesten Angriffstrends. YARA-L-Regeln können Kontextinformationen aus dem Applied Threat Intelligence Fusion Feed nutzen, 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 die automatische Konfidenzbewertung von Mandiant für die Bösartigkeit.

YARA-L-Regeln mit dem Fusion-Feed schreiben

Das Schreiben von YARA-L-Regeln mit Fusion Feed ähnelt dem Schreiben von YARA-L-Regeln mit anderen Kontextentitätsquellen. Weitere Informationen zum Schreiben dieser Art von YARA-L-Regel finden Sie unter Kontextbezogene Analysen erstellen.

Bereich „Ereignisse und Spiele“

Um eine Regel zu schreiben, filtern Sie das ausgewählte Kontextentitätsdiagramm. In diesem Fall ist es der Fusionsfeed. 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, in denen keine Kontextentitäten verwendet werden, können Sie im Abschnitt events beliebige andere Bedingungen des Ereignisses oder der Kontextentität hinzufügen. Sie können ein Feld aus der Kontextentität und ein UDM-Ereignisfeld verknüpfen. Im folgenden Beispiel wird die Platzhaltervariable ioc verwendet, um einen transitiven Join zwischen der Kontextentität und dem Ereignis auszuführen. Diese Platzhaltervariable wird dann im Abschnitt match verwendet, um eine Übereinstimmung in einem bestimmten Zeitraum zu gewährleisten.

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

match:
   $ioc over 1h

Weitere Informationen zu Kontextentitätsfeldern, die in YARA-L-Regeln verwendet werden können, finden Sie im Abschnitt Kontextentitätsfelder für Fusion Feed.

Abschnitt „Ergebnis“

Im vorherigen Beispiel wird die grundlegende Regel für den Abgleich von Indikatoren für Dateihashes eingerichtet, die in den Kontextentitäten im Feld graph.entity.file.md5 und im UDM-Feld principal.process.file.md5 platziert werden. Mit dieser einfachen Abgleichsregel kann eine große Anzahl von Ereignissen abgeglichen werden. Daher empfiehlt es sich, den Regelabgleich auf Kontextentitäten zu beschränken, die bestimmte Informationen enthalten, die von Interesse sind. Dazu können beispielsweise der von Mandiant zugewiesene Konfidenzwert für den Indikator, die Frage, ob er in einer Umgebung mit Sicherheitsverletzung beobachtet wurde, oder die mit dem Indikator verknüpfte Malware-Familie gehören. Das kann alles im Abschnitt outcome der Regel erfolgen.

 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 outcome-Abschnitt der YARA-L-Regel wird der Vertrauenswert mit einem if statement extrahiert, der in eine max-Funktion eingebettet ist. Diese Technik ist für Mehrfachereignisregeln erforderlich. Dieselbe Methode wird verwendet, um die Variable pwn aus verdict_info zu extrahieren. Sie gibt an, ob ein Indikator in einer kompromittierten Umgebung gefunden wurde, die von Mandiant identifiziert wurde.

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

Abschnitt „Bedingung“

Im Abschnitt condition wird geprüft, ob 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 Kontextentitäten im Fusion-Feed

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 Bedrohungszuordnung
metadata.threat.verdict_info.pwn TRUE, FALSE
metadata.threat.verdict_info.pwn_first_tagged_time.seconds Zeitstempel (Sekunden)

Einige Felder haben 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 Analysteninformationen von Mandiant metadata.threat.verdict_info.confidence_score Ganzzahl
metadata.threat.verdict_info.source_provider Automatisierte Informationen von Mandiant metadata.threat.verdict_info.confidence_score Ganzzahl

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

$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. So werden zusätzliche Felder sichtbar, die bei der Bewertung der Priorität und des Kontexts einer Indikatorbenachrichtigung hilfreich sein können.

Im Folgenden sehen Sie ein Beispiel für eine Kontextentität in einem Fusion-Feed als ersten Bezugspunkt.

{
  "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 einer Kontextentität 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 Zwischenvariablen für das Ergebnis erstellen. Diese Variablen werden dann kombiniert, um eine neue Ergebnisvariable zu bilden, die im Abschnitt 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 werden für die Zwischenergebniswerte numerische Werte zurückgegeben, was numerische Vergleiche in der neuen Ergebnisvariablen ermöglicht. In diesem Beispiel ist is_attributed ein Wert von 1 oder höher, wenn der Indikator mindestens eine Bedrohungszuordnung vom Typ MALWARE oder THREAT_ACTOR hat.

Flexible Joins in YARA-L

Flexible Joins zwischen IOCs ermöglichen es, mehrere UDM-Felder mit einer Kontextentität zu verknüpfen. Dadurch wird die Anzahl der erforderlichen Regeln reduziert, wenn mehrere UDM-Felder mit Kontextentitäten verknüpft werden.

Im Folgenden sehen 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)

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten