Applied Threat Intelligence Fusion-Feed – Übersicht

Unterstützt in:

Der Indikator-Feed von Mandiant Fusion enthält eine Sammlung von Indikatoren für Angriffe (IOCs), einschließlich Hashes, IP-Adressen, Domains und URLs, die mit bekannten Bedrohungsakteure, Malware-Arten, aktive Kampagnen und abgeschlossene Intelligence-Berichte. Um den größtmöglichen Nutzen zu erzielen, enthält der Feed auch IOCs, die Mandiant Intelligence wurde sorgfältig aus Open-Source-Feeds geprüft und validiert, wodurch eine hohe Genauigkeit gewährleistet wird. Der Auswahlprozess von Mandiant umfasst die folgenden Schritte.

  • 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 decken neue Angriffsinfrastrukturen auf.

  • Kontextisierung: Bedrohungsindikatoren werden bestimmten Bedrohungen und Kampagnen zugeordnet, hilft dabei, Vorfälle zu verstehen und zu priorisieren.

Der Breach Analytics-Feed basiert auf Fusion und fügt Indikatoren neue und aufkommende Sicherheitsverletzungen, die Mandiant aktiv untersucht. Sie bietet Echtzeit-Einblicke in die neuesten Angriffstrends. YARA-L-Regeln können Kontextinformationen von Applied Threat Intelligence nutzen Fusion Feed zur Optimierung der Regeln für den einfachen Indikatorabgleich. 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 erstellen

Das Schreiben von YARA-L-Regeln mithilfe von Fusion Feed ähnelt dem Erstellen YARA-L-Regeln mit anderen Kontextentitätsquellen. Weitere Informationen zur Diese Art von YARA-L-Regel schreiben (siehe Kontextsensitive Analysen erstellen).

Bereich „Ereignisse und Übereinstimmungen“

Filtern Sie das ausgewählte Kontextentitätsdiagramm, um eine Regel zu schreiben. In diesem Fall ist es der Fusion-Feed. Filtern Sie dann nach einem bestimmten Indikator Typ. 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 weitere Bedingungen des Ereignisses oder der Kontextentität im Abschnitt events an. können Sie ein Feld aus der Kontextentität und dem UDM-Ereignisfeld verknüpfen. Im Folgenden Beispiel: Die Platzhaltervariable ioc wird für eine transitive JOIN zwischen der Kontextentität und dem Ereignis. 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 Kontextentitätsfeldern, die verwendet werden können in YARA-L-Regeln finden Sie im Abschnitt Fusion Feed-Kontextentitätsfelder.

Abschnitt „Ergebnis“

Um auf das vorherige Beispiel zurückzukommen: Die Regel für den Abgleich von grundlegenden Indikatoren gegen Datei-Hashes Stellen in den Kontextentitäten bei graph.entity.file.md5 und das UDM-Feld principal.process.file.md5. 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. Dabei kann es sich beispielsweise um den Konfidenzwert handeln, der dem Indikator zugewiesen ist. die Mandiant-Experten genutzt haben, sei es in einer gehackten Umgebung oder in der Malware-Familie die mit dem Indikator verknüpft sind. Nutze dazu die outcome der Regel hinzu.

 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 beträgt der Konfidenzwert extrahiert mit einem if statement, das in eine max-Funktion eingebunden 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 einem Variable matched_conditions, die die Verwendung verketteter Logik ermöglicht im Abschnitt condition.

Bereich „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

Jetzt ist die Regel 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
}

Zusammenführungsfeed-Kontextentitätsfelder

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ät – Feld 1 Werte Entität – Feld 2 Werte
metadata.threat.verdict_info.source_provider Mandiant Global Intelligence metadata.threat.verdict_info.global_hits_count Ganzzahl
metadata.threat.verdict_info.source_provider Mandiant Global Intelligence 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 Mandiant Automated Intel metadata.threat.verdict_info.confidence_score Ganzzahl

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

$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 in Google Security Operations Übereinstimmungen von Entitäten untersuchen, erhalten Sie einen umfassenden Überblick über Daten analysieren und zusätzliche Felder aufdecken, die für die Bewertung der Priorität und Kontext einer Indikatorbenachrichtigung.

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 sind dies zwei zwischengeschaltete Ergebnisvariablen, is_attributed_malware. und is_attributed_actor, in einer Ergebnisvariablen kombiniert werden is_attributed

In diesem Beispiel geben die Zwischenergebniswerte numerische Werte zurück. ermöglicht numerische Vergleiche in der neuen Ergebnisvariablen. 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 UDMs -Felder werden mit Kontextentitäten verknüpft.

Hier sehen Sie ein Beispiel für einen event-Abschnitt, in dem flexible Joins für mehrere UDM-Felder.

  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)