Angewandter Threat Intelligence Fusion-Feed

Unterstützt in:

Der ATI-Fusion-Feed (Applied Threat Intelligence) ist eine Sammlung von Kompromittierungsindikatoren (IoCs), einschließlich Hashes, IPs, Domains und URLs, die mit bekannten Bedrohungsakteuren, Malware-Varianten, aktiven Kampagnen und abgeschlossenen Intelligence-Berichten in Verbindung stehen. Der Feed enthält auch IoCs aus Open-Source-Feeds, die von Mandiant Intelligence sorgfältig geprüft und validiert wurden. Das maximiert den Wert und sorgt für eine hohe Genauigkeit.

Der Kuratierungsprozess von Mandiant umfasst die folgenden Phasen:

  • Reaktion auf Vorfälle an vorderster Front: Bei der Untersuchung von Sicherheitsverletzungen erhalten Mandiant-Analysten Informationen aus erster Hand zu den Tools und Techniken von Angreifern.

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

  • Kontextualisierung: IoCs werden bestimmten Bedrohungen und Kampagnen zugeordnet, was hilft, Vorfälle zu verstehen und zu priorisieren.

Der Breach Analytics-Feed baut auf dem ATI Fusion-Feed auf und enthält Indikatoren aus neuen und aktiven Mandiant-Untersuchungen zu Sicherheitsverletzungen. Sie erhalten Echtzeitinformationen zu den neuesten Angriffstrends. Um den Abgleich von Indikatoren zu optimieren, können YARA-L-Regeln Kontextinformationen aus dem ATI Fusion Feed verwenden, z. B. zugehörige Bedrohungsgruppen, die Anwesenheit eines Indikators in kompromittierten Umgebungen oder den automatischen Maliciousness-Score von Mandiant.

YARA-L-Regeln mit dem ATI Fusion Feed schreiben

Das Schreiben von YARA-L-Regeln, die den ATI Fusion Feed in Google Security Operations verwenden, ähnelt dem Schreiben von YARA-L-Regeln, die andere Kontextentitätsquellen verwenden. Weitere Informationen finden Sie unter Kontextsensitive Analysen erstellen.

Ereignisse und Spielabschnitte

So schreiben Sie eine Regel: 1. Filtern Sie das Diagramm der ausgewählten Kontextentität. In diesem Fall ist das Fusion Feed. 1. Filtern Sie einen bestimmten Indikatortyp. Beispiel: FILE. Sehen Sie sich folgendes Beispiel an:

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"

Im Abschnitt events können Sie weitere Bedingungen für das Ereignis oder die Kontextentität hinzufügen. Sie können ein Feld aus der Kontextentität und dem 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. Die Variable ioc wird dann im Abschnitt match verwendet, um sicherzustellen, dass es in einem bestimmten Zeitraum eine Übereinstimmung gibt.

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

Ergebnisabschnitt

Im vorherigen Beispiel wird die grundlegende Regel für den Indikatorabgleich für Dateihashes in den Kontextentitäten im Feld graph.entity.file.md5 und im UDM-Feld principal.process.file.md5 eingerichtet.

Da diese Regel auf eine große Anzahl von Ereignissen zutreffen kann, sollten Sie die Regel so verfeinern, dass sie auf Kontextentitäten mit bestimmten Informationen zutrifft. Sie können beispielsweise nach dem Confidence-Score suchen, den Mandiant dem Indikator zugewiesen hat, danach, ob er in einer kompromittierten Umgebung gefunden wurde, oder nach der mit dem Indikator verknüpften Malware-Familie. All dies kann 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 Abschnitt outcome der YARA-L-Regel wird der Vertrauenswert mit einem if statement extrahiert, der in eine max-Funktion eingebettet ist. Diese Technik ist für Regeln für mehrere Ereignisse erforderlich. Dieselbe Technik wird verwendet, um die Variable pwn aus verdict_info zu extrahieren. Sie gibt an, ob ein Indikator in einer von Mandiant identifizierten Umgebung mit Sicherheitsverletzung beobachtet wurde.

Diese beiden Ergebnisvariablen werden dann in einer weiteren matched_conditions-Variablen kombiniert, sodass im Abschnitt condition verkettete Logik verwendet werden kann.

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
}

ATI Fusion Feed-Kontextentitätsfelder

Sie können viele Felder aus dem ATI Fusion Feed in Regeln verwenden. Diese Felder sind alle in der Feldliste für das einheitliche Datenmodell 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 enthalten Schlüssel/Wert-Paare, die in Kombination verwendet werden müssen, um auf die richtigen Werte zuzugreifen. 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 festgelegt 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. Außerdem werden zusätzliche Felder angezeigt, die bei der Bewertung der Priorität und des Kontexts einer Indikatorwarnung hilfreich sein können.

Das folgende Beispiel zeigt eine Kontextentität für einen Fusion-Feed als ersten Referenzpunkt:

