Crea estadísticas contextuales

Las operaciones de seguridad de Google te permiten ver la telemetría, el contexto de las entidades, las relaciones y las vulnerabilidades como una sola detección dentro de tu cuenta de operaciones de seguridad de Google. Proporciona contextualización de entidades para permitirte comprender los patrones de comportamiento en telemetría y el contexto de las entidades afectadas a partir de esos patrones.

Ejemplos:

  • Publicación de los permisos de una cuenta en la que se intenta acceder a la cuenta mediante un intento de acceso forzado
  • Es la importancia de los datos alojados por un recurso que también es la fuente de la actividad de red saliente.

Los clientes pueden utilizar esta contextualización para el filtrado de detección, la priorización de alertas heurísticas, la clasificación y la investigación.

Los analistas de seguridad y los ingenieros de detección generalmente trabajan para diseñar una detección en un patrón básico de telemetría de eventos (una conexión de red saliente), creando numerosas detecciones para que sus analistas las clasifiquen. Los analistas intentan comprender qué sucedió para activar la alerta y qué tan significativa es la amenaza.

El análisis adaptado al contexto incorpora capacidades de enriquecimiento avanzadas en una etapa anterior del 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 el contexto relevante para la calificación de riesgos contextuales basada en la heurística de las detecciones en el momento de la ejecución de la detección en lugar de en la etapa de clasificación humana
  • Reducción del tiempo dedicado a la clasificación y a la unión manual de la información de diversos sistemas de seguridad de TI (consolas de EDR, registros de firewall o proxy, contexto de IAM y CMDB, resultados del análisis de vulnerabilidades)
  • Permitir que los analistas y los ingenieros de detección filtren clústeres completos de amenazas que puedan esperarse o que representen 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)

Escribe reglas para estadísticas contextuales

Puedes usar las reglas de Detection Engine para buscar datos del contexto de la entidad en tu cuenta de operaciones de seguridad de Google.

Para buscar datos de contexto de la entidad, completa lo siguiente:

  1. Especifica una fuente mediante el udm o la entidad.

    $eventname.[<source>].field1.field2 Para el contexto de una entidad, <source> es “graph”. Para un evento de UDM, <source> es "udm". Si se omite, <source> se establece de forma predeterminada como udm.

  2. Especifica los datos de la entidad:

    $e1.graph.entity.hostname = "my-hostname"

    $e1.graph.entity.relations.relationship = "OWNS"

  3. Especifica los datos de eventos de 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 contextos de entidades como lo harías con los eventos de 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

  • Calcular una puntuación de riesgo para las detecciones

A diferencia de un evento de UDM, el contexto de una entidad no tiene una marca de tiempo específica. Cada registro de contexto de entidad tiene un intervalo de tiempo, instance.metadata.interval, en el que el contexto de la entidad es válido. Este intervalo de tiempo no puede ser un límite de un día y puede tener cualquier duración.

Un evento de UDM se correlacionará con un registro del contexto de la entidad solo cuando la marca de tiempo del evento de UDM se encuentre dentro del intervalo de tiempo del registro del contexto de la entidad. Si no se cumple esta condición, el UDM y la entidad no se evalúan para las detecciones. El motor de detección aplica esto de manera implícita, y no necesitas especificarlo como condición en una regla.

  • Cuando se comparan los eventos de UDM con un contexto de entidad con un sistema de ventanas, el contexto de una entidad representa un valor constante en una ventana especificada.
  • Si hay buckets de día adyacentes en los que el contexto de la entidad cambia su valor, las operaciones de seguridad de Google intentan hacer coincidir todos los valores del contexto de la entidad y mostrar todas las coincidencias encontradas.

Ejemplos de reglas

Busca entidades con contexto de administrador

La siguiente regla busca entidades que también estén vinculadas a privilegios de administrador. Busca cuándo alguien con privilegio 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álido

El siguiente ejemplo de ventana deslizante no es válido. El contexto de entidad no se puede usar como elemento dinámico 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.target.user.termination_date.seconds > 0

    $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 lanzamiento de proceso sospechoso

En el siguiente ejemplo, se evalúan los datos del proceso de eventos de UDM con los datos del contexto de 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 una <source> después del nombre del evento. El <source> debe ser graph.

El siguiente patrón se refiere al contexto de una 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 utilizar diferentes calificadores para el mismo evento.

Sección de resultados

El motor de detección admite una sección outcome que te permite derivar más información a partir 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.

Para consultar una regla de ejemplo que utiliza la sección outcome, haz clic aquí.

Puedes encontrar información detallada sobre el uso y la sintaxis de una sección outcome en esta sección.

Sección de resultados y anulación de duplicación de detección / agrupación de detección

Para las reglas con una sección de coincidencia, recuerda que las detecciones se “agrupan” por las variables de coincidencia. Esto hace que se anule el duplicado de las detecciones, de modo que se muestre una fila para cada conjunto único de variables de coincidencia y ventana temporal.

Las variables de resultado se ignoran cuando se realiza esta anulación de duplicació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á la duplicación de estas y solo verás una detección. Esto puede ocurrir cuando se crea una detección, por ejemplo, debido a datos tardíos. Aquí hay 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: nombre de host: nombre de host de prueba período: [t1, t2] score_riesgo: 10

Detección 2: nombre de host: nombre de host de prueba período: [t1, t2] calificación de riesgo: 73

Debido a que las variables de coincidencia y el período son las mismas para la Detección 1 y la Detección 2, se anula la duplicación y solo verás una detección, aunque la variable de resultado, result_score, sea diferente.

¿Qué sigue?

Para obtener información sobre cómo las operaciones de seguridad de Google transfieren datos contextuales y enriquecen las entidades, consulta Cómo las operaciones de seguridad de Google enriquecen los datos de eventos y entidades.