Feed di fusione di Applied Threat Intelligence
Il feed di fusione di Applied Threat Intelligence (ATI) è una raccolta di indicatori di compromissione (IoC), tra cui hash, IP, domini e URL, associati a noti attori di minacce, ceppi di malware, campagne attive e report di intelligence completati. Il feed include anche IoC provenienti da feed open source che Mandiant Intelligence ha controllato e convalidato attentamente, il che massimizza il valore e fornisce un'elevata accuratezza.
Il processo di cura di Mandiant include le seguenti fasi:
Risposta agli incidenti in prima linea: durante l'indagine sulle violazioni, gli analisti di Mandiant acquisiscono conoscenze di prima mano sugli strumenti e sulle tecniche degli autori degli attacchi.
Ricerca sulle minacce: team dedicati monitorano gli autori degli attacchi, analizzano il malware e scoprono l'infrastruttura di attacco emergente.
Contestualizzazione: gli IoC vengono mappati su minacce e campagne specifiche, il che aiuta a comprendere e dare la priorità agli incidenti.
Il feed di analisi delle violazioni si basa sul feed di fusione di ATI includendo indicatori provenienti da indagini sulle violazioni di Mandiant nuove e attive. Fornisce insight in tempo reale sulle ultime tendenze di attacco. Per migliorare la corrispondenza degli indicatori, le regole YARA-L possono utilizzare informazioni contestuali dal feed di fusione di ATI, come i gruppi di minacce associati, la presenza di un indicatore in ambienti compromessi o il punteggio di pericolosità automatico di Mandiant.
Scrivere regole YARA-L con il feed di fusione di ATI
La scrittura di regole YARA-L che utilizzano il feed di fusione di ATI in Google Security Operations segue un processo simile alla scrittura di regole YARA-L che utilizzano altre origini di entità di contesto. Per ulteriori informazioni, vedi Creare analisi sensibili al contesto.
Sezioni Eventi e Corrispondenze
Per scrivere una regola, segui questi passaggi: 1. Filtra il grafico dell'entità di contesto selezionata. In questo caso, Fusion Feed.
1. Filtra un tipo di indicatore specifico. Ad esempio, FILE. Vedi l'esempio seguente:
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"
Puoi aggiungere qualsiasi altra condizione dell'evento o dell'entità di contesto nella sezione events. Puoi unire un campo dall'entità di contesto e dal campo evento UDM.
Nell'esempio seguente, la variabile segnaposto ioc viene utilizzata per eseguire un'unione transitiva tra l'entità di contesto e l'evento. La variabile ioc viene quindi utilizzata nella sezione match per assicurarsi che ci sia una corrispondenza in un periodo di tempo specifico.
$ioc = $context_graph.graph.entity.file.md5
$ioc = $e1.principal.process.file.md5
match:
$ioc over 1h
Per ulteriori informazioni sui campi delle entità di contesto che possono essere utilizzati nelle regole YARA-L, vedi la sezione Campi delle entità di contesto del feed di fusione.
Sezione Risultato
Continuando con l'esempio precedente, la regola di corrispondenza degli indicatori di base è configurata rispetto agli hash dei file nelle entità di contesto nel campo graph.entity.file.md5 e nel campo UDM principal.process.file.md5.
Poiché questa regola può corrispondere a un numero elevato di eventi, ti consigliamo di perfezionarla in modo che corrisponda alle entità di contesto che hanno un'intelligence specifica. Ad esempio, potresti voler trovare una corrispondenza con il punteggio di affidabilità assegnato da Mandiant all'indicatore, se è stato rilevato in un ambiente violato o nella famiglia di malware associata all'indicatore. Tutto questo può essere fatto nella sezione outcome della regola.
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)
Nella sezione outcome della regola YARA-L, il punteggio di affidabilità viene
estratto utilizzando un'if statement racchiusa in una funzione max. Questa tecnica è necessaria per le regole multi-evento. La stessa tecnica viene utilizzata per estrarre la variabile pwn da verdict_info, che indica se un indicatore è stato rilevato in un ambiente violato identificato da Mandiant.
Queste due variabili di risultato vengono quindi combinate in un'altra
matched_conditions variabile, che consente l'utilizzo della logica concatenata
nella sezione condition.
Sezione Condizione
La sezione condition garantisce che e1,
context_graph, e matched_conditions esistano e/o
corrispondano alla condizione specificata.
condition:
// Ensure $e1, $context_graph and $matched_conditions conditions are met.
$e1 AND $context_graph AND $matched_conditions = 1
Regola YARA-L completa
A questo punto, la regola è pronta per l'uso e dovrebbe avere il seguente aspetto:
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
}
Campi delle entità di contesto del feed di fusione di ATI
Puoi utilizzare molti campi del feed di fusione di ATI nelle regole. Tutti questi campi sono definiti nell'elenco dei campi Unified Data Model. I seguenti campi sono pertinenti per la definizione della priorità degli indicatori:
| Campo entità | Valori possibili |
|---|---|
metadata.threat.associations.type |
MALWARE, THREAT_ACTOR |
metadata.threat.associations.name |
Nome associazione minaccia |
metadata.threat.verdict_info.pwn |
TRUE, FALSE |
metadata.threat.verdict_info.pwn_first_tagged_time.seconds |
Timestamp (secondi) |
Alcuni campi hanno coppie chiave-valore che devono essere utilizzate in combinazione per accedere ai valori corretti. Ad esempio:
| Campo entità 1 | Valori | Campo entità 2 | Valori |
|---|---|---|---|
metadata.threat.verdict_info.source_provider |
Mandiant Global Intel | metadata.threat.verdict_info.global_hits_count |
Numero intero |
metadata.threat.verdict_info.source_provider |
Mandiant Global Intel | metadata.threat.verdict_info.global_customer_count |
Numero intero |
metadata.threat.verdict_info.source_provider |
Mandiant Analyst Intel | metadata.threat.verdict_info.confidence_score |
Numero intero |
metadata.threat.verdict_info.source_provider |
Mandiant Automated Intel | metadata.threat.verdict_info.confidence_score |
Numero intero |
Nella sezione outcome di una regola YARA-L, puoi accedere a un valore designato da una chiave specifica utilizzando il seguente comando:
$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))
L'esame delle corrispondenze delle entità in Google Security Operations ti aiuta a ottenere una visione completa dei dati, rivelando campi aggiuntivi che possono essere utili per valutare la priorità e il contesto di un avviso di indicatore.
L'esempio seguente mostra un'entità di contesto del feed di fusione come punto di riferimento iniziale:
{
"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"
},
...
]
}
}
Condizioni complesse
Per utilizzare più campi in un'entità di contesto, puoi combinare più variabili di risultato per creare una logica condizionale più complessa. Le variabili di risultato intermedie possono essere utilizzate per combinare più campi. Queste variabili vengono quindi combinate per formare una nuova variabile di risultato che può essere utilizzata nella sezione condition.
Ad esempio:
// 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 questo esempio, due variabili di risultato intermedie, is_attributed_malware
e is_attributed_actor, vengono combinate in una variabile di risultato
is_attributed.
I valori di risultato intermedi restituiscono valori numerici, il che consente confronti numerici nella nuova variabile di risultato.
Il valore in is_attributed sarà 1 o superiore se l'indicatore ha almeno un'associazione di minacce di tipo MALWARE o THREAT_ACTOR.
Unioni flessibili nella regola YARA-L
Per ridurre il numero di regole richieste, puoi utilizzare unioni flessibili tra gli IoC per collegare più campi UDM a un'entità di contesto.
L'esempio seguente mostra l'utilizzo di unioni flessibili per più campi UDM nella sezione event:
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)
Eseguire la migrazione dei feed legacy di Mandiant a GTI
Google SecOps sta consolidando le origini dati di threat intelligence. Per fornire un insieme più ampio di indicatori di compromissione (IoC) e semplificare l'integrazione, stiamo eseguendo la migrazione dai feed legacy di Mandiant al feed unificato di Google Threat Intelligence (GTI).
Questa guida è destinata agli ingegneri e agli analisti di rilevamento che vogliono mantenere una copertura delle minacce ininterrotta durante la migrazione al feed GTI unificato. Spiega come aggiornare le regole YARA-L esistenti in modo che corrispondano ai nuovi IoC di GTI mantenendo la funzionalità di avviso legacy. Aggiornando la sintassi delle regole utilizzando la sequenza temporale e i flussi di lavoro di migrazione forniti, garantisci una transizione senza problemi prima che i feed legacy vengano bloccati.
Aggiornare le regole YARA-L
Ti consigliamo di aggiornare le regole YARA-L al nuovo nome del prodotto GTI per mantenere una copertura ininterrotta.
Nome del feed legacy di Mandiant |
Nuovo nome del prodotto GTI |
Livello di licenza |
|---|---|---|
MANDIANT_FUSION_IOC |
GTI_IOC |
Enterprise o Enterprise+ |
OPEN_SOURCE_INTEL_IOC |
GTI_IOC |
Enterprise o Enterprise+ |
MANDIANT_ACTIVE_BREACH_IOC |
GTI_IOC |
Enterprise+ |
Riferimento alla migrazione YARA-L
Utilizza questi snippet per aggiornare manualmente le regole se preferisci non utilizzare la funzione Applica di Gemini.
Migrazione di base
Utilizza questa sintassi YARA-L per trovare una corrispondenza sia con i dati storici sia con i nuovi dati GTI.
Sintassi YARA-L precedente:
$mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC"
Sintassi YARA-L consigliata:
(
$mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC" OR
$mandiant.graph.metadata.product_name = "GTI_IOC"
)
Informazioni sul flusso di lavoro di migrazione
Il seguente flusso di lavoro riflette l'esperienza aggiornata di gestione delle regole progettata per guidarti nella migrazione.
- Identificare le regole interessate. Apri la pagina Gestione regole/Elenco.
Se il tuo tenant ha regole interessate, viene visualizzato un banner globale in evidenza.
- Indicatore: le regole che fanno riferimento ai feed legacy mostrano un'icona di avviso o un suggerimento
Update Required(Aggiornamento richiesto). - Azione: fai clic su Ask Gemini to help update (Chiedi a Gemini di aiutarti ad aggiornare) o seleziona una regola specifica per visualizzare i dettagli.
- Indicatore: le regole che fanno riferimento ai feed legacy mostrano un'icona di avviso o un suggerimento
Analizzare i dettagli della regola. Quando apri una regola interessata, l'editor delle regole evidenzia la sintassi legacy (ad esempio,
$mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC").Nell'intestazione dell'editor viene visualizzato un pulsante di migrazione dedicato che attiva il riquadro laterale di Gemini.
Leggi l'aggiornamento assistito da Gemini. Il riquadro laterale di Gemini carica automaticamente una scheda di contesto precompilata:
- Gemini spiega la mappatura tra il vecchio feed e il nuovo feed GTI in base al tuo diritto.
- Gemini fornisce un blocco di codice Suggested Fix (Correzione suggerita). Esamina la logica YARA-L aggiornata, che aggiunge
GTI_IOCmantenendo il riferimento legacy per la copertura storica.
Fai clic su Apply to Editor (Applica all'editor) per sostituire la vecchia logica con la nuova sintassi suggerita.
Verifica la nuova sintassi. Una volta salvata la regola con la sintassi
GTI_IOCaggiornata, vengono visualizzati i seguenti dettagli:- L'icona di avviso Update Required (Aggiornamento richiesto) scompare dall'editor e dalla pagina principale Rules Lister (Elenco regole).
- Lo stato della migrazione viene aggiornato in tempo reale man mano che cancelli le regole contrassegnate.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.