Encadeamento de regras

Compatível com:

A vinculação de regras permite interligar regras de modo que a saída de uma regra funcione como a entrada de outra. Esse recurso permite criar regras com mais complexidade e flexibilidade. A vinculação de regras supera as limitações da detecção de eventos isolados ao correlacionar e analisar eventos em diferentes fontes de dados e períodos.

Benefícios da vinculação de regras:

  • Como desmascarar ataques de vários estágios: os ataques cibernéticos geralmente estão interconectados. A vinculação de regras ajuda a descobrir a narrativa do ataque mostrando as ligações entre incidentes aparentemente isolados. Por exemplo, a vinculação de regras pode identificar toda a sequência de ataque, como uma violação inicial seguida de elevação de privilégios e exfiltração de dados.

  • Como lidar com a fadiga de alertas: priorize ameaças críticas e mitigue a fadiga de alertas implementando regras de consumo. Essas regras consolidam e filtram alertas ruidosos gerados pelas regras do produtor, permitindo uma resposta mais focada.

  • Melhorar a precisão da detecção: combine insights de eventos da UDM, outras detecções de regras, informações de entidade, descobertas da UEBA e tabelas de dados para criar uma lógica de detecção precisa.

  • Simplificar a lógica complexa: divida cenários de detecção complexos em regras gerenciáveis, interconectadas e reutilizáveis para simplificar o desenvolvimento e a manutenção.

Termos e conceitos de encadeamento de regras:

  • Detecção: é o resultado de uma regra e também pode ser chamado de alerta.

  • Cadeia: é uma série de regras em que a saída de uma regra serve como entrada para a próxima. Por exemplo, na cadeia rule1 -> rule2 -> rule3, as detecções geradas por rule1 são usadas por rule2 para produzir novas detecções, que são usadas por rule3 para gerar o próprio conjunto de detecções.

  • Regra de produtor: é uma regra em que as detecções são usadas como entrada para outra regra. Qualquer regra pode funcionar como uma regra de produtor, e não é necessário ter uma designação específica. As regras do produtor usam entidades e eventos como entrada. Eles não usam detecções como entrada.

  • Regra do consumidor: é uma regra que usa detecções como entrada no texto da regra. As regras do consumidor precisam ter uma seção de correspondência.

  • Regra de encadeamento: também conhecida como regra de consumidor.

Conceitos avançados

Regras de detecção de evento único

O Google SecOps não permite regras de detecção de eventos únicos. Isso significa que qualquer regra que use detecções como fonte de dados precisa ter uma seção de correspondência.

Detecção de latência

Recomendamos encadear apenas regras de consumidor em regras de evento único devido a problemas de programação. As regras de evento único são executadas quase em tempo real, então as detecções dessas regras quase sempre estarão disponíveis para a primeira execução de uma regra de consumidor. Se você criar uma cadeia de regras usando uma regra de vários eventos, é possível que a regra de produtor seja executada após a regra de consumidor, atrasando a geração de detecções na regra de consumidor.

TestRule e Retrohunt

Testar ou executar uma retrohunt em uma regra de consumidor executa apenas a regra específica que você selecionou usando detecções existentes. Para executar uma cadeia completa, inicie as RetroHunts no início da cadeia e aguarde a conclusão de cada execução antes de executar a próxima regra.

A execução de um teste em uma regra não persiste nem grava as detecções no banco de dados, e as regras do consumidor exigem que as detecções de entrada existam no banco de dados. Portanto, não é possível testar uma cadeia de regras na regra de teste.

Criar cadeias de regras

Você cria cadeias de regras usando combinações de regras de produtores e consumidores.

Regras do produtor

As regras do produtor são a base da sua cadeia. Eles identificam eventos ou condições específicos que, quando combinados, indicam atividades maliciosas. Para configurar a regra do produtor, faça o seguinte:

  1. Criar uma regra nova ou reutilizar uma existente

  2. Desative os alertas e defina $risk_score como 0 na seção de resultados. Isso impede que essas regras gerem alertas individuais ou afetem as pontuações de risco da entidade. Com essa configuração, é possível priorizar os alertas mais críticos gerados por regras de consumidor, que avaliam toda a cadeia de eventos.

  3. Use a seção outcome para definir as variáveis acessíveis para regras de acionamento.

