Descripción general de las estadísticas adaptadas al contexto
Google SecOps te permite ver la telemetría, el contexto de la entidad, 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 en la telemetría como el contexto de las entidades afectadas por esos patrones.
Ejemplos:
- Se muestran los permisos de una cuenta en la que se intenta un acceso por fuerza bruta.
- Es la importancia de los datos alojados por un activo que también es la fuente de la actividad de red saliente.
Los clientes pueden usar esta contextualización para el filtrado de detección, la priorización de alertas heurísticas, la clasificación y la investigación.
Por lo general, los analistas de seguridad y los ingenieros de detección trabajan para crear una detección en un patrón básico de telemetría de eventos (una conexión de red saliente), lo que genera numerosas detecciones para que los analistas las prioricen. Los analistas intentan unir una comprensión de lo que sucedió para activar la alerta y qué tan significativa es la amenaza.
Las estadísticas basadas en el contexto incorporan capacidades de enriquecimiento avanzadas en el flujo de trabajo de creación y ejecución de la detección, lo que te permite proporcionar las siguientes capacidades adicionales:
- Poner a disposición contexto pertinente 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 etapa de clasificación humana
- Reducir el tiempo dedicado a la clasificación y a unir manualmente la información de los diferentes sistemas de seguridad de TI (consolas de EDR, registros de firewall o proxy, CMDB y contexto de IAM, resultados del análisis de vulnerabilidades)
- Permite a los analistas y a los ingenieros de detección filtrar clústeres completos de amenazas que pueden ser esperadas o representar poco o ningún peligro para la empresa (pruebas de malware en un entorno de zona de pruebas, vulnerabilidades y actividad anómala en una red de desarrollo sin datos sensibles ni acceso, y mucho más).
Cómo escribir reglas para el análisis adaptado al contexto
Puedes usar las reglas de Detection Engine para buscar datos de contexto de entidades en tu cuenta de Google SecOps.
Para buscar datos de contexto de la entidad, completa los siguientes pasos:
Especifica una fuente con el UDM o la entidad.
$eventname.[<source>].field1.field2
Para un contexto de entidad, <source> es "graph". Para 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 del evento del UDM. Las siguientes instrucciones 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 los contextos de entidades que para los eventos del UDM, incluidos los siguientes:
Varias reglas de eventos
Comparación de contextos de entidades con otros contextos de entidades
Comparación de contextos de entidades con eventos de UDM
Campos repetidos en contextos de entidades
Ventanas deslizantes
Cómo calcular una puntuación de riesgo para las detecciones
A diferencia de un evento del 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 el contexto de entidad es válido. Este intervalo de tiempo puede no ser un límite de día y puede tener cualquier duración.
Un evento del UDM se correlacionará con un registro de contexto de la entidad solo cuando la marca de tiempo del evento del UDM se encuentre dentro del intervalo de tiempo del registro de contexto de la entidad. Si no se cumple esta condición, no se evalúan el UDM ni la entidad para las detecciones. El motor de detección aplica esto de forma implícita, por lo que no es necesario que lo especifiques como condición en una regla.
- Cuando se comparan eventos del UDM con un contexto de entidad con ventanas, un contexto de entidad representa un valor constante durante un período especificado.
- Si hay buckets de días adyacentes en los que el contexto de la entidad cambia su valor, Google SecOps intenta encontrar coincidencias en todos los valores del contexto de la entidad y devuelve todas las coincidencias que se encuentren.
Ejemplos de reglas
Cómo buscar entidades con contexto de administrador
La siguiente regla busca entidades que también estén vinculadas a privilegios de administrador. Busca momentos en los que alguien con privilegios de administrador intentó acceder al sistema o salir de él.
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 deslizante no válida
El siguiente ejemplo de ventana deslizante no es válido. El contexto de la entidad no se puede usar como pivote para una ventana deslizante.
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 acceso con la sección de resultados
En el siguiente ejemplo, se usa la sección outcome
para calcular una puntuación de riesgo para 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 del proceso de eventos del UDM en función de los datos del contexto del IOC almacenados como un 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, debes 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 existen 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 función de cada detección. Si una regla genera N detecciones, cada una de las N detecciones puede generar un conjunto diferente de resultados.
Puedes encontrar una regla de ejemplo que usa la sección outcome
en regla con selección de resultado.
Puedes encontrar el uso y la sintaxis detallados de una sección outcome
en la sección de resultados.
Sección de resultados y eliminación de duplicados 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. Esto hace que se eliminen las duplicaciones de las detecciones, de modo que se devuelva una fila para cada conjunto único de variables de coincidencia y período.
Las variables de resultado se ignoran cuando se realiza esta deduplicación. Por lo tanto, si hay dos detecciones diferentes con los mismos valores para las variables de coincidencia y el período, pero con valores diferentes para las variables de resultado, se anularán los duplicados y solo verás una detección. Esto puede suceder cuando se crea una detección debido a datos que llegan tarde, por ejemplo. A continuación, se incluye un ejemplo que ilustra este caso.
rule ExampleOutcomeRule {
...
match:
$hostname over <some window>
outcome:
$risk_score = <some logic here>
...
}
Esta regla genera 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
Dado que las variables de coincidencia y el período son los mismos para la detección 1 y la detección 2, se anulan los duplicados y solo verás una detección, aunque la variable de resultado, risk_score, sea diferente.
¿Qué sigue?
Si deseas obtener información sobre cómo Google SecOps ingiere datos contextuales y enriquece entidades, consulta Cómo Google SecOps enriquece los datos de eventos y entidades.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.