Realiza búsquedas de contexto de entidades
La función Contexto de la entidad en la búsqueda mejora las investigaciones de seguridad y la respuesta ante incidentes, ya que permite que los usuarios busquen y vean eventos de contexto relacionados con entidades en 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 las 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 con el análisis de causa raíz, la búsqueda de amenazas y el análisis forense.
- Los usuarios pueden ejecutar 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 tus resultados de la búsqueda de las siguientes maneras:
- Busca con los nombres de los campos de la entidad de UDM: Crea tus búsquedas con los nombres de los campos de la entidad 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. - Accede a la pestaña Resumen: La pestaña Resumen proporciona un resumen de alto nivel de las entidades
que se encuentran en tu búsqueda, lo que aprovecha 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 sobre los tipos de entidades, como
DOMAIN_NAME,IP_ADDRESS,ASSET,USER,FILE,GROUPyRESOURCE. - Usa la pestaña Entity: En la pestaña Entity, se enumeran todos los eventos de contexto de entidad recibidos, incluidos los subcomponentes, como Trend Over Time, Snapshot Filter, Aggregations y Events. Las entidades se clasifican en entidades temporales y atemporales, que se muestran en pestañas separadas.
- Ver agregaciones: Se muestran las agregaciones para los campos, de forma similar a la búsqueda de eventos de UDM. Las agregaciones se clasifican, además, en tipos de contexto: contexto de entidad, contexto derivado y contexto global.
Interfaz de resultados de la búsqueda de Entity Context Graph
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 las entidades:
Pestaña Resultados: Muestra
Timed DatayTimeless Data.- Datos con marca de tiempo: Muestra las entidades que tenían un valor para
metadata.interval.end_timedurante la transferencia. - Datos atemporales: Muestra las entidades que no tenían valor para
metadata.interval.end_time.
La interfaz muestra entidades con o sin tiempo, hasta la cantidad máxima de resultados configurada.
- Datos con marca de tiempo: Muestra las entidades que tenían un valor para
Pestaña Alertas: Muestra las alertas asociadas con las entidades que se encontraron en la búsqueda.
Pestaña Resumen: Presenta información sobre la entidad en la búsqueda.
Gráfico de actividad a lo largo del tiempo:
Muestra la cantidad de entidades y el contexto de la entidad 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 grafo de contexto de entidades (ECG) almacena datos en buckets de tiempo dentro de su período de validez. También copia estos datos en el siguiente bucket de tiempo, siempre que la entidad siga siendo válida (según
end_time). Este grafo se actualiza cada vez que cambia una propiedad de entidad entre dos buckets de tiempo.
Caso de uso: Investiga una cuenta de usuario vulnerada
Considera la siguiente situación: un analista de seguridad debe investigar una cuenta de usuario potencialmente comprometida (email@company.com). Sigue estos pasos para investigar:
Identifica al usuario comprometido: Una alerta marca al usuario email@company.com como una cuenta sospechosa.
Recopilar información de contexto de la entidad: Obtén datos contextuales sobre el usuario para comprender el alcance y el impacto.
Ejecuta consultas: Usa el contexto de la entidad 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, lo que incluye 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 a 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 la entidad, distribuidos en Contexto de la entidad, Contexto derivado y Contexto global.
Ejemplos de la Búsqueda
Para buscar datos de contexto de entidades, usa los nombres de los campos de entidad de UDM en tus búsquedas:
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, como la siguiente:
- Metadatos de entidad
- 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 recursos,Mail_idpara usuarios,File_namepara hashes/archivos, yDomain_nameyIP_addresspara dominios.
Ejemplos de contexto de la entidad en la búsqueda
En esta sección, se proporcionan ejemplos prácticos para aprovechar la función de contexto de entidad de UDM y analizar las estadísticas de las 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 tiempo muestra los datos activos dentro del gráfico de entidades, no cuando se ingirieron los datos de contexto.
Debido a que la búsqueda de entidades de UDM usa la interfaz estándar de búsqueda de UDM, puedes usar funciones, como el panel Agregaciones (para ver los valores superiores o inferiores), la tabla de resultados y los resultados expandidos de las estadísticas de UDM.
Ejemplo: Ver ENTITY_TYPE distintos
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 los ENTITY_TYPE distintos observados, 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 tabla dinámica de la búsqueda de UDM. Este perfeccionamiento 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 de
first_seenylast_seenpara cadaENTITY_TYPE Prevalence: Es la cantidad de recursos que accedieron a unENTITY_TYPEdeterminado.
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 las entidades con las marcas de tiempo first_seen y last_seen:
- El campo
first_seen_timecaptura la hora en que se vio por primera vez una entidad 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 primera hora de visualización 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 entidad 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 nombres de dominio que se observan con poca frecuencia. Estos dominios se asocian 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 durante los 10 días anteriores (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 de estadísticas de entidades de UDM agregadas 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
A continuación, se muestran ejemplos adicionales de cómo usar la función Contexto de la entidad 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"
Cómo dinamizar desde los campos de entidad
Usa campos de entidades para dinamizar y explorar datos relacionados. Estos son algunos ejemplos de campos dinámicos:
network.email.tonetwork.email.ccprincipal.process.file.fileMetadata.pe.importHashprincipal.process.file.sha256network.dns.questions.name
Información sobre los campos dinámicos
Las fuentes hacen referencia a campos estructurados dinámicos con prefijos, como
additional. Puedes buscar estos campos en los eventos de UDM.
Consideraciones sobre el control de acceso
El sistema impone un límite de 50 eventos en los datos de contexto globales. Tanto los usuarios globales como los de alcance pueden ver los datos.
Las siguientes fuentes proporcionan datos de contexto globales:
| Datos de contexto globales | Dónde un usuario puede ver estos datos o interactuar con ellos | Quién puede verla |
|---|---|---|
| Navegación segura | - Search - Reglas |
Todos los usuarios |
| Relaciones de VirusTotal | - Search - Reglas |
Todos los usuarios |
| WHOIS | - Search - Reglas |
Todos los usuarios |
| Uppercase | - Search - Reglas |
Todos los usuarios |
IOC de inteligencia de código abierto (OPEN_SOURCE_INTEL_IOC) |
- Search - 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 de resultados acumulados para datos con y sin tiempo.
- Datos de contexto globales: Hay un límite de 50 filas para los datos de contexto globales sensibles, como
UPPERCASE_VT_PROTECTED,MANDIANT_FUSION_IOCyVIRUS_TOTAL_CONNECTIONS. - Coherencia de los datos: Los datos vistos por última vez pueden tener un retraso de hasta 2 horas. Las entidades relacionadas solo pueden mostrar un subconjunto de las entidades que se indican 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 la entidad y las consultas de eventos.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.