O exemplo de regra de produtor a seguir detecta falhas de login.

rule failed_login {
  meta:

  events:
    $e.metadata.event_type = "USER_LOGIN"
    any $e.security_result.action = "BLOCK"

  outcome:
   $risk_score = 0
   $target_user = $e.target.user.userid

  condition:
    $e
}

Essa regra identifica logins bloqueados e fornece o usuário associado.

Regras de encadeamento

Criar uma regra que usa detecções é quase igual a uma regra que usa a UDM, com exceção da fonte e dos campos disponíveis. Para fazer referência a um campo de detecção, use a palavra-chave detection como origem: $eventname.detection.field1.field2.

Os subcampos disponíveis na fonte detection podem ser encontrados no recurso de coletor.

Confira a seguir os campos comuns nas coleções

  • $d.detection.detection.rule_id

  • $d.detection.detection.detection_fields["match_var_name"]

  • $d.detection.detection.outcomes["outcome_name"]

A regra de exemplo a seguir detecta logins sem MFA, enumeração e exfiltração.

rule login_enumeration_exfiltration {
    meta:
description = "Detects when a user logs in without multifactor authentication (MFA) and then performs enumeration and exfiltration"
        rule_name = "Login Without MFA, Enumeration, Exfiltration"
        severity = "High"

    events:
     // Detection with name "Console Login Without MFA"
        // The affected user is saved as $target_user
        $login_without_mfa.detection.detection.rule_name = /Console Login Without MFA/
        $target_user = $login_without_mfa.detection.detection.outcomes["target_user"]

     // Any detection with a rule name containing 'enumeration'
     // The user performing enumeration is the user that logged in without mfa
        $enumeration.detection.detection.rule_name = /enumeration/ nocase
        $enumeration.detection.detection.outcomes["principal_users"] = $target_user

     // Any detection with the mitre tactic 'TA0010' (Exfiltration)
     // The user performing exfiltration is the user that logged in without mfa
        $exfiltration.detection.detection.rule_labels["tactic"] = "TA0010"
        $exfiltration.detection.detection.outcomes["principal_users"] = $target_user

    match:
     // Looks for detections over a 24 hour period
        $target_user over 24h

    condition:
     // All 3 must occur for a single user
        $login_without_mfa and $enumeration and $exfiltration
}

Deteções hierárquicas

A vinculação de regras permite criar um sistema de detecção hierárquica. As regras de produtor de nível inferior identificam eventos suspeitos individuais. A saída é enviada para regras de vinculação ou consumidor de nível mais alto. Essas regras correlacionam essas informações com dados de outras fontes para detectar padrões de ataque em vários estágios que regras de evento único podem perder. O Google Security Operations oferece suporte a até três níveis de encadeamento, proporcionando um equilíbrio entre a sofisticação da detecção e a complexidade gerenciável.

Exemplo:

  • Nível 1: as regras do produtor detectam eventos suspeitos individuais. Por exemplo, falha de login, acesso de arquivo incomum.

  • Nível 2: as regras de encadeamento correlacionam as detecções do nível 1. Por exemplo, um login malsucedido seguido por acesso suspeito a arquivos.

  • Nível 3: regras de encadeamento de nível superior combinam detecções de nível 2 e outros dados para uma detecção ainda mais sofisticada. Por exemplo, uma detecção de nível 2 relacionada à autenticação e uma detecção de nível 2 relacionada à postura de segurança do dispositivo em uso.

Considerações ao mudar as regras de produtores

Quando uma regra de produtor é atualizada em uma cadeia de regras, uma nova versão da regra de produtor é criada. Isso se aplica a atualizações de lógica (condição, eventos, resultados) e de metadados (nome, descrição, gravidade). As regras do consumidor continuam operando usando a nova versão. É importante testar as regras do produtor atualizadas e as regras do consumidor downstream para garantir o comportamento desejado.