Vista geral do YARA-L 2.0
O YARA-L 2.0 é uma linguagem especializada no Google Security Operations que opera em dados de registo empresariais para permitir que os profissionais de segurança explorem esses dados, investiguem ameaças e criem regras de deteção.
Este documento explica a linguagem YARA-L e a respetiva sintaxe, mostrando como pode usá-la para expressar tudo, desde uma consulta de filtro básica a uma regra que procura padrões complexos. Use as secções numa consulta YARA-L para suportar funções agregadas, lógica de condições e adicionar contexto através de junções, correspondência de padrões e muito mais.
Vista geral da sintaxe do YARA-L 2.0
Para criar uma regra ou uma consulta YARA-L, recomendamos que se familiarize e compreenda a estrutura e a sintaxe para especificar declarações, definições e utilização de variáveis.
Estrutura das regras
As regras YARA-L contêm as seguintes secções e têm de ser especificadas pela seguinte ordem:
| Encomenda | Secção | Regras | Pesquisa/Painéis de controlo | Descrição |
|---|---|---|---|---|
| 1 | meta | Obrigatória | N/A | Descreve a regra e pode incluir valores como autor, gravidade, descrição e prioridade. Consulte a sintaxe da secção Meta. |
| 2 | eventos | Obrigatória | Obrigatória | Define como filtrar e juntar eventos. Consulte a sintaxe da secção de eventos. |
| 3 | correspondência | Opcional | Opcional | Especifica os campos pelos quais agrupar quando agregar resultados. Consulte a sintaxe da secção de correspondência. Nota: se excluir uma secção match, a regra pode corresponder a um único evento. |
| 4 | resultado | Opcional | Opcional | Define os dados a gerar quando uma regra é executada ou quando uma regra é acionada. Consulte a sintaxe da secção de resultados. |
| 5 | condição | Obrigatória | Opcional | Contém lógica que determina se uma regra é acionada. Consulte a sintaxe da secção de condições. |
| 6 | de configuração | Opcional | Opcional | Permite ativar ou desativar o comportamento de regras específicas. Consulte a sintaxe da secção de opções. |
O exemplo seguinte 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 cria regras, o Google SecOps realiza a verificação de tipos em relação à sintaxe YARA-L e apresenta os erros para ajudar a rever a regra de modo a que funcione corretamente. Os exemplos seguintes mostram os erros apresentados quando é usada uma sintaxe inválida:
// $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 5 inícios de sessão falhados consecutivos por utilizador em intervalos 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 forma:
- A secção
metadefine o autor da regra (equipa de segurança), a descrição (deteta vários inícios de sessão de utilizadores falhados em janelas de 10 minutos) e a gravidade (alta).
Deteta vários inícios de sessão de utilizadores falhados em intervalos de 10 minutos
A secção
eventsdefine os eventos que têm de ser acompanhados: inícios de sessão de utilizadores, inícios de sessão de utilizadores falhados (variáveis de eventos) e links para a variável de correspondênciauser(variáveis de marcadores de posição).A secção
outcomedefine os cálculos a realizar no evento e nas variáveis de marcador de posição: contabilizar as tentativas de início de sessão falhadas e a hora em que ocorreu a primeira falha.A secção
matchdefine a variável pela qual agrupar os eventos ($user) e o período (10m) durante o qual esses eventos têm de ocorrer para serem considerados uma correspondência.A secção
conditionespecifica que apenas devem ser devolvidos utilizadores com mais de cinco ou mais inícios de sessão falhados.
O que se segue?
- Sintaxe da secção meta
- Sintaxe da secção de eventos
- Sintaxe da secção de correspondência
- Sintaxe da secção de resultados
- Sintaxe da secção de condições
- Sintaxe da secção de opções
Informações adicionais
- Expressões, operadores e construções usados no YARA-L 2.0
- Funções no YARA-L 2.0
- Crie regras de deteção compostas
- Exemplos: consultas YARA-L 2.0
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.