Visão geral do YARA-L 2.0
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
metadefine 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
eventsdefine 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ênciauser(variáveis de marcador de posição).A seção
outcomedefine 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
matchdefine 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
conditionespecifica que só serão retornados usuários com mais de cinco ou mais tentativas de login sem sucesso.
A seguir
- Sintaxe da seção de metadados
- Sintaxe da seção "Eventos"
- Sintaxe da seção de correspondência
- Sintaxe da seção de resultados
- Sintaxe da seção de condição
- Sintaxe da seção "Opções"
Informações adicionais
- Expressões, operadores e construções usados na YARA-L 2.0
- Funções na YARA-L 2.0
- Criar regras de detecção compostas
- Exemplos: consultas da YARA-L 2.0
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.