Vista geral das estatísticas sensíveis ao contexto

Compatível com:

O Google SecOps permite-lhe ver telemetria, contexto de entidades, relações e vulnerabilidades como uma única deteção na sua conta do Google SecOps. Fornece contextualização de entidades para lhe permitir compreender os padrões comportamentais na telemetria e o contexto das entidades afetadas a partir desses padrões.

Exemplos:

  • Apresentar as autorizações de uma conta na qual está a ser tentada uma tentativa de início de sessão por força bruta.
  • Importância dos dados alojados por um recurso que também é a origem da atividade de rede de saída.

Os clientes podem usar esta contextualização para filtragem de deteção, priorização de alertas heurísticos, triagem e investigação.

Normalmente, os analistas de segurança e os engenheiros de deteção trabalham para criar uma deteção num padrão básico de telemetria de eventos (uma ligação de rede de saída), criando inúmeras deteções para os seus analistas avaliarem. Os analistas tentam juntar as peças para compreender o que aconteceu para acionar o alerta e a gravidade da ameaça.

As estatísticas sensíveis ao contexto incorporam capacidades de enriquecimento avançadas no início do fluxo de trabalho de criação e execução de deteções, o que lhe permite oferecer as seguintes capacidades adicionais:

  • Disponibilizar contexto relevante para a classificação de risco contextual baseada em heurística de deteções no momento da execução da deteção, em vez de na fase de triagem humana
  • Reduzir o tempo gasto na triagem e na união manual de informações de sistemas de segurança de TI díspares (consolas de EDR, registos de firewall ou proxy, CMDB e contexto de IAM, resultados da análise de vulnerabilidades)
  • Permitir que os analistas e os engenheiros de deteção filtrem clusters inteiros de ameaças que podem ser esperadas ou representar pouco ou nenhum perigo para a empresa (testes de software malicioso num ambiente de sandbox, vulnerabilidades e atividade anómala numa rede de desenvolvimento sem dados nem acesso confidenciais, entre outros)

Escrever regras para estatísticas sensíveis ao contexto

Pode usar regras do motor de deteção para pesquisar dados de contexto de entidades na sua conta do Google SecOps.

Para pesquisar dados de contexto de entidades, conclua o seguinte:

  1. Especifique uma origem através do udm ou da entidade.

    $eventname.[<source>].field1.field2 Para um contexto de entidade, <source> é "graph". Para um evento UDM, <source> é "udm". Se for omitido, o <source> tem a predefinição udm.

  2. Especifique os dados da entidade:

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

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

  3. Especifique os dados de eventos da UDM. As seguintes declarações são equivalentes.

    $e1.udm.principal.asset_id = "my_asset_id"

    $e1.principal.asset_id = "my_asset_id"

Pode criar muitos dos mesmos tipos de regras para contextos de entidades que criaria para eventos de UDM, incluindo o seguinte:

  • Várias regras de eventos

  • Comparar contextos de entidades com outros contextos de entidades

  • Comparar contextos de entidades com eventos do UDM

  • Campos repetidos em contextos de entidades

  • Janelas deslizantes

  • Calcular uma classificação de risco para deteções

Ao contrário de um evento UDM, um contexto de entidade não tem uma indicação de tempo específica. Cada registo de contexto de entidade tem um intervalo de tempo, entity.metadata.interval, durante o qual o contexto de entidade é válido. Este intervalo de tempo não pode ser um limite de dia e pode ter qualquer duração.

Um evento UDM é correlacionado com um registo de contexto de entidade apenas quando a data/hora do evento UDM se enquadra no intervalo de tempo do registo de contexto de entidade. Se esta condição não for cumprida, o UDM e a entidade não são avaliados para deteções. O motor de deteção aplica isto implicitamente e não precisa de o especificar como uma condição numa regra.

  • Quando compara eventos de UDM com um contexto de entidade com janelas, um contexto de entidade representa um valor constante num período especificado.
  • Se existirem intervalos de dias adjacentes em que o contexto da entidade altera o respetivo valor, o Google SecOps tenta encontrar correspondências em todos os valores do contexto da entidade e devolve todas as correspondências encontradas.

Exemplos de regras

Pesquisar entidades com o contexto de administrador

A regra seguinte pesquisa entidades que também estão associadas a privilégios de administrador. Procura momentos em que alguém com privilégios de administrador tentou iniciar sessão ou terminar sessão no 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
}

Exemplo de janela deslizante

O seguinte exemplo de janela deslizante é 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
}

Exemplo de janela deslizante inválido

O seguinte exemplo de janela deslizante é inválido. Não é possível usar o contexto da entidade como uma tabela dinâmica para uma janela 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
}

Exemplo de início de sessão com a secção de resultado

O exemplo seguinte usa a secção outcome para calcular uma pontuação de risco para a deteção.

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
}

Exemplo de lançamento de processo suspeito

O exemplo seguinte avalia os dados do processo de eventos da UDM em função dos dados de contexto de IOC armazenados como um contexto de entidade.

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
}

Qualificadores adicionais para o contexto da entidade

Para criar uma variável de evento que use um contexto de entidade, tem de fornecer um <source> após o nome do evento. O <source> tem de ser graph.

O padrão seguinte refere-se a um contexto de entidade:

  • $e.graph.entity.hostname

Tenha em atenção que existem dois métodos equivalentes de referência a um evento de UDM:

  • $u.udm.principal.asset_id
  • $u.principal.asset_id

Pode combinar todos estes qualificadores no texto da regra. Também pode usar qualificadores diferentes para o mesmo evento.

Secção de resultados

O motor de deteção suporta uma secção outcome que lhe permite obter mais informações de uma regra. A lógica definida na secção outcome é avaliada em função de cada deteção. Se uma regra gerar N deteções, cada uma das N deteções pode resultar num conjunto diferente de resultados.

Pode encontrar uma regra de exemplo que usa a secção outcome em regra com seleção de resultado.

Pode encontrar a utilização e a sintaxe detalhadas de uma secção outcome na secção de resultados.

Secção de resultados e eliminação de duplicações / agrupamento de deteções

Para regras com uma secção de correspondência, recorde que as deteções são "agrupadas por" as variáveis de correspondência. Isto faz com que as deteções sejam desduplicadas, de modo que é devolvida uma linha para cada conjunto único de variáveis de correspondência e intervalo de tempo.

As variáveis de resultado são ignoradas quando faz esta desduplicação. Assim, se existirem duas deteções diferentes com os mesmos valores para as variáveis de correspondência e o período, mas com valores diferentes para as variáveis de resultado, estas são eliminadas duplicadas, e só é apresentada uma deteção. Isto pode acontecer quando é criada uma deteção devido a dados recebidos tardiamente, por exemplo. Segue-se um exemplo que ilustra este caso.

rule ExampleOutcomeRule {
  ...
  match:
    $hostname over <some window>
  outcome:
    $risk_score = <some logic here>
  ...
}

Esta regra resulta nas seguintes correspondências:

Detection 1: hostname: test-hostname time window: [t1, t2] risk_score: 10

Detection 2: hostname: test-hostname time window: [t1, t2] risk_score: 73

Uma vez que as variáveis de correspondência e o período são iguais para a Deteção 1 e a Deteção 2, estas são desduplicadas e só vê uma deteção, apesar de a variável de resultado, risk_score, ser diferente.

O que se segue?

Para obter informações sobre como o Google SecOps carrega dados contextuais e enriquece entidades, consulte o artigo Como o Google SecOps enriquece os dados de eventos e entidades

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.