Visão geral do YARA-L 2.0

Compatível com:

A YARA-L 2.0 é uma linguagem especializada do Google Security Operations que opera com dados de registros corporativos para permitir que os profissionais de segurança analisem esses dados, investiguem ameaças e criem regras de detecção.

Este documento explica a YARA-L e sua sintaxe, mostrando como usá-la para expressar tudo, desde uma consulta de filtro básica até uma regra que procura padrões complexos. Use as seções em uma consulta YARA-L para oferecer suporte a funções agregadas, lógica condicional e adicionar contexto por junções, correspondência de padrões e muito mais.

Visão geral da sintaxe do YARA-L 2.0

Para criar uma regra ou consulta YARA-L, recomendamos que você se familiarize e entenda a estrutura e a sintaxe para especificar declarações, definições e uso de variáveis.

Estrutura da regra

As regras YARA-L contêm as seguintes seções e precisam ser especificadas nesta ordem:

Pedido Seção Regras Pesquisa/Painéis Descrição
1 meta Obrigatório N/A Descreve a regra e pode incluir valores como autor, gravidade, descrição e prioridade. Consulte Sintaxe da seção de metadados.
2 eventos Obrigatório Obrigatório Define como filtrar e combinar eventos. Consulte Sintaxe da seção "Eventos".
3 correspondência Opcional Opcional Especifica quais campos usar para agrupar ao agregar resultados. Consulte Sintaxe da seção "Correspondência".

Observação: se você excluir uma seção match, a regra poderá corresponder a um único evento.
4 resultado Opcional Opcional Define quais dados serão gerados quando uma regra for executada ou acionada. Consulte Sintaxe da seção de resultado.
5 transição Obrigatório Opcional Contém a lógica que determina se uma regra é acionada. Consulte Sintaxe da seção de condição.
6 opções Opcional Opcional Permite ativar ou desativar o comportamento de uma regra específica. Consulte Sintaxe da seção "Opções".

O exemplo a seguir ilustra a estrutura genérica de uma regra:

rule <rule name>
{
    meta:
    // Stores arbitrary key-value pairs of the rule details, such as who wrote
    // it, what it detects on, version control, etc.

  events:
    // Defines which events to filter and the relationship between events.

  match:
    // Values to return when matches are found.

  outcome:
    // Define the output of each rule and security alert.

  condition:
    // Condition to check events and the variables used to find matches.

  options:
    // Options to turn on or off while executing this rule. The `options` syntax is only valid for rules.
}

À medida que você cria regras, o Google SecOps realiza a verificação de tipos na sua sintaxe YARA-L e mostra os erros para ajudar a revisar a regra e garantir que ela funcione corretamente. Os exemplos a seguir mostram os erros apresentados quando uma sintaxe inválida é usada:

// $e.target.port is of type integer which cannot be compared to a string.
$e.target.port = "80"

// "LOGIN" is not a valid event_type enum value.
$e.metadata.event_type = "LOGIN"

Esta regra de exemplo encontra cinco logins consecutivos com falha por usuário em janelas de 10 minutos.

rule failed_logins
{
  meta:
   author = "Security Team"
   description = "Detects multiple failed user logins within 10-minute windows."
   severity = "HIGH"

  events:
   $e.metadata.event_type = "USER_LOGIN"
   $e.security_result.action = "FAIL"
   $user = $e.target.user.userid

  match:
   $user over 10m

  outcome:
   $failed_login_count = count($e.metadata.id)
   $first_fail_time = min($e.metadata.event_timestamp.seconds)

  condition:
    #e >= 5
}

A regra é definida da seguinte maneira:

  • A seção meta define o autor da regra (equipe de segurança), a descrição (detecta várias falhas de login do usuário em períodos de 10 minutos) e a gravidade (alta).

Detecta várias falhas de login de usuário em períodos de 10 minutos

  • A seção events define os eventos que precisam ser rastreados: logins de usuários, falhas de login de usuários (variáveis de evento) e links para a variável de correspondência user (variáveis de marcador de posição).

  • A seção outcome define os cálculos a serem realizados no evento e nas variáveis de marcador de posição: conte as falhas de login e o horário em que a primeira falha ocorreu.

  • A seção match define a variável para agrupar os eventos ($user) e o período (10m) em que esses eventos precisam ocorrer para serem considerados uma correspondência.

  • A seção condition especifica que só serão retornados usuários com mais de cinco ou mais tentativas de login sem sucesso.

A seguir

Informações adicionais

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