Regras de detecção padrão

Linguagem de regras YARA-L

YARA-L é uma linguagem de regras de detecção desenvolvida pelo Google. O objetivo da YARA-L é deixar de usar detecções apenas consultas de dados para se tornar um as investigações. A YARA-L é derivada da linguagem YARA comumente usada em de malware. O L significa registros. A YARA-L permite que você aproveite de todas as informações de várias fontes nas detecções e correlacionam esses eventos em alertas acionáveis. Para mais informações, consulte a Visão geral do a linguagem YARA-L 2.0.

Regras de detecção de amostras das Operações de segurança do Google

Para ajudar a acelerar sua adoção do Google Security Operations Detection Engine, há um repositório do GitHub com exemplos regras. Este repositório contém várias categorias diferentes de regras de detecção, incluindo as seguintes:

  • Auditoria do Google Cloud
  • Google Workspace
  • Avisos informativos
  • Malware
  • MITRE ATT&CK
  • As principais regras do SOC
  • Eventos suspeitos

Cada categoria adota uma abordagem específica na visualização das fontes de dados e especifica quais eventos e instruções correspondentes usar.

Exemplo de regras e ajuste

A regra a seguir cria uma variável de evento $e1 que é usada para rastrear o tipo de evento. A variável de evento pode ser qualquer valor que tenha significado para os dados que estão sendo avaliadas. O campo de UDM que está sendo avaliado neste evento é metadata.eventype. Portanto, faz sentido chamá-lo apenas de e1. As próximas linhas pesquisa ocorrências específicas de correspondências de expressões regulares no e1. A condição que cria uma detecção nas Operações de segurança do Google é toda vez que o evento $e1 realiza lugar Para fins de ajuste, é fornecida uma condição not para excluir determinados caminhos não maliciosos para o argumento de linha de comando. Outras condições not podem ser adicionados a essa regra se você identificar falsos positivos frequentes provenientes de outros caminhos de arquivo conhecidos.

rule suspicious_unusual_location_svchost_execution

{
 meta:
   author = "Google Cloud Security"
   description = "Windows 'svchost' executed from an unusual location"
   yara_version = "YL2.0"
   rule_version = "1.0"

 events:
   $e1.metadata.event_type = "PROCESS_LAUNCH"
   re.regex($e1.principal.process.command_line, `\bsvchost(\.exe)?\b`) nocase
   not re.regex($e1.principal.process.command_line, `\\Windows\\System32\\`) nocase

condition:
   $e1
}

Especifique mais de uma variável de evento

A YARA-L permite que você tenha mais de uma variável de evento em uma regra. Na exemplo a seguir, a regra tem os eventos $e1 e $e2. A condição afirma que condição lógica que aciona a detecção.

rule ExcludeZeroValues {
  meta:
    author = "noone@google.com"

  events:
    $e1.metadata.event_type = "NETWORK_DNS"
    $e1.principal.hostname = $hostname

    // $e1.principal.user.userid may be empty string.
    $e1.principal.user.userid != "Guest"

    $e2.metadata.event_type = "NETWORK_HTTP"
    $e2.principal.hostname = $hostname

    // $e2.target.asset_id cannot be empty string as explicitly specified.
    $e2.target.asset_id != ""

  match:
    // $hostname cannot be empty string.
    $hostname over 1h

  condition:
    $e1 and $e2
}

Seção de resultados das regras

Use a seção de resultados para definir as variáveis de retenção na detecção de regras para que oferecem enriquecimento para o consumo downstream. Por exemplo, é possível adicionar gravidade, informações de pontuação baseadas nos dados dos eventos que estão sendo analisados. A a detecção seguinte examina dois eventos para atribuir o valor $hostname. Se correspondência de valor $hostnames em um período de cinco minutos, uma pontuação de gravidade será aplicada. Ao usar períodos, o Google Security Operations Detection Engine examina os blocos discretos de tempo que você especifica.

rule OutcomeRuleMultiEvent {
    meta:
      author = "noone@google.com"
    events:
      $u.udm.principal.hostname = $hostname
      $asset_context.graph.entity.hostname = $hostname

      $severity = $asset_context.graph.entity.asset.vulnerabilities.severity

    match:
      $hostname over 5m

    outcome:
      $risk_score =
        max(
            100
          +   if($hostname = "my-hostname", 100, 50)
          +   if($severity = "HIGH", 10)
          +   if($severity = "MEDIUM", 5)
          +   if($severity = "LOW", 1)
        )

      $asset_id_list =
        array(
          if($u.principal.asset_id = "",
             "Empty asset id",
             $u.principal.asset_id
          )
        )

      $asset_id_distinct_list = array_distinct($u.principal.asset_id)

      $asset_id_count = count($u.principal.asset_id)

      $asset_id_distinct_count = count_distinct($u.principal.asset_id)

    condition:
      $u and $asset_context and $risk_score > 50 and not arrays.contains($asset_id_list, "id_1234")
}

Conclusão

YARA-L é uma linguagem de detecção flexível que permite examinar a segurança e não simplesmente retornar uma consulta de dados. A variável de evento é usada para acompanhe os valores de campos que estão sendo usados na seção de condição da regra. Você pode usar um único evento, vários eventos ao longo do tempo, correlacionar fontes para um um valor único (como $hostname de diferentes fontes de dados), e até mesmo use ferramentas como expressões regulares, para fornecer correspondências. É essencial ajustar as regras de acordo com suas próprias Isso pode ser feito ao especificar exclusões na lógica. Você também pode usar listas de referência para agrupar itens e fazer referência a esses lista na regra. Vale lembrar que as Operações de segurança do Google não precisam seja alertado. É possível acompanhar detecções de vários e alertar apenas sobre aqueles que você considerar mais importantes para seu de nuvem.