Applied Threat Intelligence Fusion-Feed – Übersicht
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)