Realiza búsquedas de contexto de entidades
La función Contexto de entidades en la búsqueda mejora las investigaciones de seguridad y la respuesta ante incidentes, ya que permite a los usuarios buscar y ver eventos de contexto relacionados con entidades dentro de su cuenta de Google Security Operations. A diferencia de las búsquedas limitadas al esquema de eventos estándar del Modelo de datos unificado (UDM), esta función aborda la necesidad de buscar más allá de los datos de eventos de UDM, incluido el contexto de entidades de UDM, y proporciona estadísticas más detalladas sobre los incidentes de seguridad.
Ventajas clave
- Los analistas de seguridad y los cazadores de amenazas pueden consultar información contextual sobre las entidades.
- Ayuda a realizar análisis de causa raíz, caza de amenazas y análisis forenses.
- Los usuarios pueden realizar búsquedas estadísticas en el contexto de la entidad para comprender los patrones de telemetría y las entidades afectadas a través del análisis de telemetría.
Usa el contexto de la entidad en la búsqueda
Puedes usar el contexto de la entidad para obtener estadísticas de los resultados de la búsqueda de las siguientes maneras:
- Buscar con nombres de campos de entidades de UDM: Crea tus consultas de búsqueda con nombres de campos de entidades de UDM. Por ejemplo, para encontrar todos los eventos de contexto asociados con un nombre de host específico, crea una búsqueda con
graph.entity.hostname. - Acceder a la pestaña Resumen: La pestaña Resumen proporciona un resumen de alto nivel de las entidades
que se encuentran en la búsqueda, aprovechando la información de la consulta que ingresa un usuario para mostrar
información. En la página Descripción general, se muestra información para tipos de entidades, como
DOMAIN_NAME,IP_ADDRESS,ASSET,USER,FILE,GROUPyRESOURCE. - Usar la pestaña Entidad: En la pestaña Entidad, se enumeran todos los eventos de contexto de entidades recibidos, incluidos los subcomponentes como Tendencia a lo largo del tiempo, Filtro de instantáneas, Agregaciones y Eventos. Las entidades se clasifican en entidades temporales y atemporales, que se muestran en pestañas separadas.
- Ver agregados: Los agregados se muestran para los campos, de manera similar a la búsqueda de eventos de UDM. Las agregaciones se clasifican aún más en tipos de contexto: Contexto de entidades, Contexto derivado y Contexto global.
Interfaz de resultados de la búsqueda del gráfico de contexto de entidades
La interfaz de resultados de la búsqueda del gráfico de contexto de entidades (ECG) proporciona varias pestañas para ayudarte a analizar los datos de contexto de entidades:
Pestaña Resultados: Muestra
Timed DatayTimeless Data.- Timed Data: Muestra las entidades que tenían un valor para
metadata.interval.end_timedurante la transferencia. - Datos atemporales: Muestra las entidades que no tenían ningún valor para
metadata.interval.end_time.
La interfaz muestra entidades temporales o atemporales, hasta la cantidad máxima de resultados configurada.
- Timed Data: Muestra las entidades que tenían un valor para
Pestaña Alertas: Muestra las alertas asociadas con las entidades que se encuentran en la búsqueda.
Pestaña Resumen: Presenta información sobre la entidad en la consulta de búsqueda.
Gráfico de actividad a lo largo del tiempo:
Muestra la cantidad de entidades y el contexto de entidades que son válidos dentro de cada bucket de tiempo. Puedes usar el control deslizante para acercar o alejar el período.
Total de entidades modificadas: El gráfico de contexto de entidades (ECG) almacena datos en buckets de tiempo dentro de su período de validez. También copia estos datos al siguiente bucket de tiempo, siempre que la entidad siga siendo válida (según
end_time). Este gráfico se actualiza cada vez que cambia una propiedad de la entidad entre dos buckets de tiempo.
Caso de uso: Investiga una cuenta de usuario vulnerada
Considera la siguiente situación: un analista de seguridad necesita investigar una cuenta de usuario potencialmente vulnerada (email@company.com). Sigue estos pasos para investigar:
Identifica al usuario vulnerado: Una alerta indica que el usuario email@company.com se identificó como una cuenta sospechosa.
Recopila información del contexto de entidades: Obtén datos contextuales sobre el usuario para comprender el alcance y el impacto.
Ejecuta consultas: Usa Contexto de entidades en la búsqueda para ejecutar las siguientes consultas:
graph.entity.user.email_addresses = "email@company.com"para recuperar información sobre el usuario.graph.entity.user.email_addresses = "email@company.com" AND graph.metadata.product_name = "Google Cloud Compute Context"para verificar el nombre del producto y otros metadatos.
Analiza la pestaña Resumen: En la pestaña Resumen, se muestra el resumen de la entidad para el usuario, incluido lo siguiente:
- Verifica las marcas de tiempo
First Seen HouryLast Seen Hour.
- Verifica las marcas de tiempo
- Revisa los nombres de host, las direcciones IP y las direcciones MAC (si están disponibles).
- Inspecciona el modelo de hardware, la plataforma del SO y la versión de la plataforma.
Examina la pestaña Eventos: Consulta los eventos asociados para este usuario, incluidos los intentos de acceso y las anomalías.
Agregadores de opiniones: Identifica patrones y anomalías en los datos de contexto de entidades, distribuidos en Contexto de entidades, Contexto derivado y Contexto global.
Ejemplos de búsqueda
Para buscar datos de contexto de entidades, usa nombres de campos de entidades de UDM en tus consultas de búsqueda:
graph.entity.hostnamegraph.entity.ip = "8.8.8.8" and graph.metadata.entity_type = "ASSET"
En los resultados de la búsqueda, se muestra información clave sobre las entidades, incluida la siguiente:
- Metadatos de entidades
- Métricas (
First Seen Hour,Last Seen Hour) - Relaciones (
Entity,Direction,Entity_label,Entity_type,Relationship) - Según el tipo de entidad, campos específicos, como
Principal_ippara los recursos,Mail_idpara los usuarios,File_namepara los hashes o archivos, yDomain_nameyIP_addresspara los dominios
Ejemplos de contexto de entidades en la búsqueda
En esta sección, se proporcionan ejemplos prácticos para aprovechar la función de contexto de entidades de UDM para analizar las estadísticas de entidades.
Búsqueda de estadísticas de entidades de UDM
Para ver las fuentes y los tipos de contexto disponibles, ejecuta la siguiente búsqueda de estadísticas de entidades de UDM en la búsqueda de UDM:
graph.metadata.source_type = $sourceType
graph.metadata.entity_type = $entityType
match:
$sourceType, $entityType
outcome:
$total = count(graph.metadata.product_entity_id)
order:
$sourceType, $total desc
limit:
100
El selector de hora muestra los datos activos dentro del gráfico de entidades, no cuando se transfirieron los datos de contexto.
Como la búsqueda de entidades de UDM usa la interfaz de búsqueda de UDM estándar, puedes usar funciones como el panel Agregaciones (para ver los valores superiores o inferiores), la tabla de resultados y los resultados expandidos de estadísticas de UDM.
Ejemplo: Consulta ENTITY_TYPEs distintas
Para expandir la búsqueda de entidades de UDM, puedes incluir la fuente de registro, el espacio de nombres y un array de resultados para mostrar las ENTITY_TYPEs distintas observadas, de la siguiente manera:
graph.metadata.source_type = "ENTITY_CONTEXT"
$logType = strings.to_upper(graph.metadata.event_metadata.base_labels.log_types)
$namespace = strings.to_upper(graph.metadata.event_metadata.base_labels.namespaces)
match:
$logType, $namespace
outcome:
$total = count(graph.metadata.product_entity_id)
$entityTypes = array_distinct(graph.metadata.entity_type)
order:
$logType, $total desc
limit:
100
Ejemplo: Define mejor tu conjunto de entidades
Puedes definir mejor un conjunto específico de entidades con la función de pivote de la búsqueda de UDM. Esta definición mejorada genera una consulta de YARA-L como la siguiente:
graph.metadata.source_type = "ENTITY_CONTEXT"
$logType = strings.to_upper( graph.metadata.event_metadata.base_labels.log_types )
$namespace = strings.to_upper( graph.metadata.event_metadata.base_labels.namespaces )
AND strings.to_upper( graph.metadata.event_metadata.base_labels.log_types ) = "WINDOWS_AD"
AND strings.to_upper( graph.metadata.event_metadata.base_labels.namespaces ) = "ACME"
Contexto derivado
Google SecOps proporciona los siguientes tipos de contexto derivado:
- Marcas de tiempo
first_seenylast_seenpara cadaENTITY_TYPE Prevalence: Es la cantidad de recursos que accedieron a unaENTITY_TYPEdeterminada.
Marcas de tiempo First Seen Hour y Last Seen Hour
Google SecOps realiza análisis estadísticos de los datos entrantes y enriquece los registros de contexto de entidades con marcas de tiempo first_seen y last_seen:
- El campo
first_seen_timecaptura la hora en que se vio una entidad por primera vez en el entorno del cliente. - El campo
last_seen_timeregistra la hora de la observación más reciente de esa entidad.
Usuarios con una hora de primera vez en los últimos 7 días:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "USER"
graph.entity.user.userid != ""
graph.entity.user.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)
Dominios vistos por primera vez en los últimos 7 días:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return FQDN
graph.entity.domain.name = /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/
graph.entity.domain.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)
Archivo (hashes) observado en los últimos 7 días:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "FILE"
//graph.entity.file.md5 != ""
//graph.entity.file.sha1 != ""
graph.entity.file.sha256 != ""
graph.entity.file.first_seen_time.hours >= timestamp.current_hours() - (86400 * 7)
ENTITY_TYPE representa un hash FILE, por ejemplo, entity.file.hash.
Dentro del objeto hash, el tipo puede ser uno de los siguientes:
md5sha1sha256
Para buscar un hash específico, puedes ejecutar una búsqueda de entidades de UDM para el tipo de hash determinado:
// This will search ENTITY, DERIVED, and GLOBAL Source Types
graph.metadata.entity_type = "FILE"
graph.entity.file.sha256 = "eb5db1feadda5351c3b8fc0770e9f4c173484df5dc4a785bd1bdce7806a9e498"
Direcciones IP
Los ENTITY_TYPES derivados de IP_ADDRESS pueden representar entidades internas o externas.
La siguiente búsqueda de estadísticas de entidades de UDM identifica las IP_ADDRESSES observadas recientemente y usa funciones de agregación (en la sección de resultados) para contarlas por bloque CIDR:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "IP_ADDRESS"
//note, for IP addresses the first seen is under artifact, not ip
graph.entity.artifact.first_seen_time.hours >= timestamp.current_hours()-(86400 * 7)
outcome:
$total = count(graph.metadata.product_entity_id)
$classA = sum(if(net.ip_in_range_cidr(graph.entity.ip, "10.0.0.0/8"),1,0))
$classB = sum(if(net.ip_in_range_cidr(graph.entity.ip, "172.16.0.0/12"),1,0))
$classC = sum(if(net.ip_in_range_cidr(graph.entity.ip, "192.168.0.0/16"),1,0))
$classD = sum(if(net.ip_in_range_cidr(graph.entity.ip, "224.0.0.0/4"),1,0))
// we shouldn't see results here…
$classE = sum(if(net.ip_in_range_cidr(graph.entity.ip, "240.0.0.0/4"),1,0))
$thisNetwork = sum(if(net.ip_in_range_cidr(graph.entity.ip, "0.0.0.0/8"),1,0))
$loopback = sum(if(net.ip_in_range_cidr(graph.entity.ip, "127.0.0.0/8"),1,0))
$linklocal = sum(if(net.ip_in_range_cidr(graph.entity.ip, "169.254.0.0/16"),1,0))
$benchmark = sum(if(net.ip_in_range_cidr(graph.entity.ip, "198.18.0.0/15"),1,0))
$cgnat = sum(if(net.ip_in_range_cidr(graph.entity.ip, "10.64.0.0/10"),1,0))
Para investigar más a fondo un rango inusual o inesperado, puedes ejecutar una búsqueda de entidades de UDM:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "IP_ADDRESS"
net.ip_in_range_cidr(graph.entity.ip, "198.18.0.0/15")
Prevalencia
La prevalencia siempre es del tipo DERIVED_CONTEXT.
La siguiente búsqueda de entidades de UDM identifica los nombres de dominio que se observan con poca frecuencia. Estos dominios están asociados específicamente con como máximo un recurso distinto por día, durante el período de la consulta (day_max = 1) y como máximo un recurso distinto en los últimos 10 días (rolling_max = 1).
Este patrón es útil para detectar dominios con interacción limitada en tu entorno:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return specific TLDs where the FQDN is more than X characters
//graph.entity.domain.name = /^.{40,}\.(?:sx|cc|st|ac|lc|wd|vg|tv|cm|gd)$/
graph.entity.domain.prevalence.rolling_max = 1
graph.entity.domain.prevalence.day_max = 1
Como alternativa, puedes convertir esto en una búsqueda agregada de estadísticas de entidades de UDM y agregar los resultados:
graph.metadata.source_type = "DERIVED_CONTEXT"
graph.metadata.entity_type = "DOMAIN_NAME"
//optional, filter to only return FQDN
graph.entity.domain.name = /^.{40,}\.(?:sx|cc|st|ac|lc|wd|vg|tv|cm|gd)$/
$domain = graph.entity.domain.name
$length = strings.length(graph.entity.domain.name)
$tld = strings.extract_domain(graph.entity.domain.name)
graph.entity.domain.prevalence.day_max = 1
graph.entity.domain.prevalence.rolling_max = 1
match:
$domain, $tld, $length
limit:
10
Búsquedas básicas de campos de entidades de UDM
Estos son ejemplos adicionales del uso de la función Contexto de entidades en la búsqueda en Google SecOps, según las fuentes disponibles:
graph.entity.hostnamegraph.entity.ip = "8.8.8.8" and graph.metadata.entity_type = "ASSET"principal.ipprincipal.hostname="baz"principal.ip="1.2.3.4"network.dns.questions.name="youtube.com"
Pivote desde campos de entidades
Usa campos de entidades para pivotar y explorar datos relacionados. Estos son algunos ejemplos de campos de pivote:
network.email.tonetwork.email.ccprincipal.process.file.fileMetadata.pe.importHashprincipal.process.file.sha256network.dns.questions.name
Comprende los campos dinámicos
Las fuentes hacen referencia a campos estructurados dinámicos con prefijos, como additional. Puedes buscar estos campos dentro de los eventos de UDM.
Consideraciones sobre el control de acceso
El sistema impone un límite de 50 eventos en los datos de contexto global. Los usuarios globales y con alcance pueden ver los datos.
Las siguientes fuentes proporcionan datos de contexto global:
| Datos de contexto global | Dónde un usuario puede ver o interactuar con estos datos | Quién puede verlos |
|---|---|---|
| Navegación segura | - Búsqueda - Reglas |
Todos los usuarios |
| Relaciones de VirusTotal | - Búsqueda - Reglas |
Todos los usuarios |
| WHOIS | - Búsqueda - Reglas |
Todos los usuarios |
| Uppercase | - Búsqueda - Reglas |
Todos los usuarios |
IOC de Open Source Intel (OPEN_SOURCE_INTEL_IOC) |
- Búsqueda - Reglas |
Todos los usuarios |
IOC de Mandiant Fusion (MANDIANT_FUSION_IOC) |
- Búsqueda - Reglas - Amenazas emergentes |
Todos los usuarios |
Limitaciones
- Límites de volumen: Límite de 1 millón en los resultados acumulativos para datos temporales y atemporales
- Datos de contexto global: Hay un límite de 50 filas para los datos de contexto global sensibles
como
UPPERCASE_VT_PROTECTED,MANDIANT_FUSION_IOC, yVIRUS_TOTAL_CONNECTIONS. - Coherencia de los datos: Los datos de la última vez que se vieron pueden demorar hasta 2 horas. Las entidades relacionadas pueden mostrar solo un subconjunto de las entidades que se enumeran en un evento.
Funciones no admitidas:
- Búsquedas inversas en campos de entidades, búsquedas de campos agrupados, baja prevalencia y mapa de calor
- No puedes unir el contexto de entidades y las consultas de eventos.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.