Visão geral da análise baseada no contexto

Compatível com:

As Operações de segurança do Google permitem que você veja a telemetria, o contexto de entidades, os relacionamentos e as vulnerabilidades como uma única detecção na sua conta das Operações de segurança do Google. Ele fornece a contextualização de entidades para que você possa entender os padrões comportamentais na telemetria e o contexto das entidades afetadas por esses padrões.

Exemplos:

  • Exibição das permissões de uma conta em que há uma tentativa de login por força bruta.
  • A importância dos dados hospedados por um recurso que também é a origem da atividade da rede de saída.

Os clientes podem usar essa contextualização para filtragem de detecção, priorização heurística de alertas, triagem e investigação.

Os analistas e engenheiros de detecção de segurança normalmente trabalham para criar uma detecção em um padrão básico de telemetria de eventos (uma conexão de rede de saída), criando inúmeras detecções para seus analistas fazerem a triagem. Os analistas tentam reunir uma compreensão do que aconteceu para disparar o alerta e da importância da ameaça.

A análise baseada no contexto incorpora recursos avançados de enriquecimento já no fluxo de trabalho de criação e execução de detecção, permitindo que você forneça os seguintes recursos adicionais:

  • Disponibilização de contexto relevante para a pontuação de risco contextual orientada por heurísticas das detecções no tempo de execução da detecção, e não na fase de triagem humana
  • Reduzir o tempo gasto na triagem e no agrupamento manual de informações de sistemas de segurança de TI diferentes (consoles EDR, registros de firewall/proxy, contexto do CMDB e do IAM, resultados da verificação de vulnerabilidades)
  • Permitir que analistas e engenheiros de detecção filtrem clusters inteiros de ameaças que podem ser esperadas ou que representam pouco ou nenhum perigo para a empresa (testes de malware em um ambiente sandbox, vulnerabilidades e atividades anômalas em uma rede de desenvolvimento sem acesso ou dados confidenciais, entre outros)

Como criar regras para análises baseadas no contexto

Você pode usar as regras do Detection Engine para pesquisar dados de contexto da entidade na sua conta de Operações de segurança do Google.

Para pesquisar dados de contexto da entidade, faça o seguinte:

  1. Especifique uma origem usando o udm ou a entidade.

    $eventname.[<source>].field1.field2 Para um contexto de entidade, <source> é "graph". Para um evento de UDM, <target> é 'udm'. Se omitido, a tag <target> o padrão é udm.

  2. Especifique os dados da entidade:

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

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

  3. Especifique os dados do evento de UDM. As instruções a seguir são equivalentes.

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

    $e1.principal.asset_id = "my_asset_id"

É possível criar muitos dos mesmos tipos de regras para contextos de entidade que você faria para eventos de UDM, incluindo:

  • Várias regras de evento

  • Como comparar contextos de entidade com outros contextos de entidade

  • Comparação de contextos de entidade com eventos da UDM

  • Campos repetidos em contextos de entidade

  • Janelas deslizantes

  • Como calcular uma pontuação de risco para detecções

Ao contrário de um evento UDM, o contexto de uma entidade não tem um carimbo de data/hora específico. Cada registro de contexto de entidade tem um intervalo de tempo, entity.metadata.interval, em que o contexto de entidade é válido. Esse intervalo de tempo pode não ser uma fronteira de um dia e pode ter qualquer duração.

Um evento do UDM só será associado a um registro de contexto de entidade quando o carimbo de data/hora do evento do UDM estiver dentro do intervalo de tempo do registro de contexto da entidade. Se essa condição não for atendida, o UDM e a entidade não serão avaliados de detecção. O mecanismo de detecção aplica isso implicitamente, e você não precisa para especificá-lo como uma condição em uma regra.

  • Ao comparar eventos UDM a um contexto de entidade com janelamento, o contexto de entidade representa um valor constante em uma janela especificada.
  • Se houver buckets de dias adjacentes em que o contexto da entidade muda de valor, o Google Security Operations vai tentar fazer a correspondência em todos os valores do contexto da entidade e retornar todas as correspondências encontradas.

Exemplo de regras

Como pesquisar entidades com contexto de administrador

A regra a seguir procura entidades que também estão vinculadas a privilégios de administrador. Ele procura momentos em que alguém com privilégio de administrador tentou fazer login ou logout do 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 exemplo de janela deslizante a seguir é 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 exemplo a seguir de janela deslizante é inválido. Não é possível usar o contexto de entidade como pivô de 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 login usando a seção de resultados

O exemplo a seguir usa a seção outcome para calcular uma pontuação de risco para a detecçã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.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
}

Exemplo de lançamento de processo suspeito

O exemplo a seguir avalia os dados do processo do evento de UDM em relação aos dados de contexto do IOC armazenada como 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 contexto de entidade

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

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

  • $e.graph.entity.hostname

Observe que existem dois métodos equivalentes para se referir a um evento de UDM:

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

É possível misturar e combinar todos esses qualificadores no texto da regra. Também é possível usar qualificadores diferentes para o mesmo evento.

Seção de resultados

O mecanismo de detecção oferece suporte à seção outcome, que permite derivar mais informações de uma regra. A lógica definida na seção outcome é avaliada com relação a cada detecção. Se uma regra gerar N detecções, cada uma das N detecções poderá resultar em um conjunto diferente de resultados.

Confira um exemplo de regra que usa a seção outcome aqui.

A sintaxe e o uso detalhados de uma seção do outcome podem ser encontrados nesta seção.

Seção de resultados e agrupamento / eliminação de duplicação de detecção

Para regras com uma seção de correspondência, lembre-se de que as detecções são "agrupadas por" as variáveis de correspondência. Isso faz com que a duplicação das detecções seja eliminada, de modo que uma linha é retornado para cada conjunto exclusivo de variáveis de correspondência e janela de tempo.

As variáveis de resultado são ignoradas ao fazer essa eliminação de duplicação. Portanto, se houver duas detecções diferentes com os mesmos valores para as variáveis de correspondência e a janela de tempo, mas com valores diferentes para as variáveis de resultado, elas serão eliminadas e você vai ver apenas uma detecção. Isso pode acontecer quando um detecção foi criada devido à chegada tardia de dados, por exemplo. Aqui está um exemplo que ilustra este caso.

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

Essa regra resulta nas seguintes correspondências:

Detecção 1: hostname: test-hostname time window: [t1, t2] risk_score: 10

Detecção 2: nome do host: test-hostname janela de tempo: [t1, t2] Pontuação de risco: 73

Como as variáveis de correspondência e a janela de tempo são iguais para Detecção 1 e Detecção 2, essas duplicações são eliminadas, e você veem apenas uma detecção, mesmo que a variável de resultado, risk_score, diferente.

A seguir

Para saber como as Operações de segurança do Google processam dados contextuais e enriquece entidades, consulte Como o Google Security Operations enriquece os dados de eventos e entidades