Feed de Applied Threat Intelligence Fusion
El feed de fusión de Applied Threat Intelligence (ATI) es una colección de indicadores de compromiso (IoC), incluidos hashes, IPs, dominios y URLs, que están asociados con agentes de amenazas, variantes de malware, campañas activas e informes de inteligencia finalizados conocidos. El feed también incluye IoC de feeds de código abierto que Mandiant Intelligence verificó y validó cuidadosamente, lo que maximiza el valor y proporciona una alta precisión.
El proceso de selección de Mandiant incluye las siguientes fases:
Respuesta ante incidentes de primera línea: Mientras investigan las violaciones de la seguridad, los analistas de Mandiant obtienen conocimiento de primera mano sobre las herramientas y técnicas de los atacantes.
Investigación de amenazas: Los equipos dedicados hacen un seguimiento de los agentes de amenazas, analizan el malware y descubren la infraestructura de ataques emergente.
Contextualización: Los IoC se asignan a amenazas y campañas específicas, lo que ayuda a comprender y priorizar los incidentes.
El feed de Breach Analytics se basa en el feed de ATI Fusion, ya que incluye indicadores de investigaciones de violaciones de la seguridad nuevas y activas de Mandiant. Ofrece estadísticas en tiempo real sobre las tendencias de ataque más recientes. Para mejorar la coincidencia de indicadores, las reglas de YARA-L pueden usar información contextual del feed de ATI Fusion, como los grupos de amenazas asociados, la presencia de un indicador en entornos vulnerados o la puntuación de actividad maliciosa automatizada de Mandiant.
Escribe reglas de YARA-L con el feed de ATI Fusion
Escribir reglas de YARA-L que usen el feed de ATI Fusion en Google Security Operations sigue un proceso similar al de escribir reglas de YARA-L que usen otras fuentes de entidades de contexto. Para obtener más información, consulta Crea estadísticas adaptadas al contexto.
Secciones de eventos y partidos
Para escribir una regla, sigue estos pasos:
1. Filtrar el gráfico de entidades de contexto seleccionado En este caso: Fusion Feed.
1. Filtrar un tipo de indicador específico Por ejemplo, FILE Consulta el siguiente ejemplo:
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"
Puedes agregar cualquier otra condición del evento o de la entidad de contexto en la sección events. Puedes unir un campo de la entidad de contexto y el campo de evento de UDM.
En el siguiente ejemplo, se usa la variable de marcador de posición ioc para realizar una unión transitiva entre la entidad de contexto y el evento. Luego, la variable ioc se usa en la sección match para asegurarse de que haya una coincidencia en un período específico.
$ioc = $context_graph.graph.entity.file.md5
$ioc = $e1.principal.process.file.md5
match:
$ioc over 1h
Para obtener más información sobre los campos de entidad de contexto que se pueden usar en las reglas de YARA-L, consulta la sección Campos de entidad de contexto de Fusion Feed.
Sección de resultados
Continuando con el ejemplo anterior, la regla de coincidencia de indicadores básicos se configura
con los hashes de archivo en las entidades de contexto en el campo graph.entity.file.md5
y el campo principal.process.file.md5 de UDM.
Debido a que esta regla puede coincidir con una gran cantidad de eventos, se recomienda que la ajustes para que coincida con entidades de contexto que tengan inteligencia específica. Por ejemplo, es posible que quieras que coincida con la puntuación de confianza que Mandiant asignó al indicador, ya sea que se haya visto en un entorno vulnerado o en la familia de malware asociada con el indicador. Todo esto se puede hacer en la sección outcome de la regla.
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)
En la sección outcome de la regla de YARA-L, la puntuación de confianza se
extrae con una if statement unida en una función max. Esta técnica es obligatoria para las reglas de varios eventos. Se usa la misma técnica para extraer la variable pwn de verdict_info, que indica si se vio un indicador en un entorno vulnerado identificado por Mandiant.
Luego, estas dos variables de resultado se combinan en otra variable matched_conditions, lo que permite el uso de lógica encadenada en la sección condition.
Sección de condiciones
La sección condition garantiza que e1,
context_graph y matched_conditions existan o
coincidan con la condición especificada.
condition:
// Ensure $e1, $context_graph and $matched_conditions conditions are met.
$e1 AND $context_graph AND $matched_conditions = 1
Regla de YARA-L completa
En este punto, la regla está lista para usarse y debería verse de la siguiente manera:
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
}
Campos de entidad de contexto de ATI Fusion Feed
Puedes usar muchos campos del feed de ATI Fusion en las reglas. Todos estos campos se definen en la lista de campos del modelo de datos unificado. Los siguientes campos son relevantes para priorizar los indicadores:
| Campo de entidad | Valores posibles |
|---|---|
metadata.threat.associations.type |
MALWARE, THREAT_ACTOR |
metadata.threat.associations.name |
Nombre de la asociación de amenazas |
metadata.threat.verdict_info.pwn |
TRUE, FALSE |
metadata.threat.verdict_info.pwn_first_tagged_time.seconds |
Marca de tiempo (segundos) |
Algunos campos tienen pares clave-valor que se deben usar en combinación para acceder a los valores correctos. Por ejemplo:
| Campo de entidad 1 | Valores | Campo de entidad 2 | Valores |
|---|---|---|---|
metadata.threat.verdict_info.source_provider |
Mandiant Global Intel | metadata.threat.verdict_info.global_hits_count |
Número entero |
metadata.threat.verdict_info.source_provider |
Mandiant Global Intel | metadata.threat.verdict_info.global_customer_count |
Número entero |
metadata.threat.verdict_info.source_provider |
Mandiant Analyst Intel | metadata.threat.verdict_info.confidence_score |
Número entero |
metadata.threat.verdict_info.source_provider |
Mandiant Automated Intel | metadata.threat.verdict_info.confidence_score |
Número entero |
En la sección outcome de una regla de YARA-L, puedes acceder a un valor designado
por una clave específica con el siguiente 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))
Examinar las coincidencias de entidades en Google Security Operations te ayuda a obtener una vista integral de los datos, lo que revela campos adicionales que pueden ser valiosos para evaluar la prioridad y el contexto de una alerta de indicador.
En el siguiente ejemplo, se muestra una entidad de contexto de Fusion Feed como punto de referencia inicial:
{
"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"
},
...
]
}
}
Condiciones complejas
Para usar varios campos en una entidad de contexto, puedes combinar
varias variables de resultado para crear una lógica condicional más compleja. Las variables de resultado intermedias se pueden usar para combinar varios campos. Luego, estas variables se combinan para formar una nueva variable de resultado que se puede usar en la sección condition.
Por ejemplo:
// 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"
En este ejemplo, se combinan dos variables de resultado intermedias, is_attributed_malware y is_attributed_actor, en una variable de resultado is_attributed.
Los valores de resultado intermedios devuelven valores numéricos, lo que permite realizar comparaciones numéricas en la nueva variable de resultado.
El valor en is_attributed será 1 o mayor si
el indicador tiene al menos una asociación de amenazas de tipo MALWARE
o THREAT_ACTOR.
Uniones flexibles en la regla de YARA-L
Para reducir la cantidad de reglas necesarias, puedes usar uniones flexibles entre los IoC para conectar varios campos de UDM a una entidad de contexto.
En el siguiente ejemplo, se muestra el uso de uniones flexibles para varios campos de UDM en la sección 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)
Migra los feeds heredados de Mandiant a GTI
Google SecOps está consolidando las fuentes de datos de inteligencia contra amenazas. Para proporcionar un conjunto más amplio de indicadores de compromiso (IoC) y simplificar la integración, migraremos de los feeds heredados de Mandiant al feed unificado de Google Threat Intelligence (GTI).
Esta guía está dirigida a ingenieros y analistas de detección que desean mantener una cobertura de amenazas ininterrumpida mientras migran al feed unificado de GTI. En él, se explica cómo actualizar las reglas de YARA-L existentes para que coincidan con los nuevos IoC de GTI y, al mismo tiempo, conservar la funcionalidad de alertas heredada. Si actualizas la sintaxis de tus reglas con el cronograma y los flujos de trabajo de migración proporcionados, garantizarás una transición sin problemas antes de que se congelen los feeds heredados.
Actualiza tus reglas de YARA-L
Te recomendamos que actualices tus reglas de YARA-L al nuevo nombre del producto de GTI para mantener la cobertura sin interrupciones.
Nombre del feed heredado de Mandiant |
Nuevo nombre del producto de GTI |
Nivel de licencia |
|---|---|---|
MANDIANT_FUSION_IOC |
GTI_IOC |
Enterprise o Enterprise Plus |
OPEN_SOURCE_INTEL_IOC |
GTI_IOC |
Enterprise o Enterprise Plus |
MANDIANT_ACTIVE_BREACH_IOC |
GTI_IOC |
Enterprise+ |
Referencia de migración de YARA-L
Usa estos fragmentos para actualizar tus reglas de forma manual si prefieres no usar la función Aplicar de Gemini.
Migración básica
Usa esta sintaxis de YARA-L para que coincida con los datos históricos y los datos nuevos de GTI.
Sintaxis antigua de YARA-L:
$mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC"
Sintaxis de YARA-L recomendada:
(
$mandiant.graph.metadata.product_name = "GTI_IOC"
$mandiant.graph.metadata.threat_intel.stable = true
)
Comprende el flujo de trabajo de migración
El siguiente flujo de trabajo refleja la experiencia actualizada de administración de reglas diseñada para guiarte durante la migración.
- Identifica las reglas afectadas. Abre la página Administración de reglas/Lista.
Si tu usuario tiene reglas afectadas, aparecerá un banner global destacado.
- Indicador: Las reglas que hacen referencia a feeds heredados muestran un ícono de advertencia o un cuadro de información sobre la herramienta de
Update Required. - Acción: Haz clic en Pedirle a Gemini que ayude a actualizar o selecciona una regla específica para ver los detalles.
- Indicador: Las reglas que hacen referencia a feeds heredados muestran un ícono de advertencia o un cuadro de información sobre la herramienta de
Analiza los detalles de la regla. Cuando abres una regla afectada, el editor de reglas destaca la sintaxis heredada (por ejemplo,
$mandiant.graph.metadata.product_name = "MANDIANT_FUSION_IOC").Aparece un botón de migración dedicado en el encabezado del editor, que activa el panel lateral de Gemini.
Lee la actualización asistida por Gemini. El panel lateral de Gemini carga automáticamente una tarjeta de contexto prepropagada:
- Gemini explica la asignación entre tu feed antiguo y el nuevo feed de GTI según tu derecho.
- Gemini proporciona un bloque de código de Corrección sugerida. Revisa la lógica de YARA-L actualizada,
que agrega
GTI_IOCy, al mismo tiempo, mantiene la referencia heredada para la cobertura histórica.
Haz clic en Apply to Editor para cambiar la lógica anterior por la nueva sintaxis sugerida.
Verifica la sintaxis nueva. Una vez que se guarda la regla con la sintaxis de
GTI_IOCactualizada, aparecen los siguientes detalles:- El ícono de advertencia Update Required desaparecerá del editor y de la página principal Rules Lister.
- El estado de la migración se actualiza en tiempo real a medida que borras las reglas marcadas.
Comprende el filtrado de transferencia de feeds de GTI_IOC
Para garantizar una alta fidelidad y minimizar el ruido, Google SecOps filtra los IoC en el feed de GTI_IOC. Google SecOps incluye un IoC del feed solo si cumple con al menos uno de los siguientes criterios:
Tiene una puntuación de confianza de GTI de 80 o más.
Tiene un veredicto de GTI de malicioso.
Tiene una asociación de amenazas conocida (por ejemplo, está vinculada a una campaña de amenazas específica).
Los IoC no revisados que cumplen con estos criterios se siguen transfiriendo a Google SecOps y están disponibles para usarlos en tus reglas de YARA-L, pero se marcan con metadata.threat.stable = false. Una vez que estos IoC se revisan o validan por completo, la etiqueta stable se actualiza a true.
Para obtener más información, consulta Puntuación de indicadores de Google Threat Intelligence.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.