Información general sobre las analíticas contextuales
Google SecOps te permite ver la telemetría, el contexto de las entidades, las relaciones y las vulnerabilidades como una sola detección en tu cuenta de Google SecOps. Proporciona contextualización de entidades para que puedas comprender tanto los patrones de comportamiento de la telemetría como el contexto de las entidades afectadas por esos patrones.
Ejemplos:
- Muestra los permisos de una cuenta en la que se está intentando iniciar sesión por fuerza bruta.
- Importancia de los datos alojados en un recurso que también es la fuente de la actividad de red saliente.
Los clientes pueden usar esta contextualización para filtrar detecciones, priorizar alertas heurísticas, clasificar y realizar investigaciones.
Los analistas de seguridad y los ingenieros de detección suelen trabajar para crear una detección basada en un patrón básico de telemetría de eventos (una conexión de red saliente), lo que genera numerosas detecciones que los analistas deben clasificar. Los analistas intentan reconstruir lo que ha ocurrido para activar la alerta y la gravedad de la amenaza.
La analítica contextual incorpora funciones de enriquecimiento avanzadas en una fase más temprana del flujo de trabajo de creación y ejecución de detecciones, lo que te permite ofrecer las siguientes funciones adicionales:
- Proporcionar contexto relevante para la puntuación de riesgo contextual basada en heurísticas de las detecciones en el momento de la ejecución de la detección, en lugar de en la fase de triaje humano
- Reducir el tiempo dedicado a la evaluación inicial y a combinar manualmente información de sistemas de seguridad de TI dispares (consolas de EDR, registros de cortafuegos o proxy, CMDB y contexto de gestión de identidades y accesos, resultados de análisis de vulnerabilidades)
- Permitir que los analistas y los ingenieros de detección filtren clústeres enteros de amenazas que puedan ser esperadas o que representen poco o ningún peligro para la empresa (pruebas de malware en un entorno de sandbox, vulnerabilidades y actividad anómala en una red de desarrollo sin datos ni acceso sensibles, etc.)
Escribir reglas para analíticas contextuales
Puedes usar reglas de Detection Engine para buscar datos de contexto de entidades en tu cuenta de Google SecOps.
Para buscar datos de contexto de entidades, sigue estos pasos:
Especifica una fuente mediante udm o entity.
$eventname.[<source>].field1.field2
En el caso de un contexto de entidad, <source> es "graph". En el caso de un evento de UDM, <source> es "udm". Si se omite, el valor predeterminado de <source> es udm.Especifica los datos de la entidad:
$e1.graph.entity.hostname = "my-hostname"
$e1.graph.entity.relations.relationship = "OWNS"
Especifica los datos de evento de UDM. Las siguientes afirmaciones son equivalentes.
$e1.udm.principal.asset_id = "my_asset_id"
$e1.principal.asset_id = "my_asset_id"
Puedes crear muchos de los mismos tipos de reglas para contextos de entidades que para eventos de UDM, incluidos los siguientes:
Varias reglas de eventos
Comparar contextos de entidades con otros contextos de entidades
Comparar contextos de entidad con eventos de UDM
Campos repetidos en contextos de entidad
Ventanas correderas
Calcular la puntuación de riesgo de las detecciones
A diferencia de un evento de UDM, un contexto de entidad no tiene una marca de tiempo específica. Cada registro de contexto de entidad tiene un intervalo de tiempo, entity.metadata.interval, durante el cual es válido el contexto de la entidad. Este intervalo de tiempo no puede ser un límite de día y puede tener cualquier duración.
Un evento de UDM se correlacionará con un registro de contexto de entidad solo cuando la marca de tiempo del evento de UDM se encuentre dentro del intervalo de tiempo del registro de contexto de entidad. Si no se cumple esta condición, no se evaluarán la UDM ni la entidad para detectar nada. El motor de detección aplica esta restricción de forma implícita, por lo que no es necesario que la especifiques como condición en una regla.
- Al comparar eventos de UDM con un contexto de entidad con ventanas, un contexto de entidad representa un valor constante en una ventana especificada.
- Si hay contenedores de días adyacentes en los que el contexto de la entidad cambia su valor, Google SecOps intenta encontrar coincidencias con todos los valores del contexto de la entidad y devuelve todas las coincidencias que se encuentren.
Ejemplos de reglas
Buscar entidades con contexto de administrador
La siguiente regla busca entidades que también estén vinculadas a privilegios de administrador. Busca las horas en las que alguien con privilegios de administrador ha intentado iniciar o cerrar sesión en el sistema.
rule LoginLogout {
meta:
events:
($log_inout.metadata.event_type = "USER_LOGIN" or $log_inout.metadata.event_type = "USER_LOGOUT")
$log_inout.principal.user.user_display_name = $user
$context.graph.entity.user.user_display_name = $user
$context.graph.entity.resource.attribute.roles.type = "ADMINISTRATOR"
match:
$user over 2m
condition:
$log_inout and $context
}
Ejemplo de ventana deslizante
El siguiente ejemplo de ventana deslizante es válido.
rule Detection {
meta:
events:
$e1.graph.entity.hostname = $host
$e2.udm.principal.hostname = $host
match:
// Using e2 (a UDM event) as a pivot.
$host over 3h after $e2
condition:
$e1 and $e2
}
Ejemplo de ventana de tiempo no válida
El siguiente ejemplo de ventana deslizante no es válido. El contexto de la entidad no se puede usar como eje de una ventana de tiempo.
rule Detection {
meta:
events:
$e1.graph.entity.hostname = $host
$e2.udm.principal.hostname = $host
match:
// Attempting to use $e1 (an entity context) as a pivot. Invalid.
$host over 3h after $e1
condition:
$e1 and $e2
}
Ejemplo de inicio de sesión con la sección de resultados
En el siguiente ejemplo se usa la sección outcome
para calcular una puntuación de riesgo de la detección.
rule Detection {
meta:
events:
$auth.metadata.event_type = "USER_LOGIN"
$auth.metadata.vendor_name = "Acme"
$auth.metadata.product_name = "Acme SSO"
$auth.target.user.userid = $user
$auth.metadata.event_timestamp.seconds >
$context.graph.entity.user.termination_date.seconds
$context.graph.metadata.vendor_name = "Microsoft"
$context.graph.metadata.product_name = "Azure Active Directory"
$context.graph.metadata.entity_type = "USER"
$context.graph.entity.user.userid = $user
$context.graph.entity.user.termination_date.seconds > 0
match:
$user over 15m
outcome:
$risk_score = max(
if ( $auth.metadata.event_type = "USER_LOGIN", 50) +
if (
$context.graph.entity.user.title = "Remote" nocase or
$context.graph.entity.user.title = "Temp" nocase or
$context.graph.entity.user.title = "Vendor" nocase, 40) +
if ( $context.graph.entity.user.title = "Legal" nocase, 10)
)
condition:
$auth and $context
}
Ejemplo de inicio de proceso sospechoso
En el siguiente ejemplo se evalúan los datos de proceso de eventos de UDM con los datos de contexto de IOC almacenados como contexto de entidad.
rule ProcessLaunch {
meta:
events:
$ioc.graph.metadata.vendor_name = "ACME"
$ioc.graph.metadata.product_name = "IOCs"
$ioc.graph.metadata.entity_type = "FILE"
$ioc.graph.entity.file.sha256 = $hash
$process.metadata.event_type = "PROCESS_LAUNCH"
$process.principal.hostname = $hostname
(
not $process.target.process.file.sha256 = "" and
$process.target.process.file.sha256 = $hash
)
match:
$hash over 15m
condition:
$ioc and $process
}
Calificadores adicionales para el contexto de la entidad
Para crear una variable de evento que use un contexto de entidad, debe proporcionar un <source>
después del nombre del evento.
El <source>
debe ser graph
.
El siguiente patrón hace referencia a un contexto de entidad:
$e.graph.entity.hostname
Ten en cuenta que hay dos métodos equivalentes para hacer referencia a un evento de UDM:
$u.udm.principal.asset_id
$u.principal.asset_id
Puedes combinar todos estos calificadores en el texto de la regla. También puedes usar diferentes calificadores para el mismo evento.
Sección de resultados
El motor de detección admite una sección outcome
que te permite obtener más información de una regla. La lógica definida en la sección outcome
se evalúa en cada detección. Si una regla genera N detecciones, cada una de las N detecciones puede dar lugar a un conjunto de resultados diferente.
Puede consultar un ejemplo de regla que usa la sección outcome
en el artículo sobre la regla con selección de resultados.
Puedes consultar el uso y la sintaxis detallados de una sección outcome
en la sección de resultados.
Sección de resultados y deduplicación o agrupación de detecciones
En el caso de las reglas con una sección de coincidencias, recuerda que las detecciones se agrupan por las variables de coincidencia. De esta forma, las detecciones se desduplican, de modo que se devuelve una fila por cada conjunto único de variables de coincidencia y ventana temporal.
Las variables de resultado se ignoran al realizar esta desduplicación. Por lo tanto, si hay dos detecciones diferentes con los mismos valores para las variables de coincidencia y la ventana temporal, pero con valores diferentes para las variables de resultado, se eliminarán los duplicados y solo verá una detección. Esto puede ocurrir cuando se crea una detección debido a que los datos llegan tarde, por ejemplo. Aquí tienes un ejemplo que ilustra este caso.
rule ExampleOutcomeRule {
...
match:
$hostname over <some window>
outcome:
$risk_score = <some logic here>
...
}
Esta regla da como resultado las siguientes coincidencias:
Detección 1: hostname: test-hostname time window: [t1, t2] risk_score: 10
Detección 2: hostname: test-hostname time window: [t1, t2] risk_score: 73
Como las variables de coincidencia y el periodo son los mismos para Detección 1 y Detección 2, se eliminan los duplicados y solo verás una detección, aunque la variable de resultado, risk_score, sea diferente.
Siguientes pasos
Para obtener información sobre cómo ingiere datos contextuales y enriquece entidades Google SecOps, consulta el artículo Cómo enriquece Google SecOps los datos de eventos y entidades.
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.