{
  "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 in einer Kontextentität verwenden möchten, können Sie mehrere Ergebnisvariablen kombinieren, um eine komplexere bedingte Logik zu erstellen. Mit Zwischenergebnisvariablen können mehrere Felder kombiniert werden. Diese Variablen werden dann kombiniert, um eine neue Ergebnisvariable zu bilden, die im Abschnitt condition verwendet werden kann.

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 Beispiel werden zwei Zwischenergebnisvariablen, is_attributed_malware und is_attributed_actor, in einer Ergebnisvariable is_attributed kombiniert.

Die Zwischenergebniswerte geben numerische Werte zurück, was numerische Vergleiche in der neuen Ergebnisvariablen ermöglicht.

Der Wert in is_attributed ist 1 oder höher, wenn der Indikator mindestens eine Bedrohungszuordnung vom Typ MALWARE oder THREAT_ACTOR hat.

Flexible Joins in YARA-L-Regel

Um die Anzahl der erforderlichen Regeln zu reduzieren, können Sie flexible Joins zwischen IoCs verwenden, um mehrere UDM-Felder mit einer Kontextentität zu verbinden.

Im folgenden Beispiel wird die Verwendung flexibler Joins für mehrere UDM-Felder im Abschnitt event gezeigt:

  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)

Alte Mandiant-Feeds zu GTI migrieren

Google SecOps konsolidiert Threat Intelligence-Datenquellen. Um eine größere Anzahl von Kompromittierungsindikatoren (IoCs) bereitzustellen und die Integration zu vereinfachen, migrieren wir von den alten Mandiant-Feeds zum einheitlichen Google Threat Intelligence-Feed (GTI-Feed).

Dieser Leitfaden richtet sich an Detection Engineers und Analysten, die während der Migration zum einheitlichen GTI-Feed eine unterbrechungsfreie Bedrohungsabdeckung aufrechterhalten möchten. Darin wird beschrieben, wie Sie vorhandene YARA-L-Regeln aktualisieren, damit sie den neuen GTI-IoCs entsprechen, und gleichzeitig die alte Benachrichtigungsfunktion beibehalten. Wenn Sie die Syntax Ihrer Regeln anhand des bereitgestellten Zeitplans und der Migrations-Workflows aktualisieren, sorgen Sie für einen reibungslosen Übergang, bevor die alten Feeds eingefroren werden.

YARA-L-Regeln aktualisieren

Wir empfehlen Ihnen, Ihre YARA-L-Regeln auf den neuen GTI-Produktnamen zu aktualisieren, um eine unterbrechungsfreie Abdeckung zu gewährleisten.


Name des alten Mandiant-Feeds

Neuer GTI-Produktname

Lizenzierungsstufe

MANDIANT_FUSION_IOC

GTI_IOC

Enterprise oder Enterprise+

OPEN_SOURCE_INTEL_IOC

GTI_IOC

Enterprise oder Enterprise+

MANDIANT_ACTIVE_BREACH_IOC

GTI_IOC

Enterprise+

YARA-L-Migrationsreferenz

Verwenden Sie diese Snippets, um Ihre Regeln manuell zu aktualisieren, wenn Sie die Funktion Anwenden von Gemini nicht verwenden möchten.

Einfache Migration

Verwenden Sie diese YARA-L-Syntax, um sowohl Verlaufsdaten als auch neue GTI-Daten abzugleichen.

Alte YARA-L-Syntax:

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

Empfohlene YARA-L-Syntax:

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

Migrationsworkflow

Der folgende Workflow spiegelt die aktualisierte Regelverwaltung wider, die Sie durch die Migration führt.

  1. Betroffene Regeln identifizieren. Öffnen Sie die Seite Rules Management/Lister (Regelverwaltung/Auflistung). Wenn Ihr Mandant betroffene Regeln hat, wird ein auffälliges allgemeines Banner angezeigt.
    • Anzeige: Regeln, die auf alte Feeds verweisen, werden mit einem Warnsymbol oder einer Kurzinfo Update Required angezeigt.
    • Aktion:Klicken Sie auf Gemini bitten, beim Aktualisieren zu helfen oder wählen Sie eine bestimmte Regel aus, um Details zu sehen.
  2. Regeldetails analysieren Wenn Sie eine betroffene Regel öffnen, wird die Legacy-Syntax (z. B. $mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC") im Regeleditor hervorgehoben.

    In der Kopfzeile des Editors wird eine spezielle Migrationsschaltfläche angezeigt, über die die Gemini-Seitenleiste aufgerufen wird.

  3. Von Gemini unterstütztes Update lesen In der Gemini-Seitenleiste wird automatisch eine vorausgefüllte Kontextkarte geladen:

    • Gemini erklärt die Zuordnung zwischen Ihrem alten Feed und dem neuen GTI-Feed basierend auf Ihrer Berechtigung.
    • Gemini stellt einen Codeblock mit Vorgeschlagene Korrektur bereit. Sehen Sie sich die aktualisierte YARA-L-Logik an, die GTI_IOC hinzufügt, während die Legacy-Referenz für die historische Abdeckung beibehalten wird.
  4. Klicken Sie auf Auf Editor anwenden, um die alte Logik durch die neue vorgeschlagene Syntax zu ersetzen.

  5. Prüfen Sie die neue Syntax. Nachdem die Regel mit der aktualisierten GTI_IOC-Syntax gespeichert wurde, werden die folgenden Details angezeigt:

    • Das Warnsymbol Aktualisierung erforderlich wird nicht mehr im Editor und auf der Hauptseite Regelliste angezeigt.
    • Der Migrationsstatus wird in Echtzeit aktualisiert, während Sie die markierten Regeln löschen.

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