Regole di rilevamento predefinite

Supportato in:

linguaggio delle regole YARA-L

YARA-L è un linguaggio di regole di rilevamento sviluppato da Google. Lo scopo di YARA-L è quella di abbandonare i rilevamenti come semplici query di dati a quelli le indagini del caso. YARA-L deriva dal linguaggio YARA comunemente utilizzato nell'analisi del malware. L'L sta per log. YARA-L consente di sfruttare di tutte le informazioni provenienti da più fonti all'interno dei rilevamenti e correlare questi eventi in avvisi strategici. Per ulteriori informazioni, consulta la Panoramica delle lingua YARA-L 2.0.

Regole di rilevamento di esempio di Google Security Operations

Per accelerare l'adozione di Google Security Operations Detection Engine, c'è un repository GitHub con file . Questo repository contiene diverse categorie di regole di rilevamento, tra cui:

  • CloudAudit di Google Cloud
  • Google Workspace
  • Avvisi informativi
  • Malware
  • MITRE ATT&CK
  • Regole SOC prime
  • Eventi sospetti

Ogni categoria adotta un approccio specifico per quanto riguarda la visualizzazione delle origini dati e specifica gli eventi e le istruzioni corrispondenti da utilizzare.

Regole di esempio e ottimizzazione

La seguente regola crea una variabile evento $e1 che viene utilizzata per monitorare tipo di evento. La variabile evento può essere qualsiasi valore che abbia un significato per i dati in fase di valutazione. Il campo UDM che viene valutato in questo evento è metadata.eventype, quindi ha senso chiamarlo semplicemente e1. Le righe successive cerca occorrenze specifiche di corrispondenze di espressioni regolari all'interno di e1. La condizione che crea un rilevamento in Google Security Operations si verifica ogni volta che si verifica l'evento $e1. A scopo di ottimizzazione, viene fornita una condizione not per escludere determinati percorsi non dannosi per l'argomento della riga di comando. Altre not condizioni potrebbero essere aggiunti a questa regola se identifichi frequenti falsi positivi provenienti e altri percorsi di file noti.

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
}

Specifica più di una variabile evento

YARA-L ti consente di avere più di una variabile evento in una regola. Nella nell'esempio seguente, la regola ha eventi $e1 e $e2. La condizione indica condizione logica che attiva il rilevamento.

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
}

Sezione dei risultati delle regole

Utilizza la sezione Risultati per impostare le variabili di conservazione all'interno del rilevamento delle regole per forniscono un arricchimento per il consumo downstream. Ad esempio, puoi aggiungere informazioni sul punteggio della gravità che si basano sui dati degli eventi analizzati. La Il seguente rilevamento esamina due eventi per attribuire il valore $hostname. Se il valore $hostnames corrisponde per un periodo di 5 minuti, viene applicato un punteggio di gravità. Quando utilizzi periodi di tempo, il motore di rilevamento di Google Security Operations esamina solo i blocchi di tempo discreti specificati.

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")
}

Conclusione

YARA-L è un linguaggio di rilevamento flessibile che ti consente di esaminare gli eventi di sicurezza e non solo restituire una query sui dati. La variabile evento viene utilizzata Monitorare i valori dei campi utilizzati nella sezione delle condizioni della regola. Puoi utilizzare un singolo evento, più eventi nel tempo, origini correlate per un singolo valore (ad esempio $hostname da origini dati diverse) e persino utilizzare strumenti come le espressioni regolari per fornire corrispondenze. È essenziale adattare le regole e questo può essere fatto specificando esclusioni all'interno della logica. Puoi anche utilizzare gli elenchi di riferimento per raggruppare gli elementi e poi fare riferimento a questo elenco nella regola. Ricorda che Google Security Operations non ha bisogno di ogni il rilevamento automatico su cui attivare gli avvisi. Puoi tenere traccia dei rilevamenti per più e avvisi solo su quelli che ritieni siano più critici completamente gestito di Google Cloud.