Reglas de detección predeterminadas

Lenguaje de reglas YARA-L

YARA-L es un lenguaje de reglas de detección desarrollado por Google. El propósito de YARA-L es pasar de las detecciones como consultas de datos a las controladas por eventos reales en cualquier investigación. YARA-L deriva del lenguaje YARA que se usa comúnmente en análisis de software malicioso. La L significa registros. YARA-L te permite aprovechar de toda la información proveniente de múltiples fuentes en las detecciones y correlacionar esos eventos en alertas prácticas. Para obtener más información, consulta la Descripción general de el lenguaje YARA-L 2.0.

Reglas de detección de muestra de Google Security Operations

Para acelerar tu adopción del motor de detección de Google Security Operations, hay un repositorio de GitHub con ejemplos reglas. Este repositorio contiene varias categorías diferentes de reglas de detección, entre las que se incluyen las siguientes:

  • CloudAudit de Google Cloud
  • Google Workspace
  • Advertencias informativas
  • Software malicioso
  • MITRE ATT&CK
  • Reglas principales del SOC
  • Eventos sospechosos

Cada categoría adopta un enfoque específico respecto de la forma en que ve las fuentes de datos y especifica qué eventos y declaraciones coincidentes usar.

Ejemplos de reglas y ajustes

La siguiente regla crea una variable de evento $e1 que se usa para hacer un seguimiento de tipo de evento. La variable del evento puede ser cualquier valor que tenga significado para los datos que se está evaluando. El campo de UDM que se evalúa en este evento es metadata.eventype, por lo que tiene sentido llamarlo e1. Las siguientes líneas busca casos específicos de coincidencias de expresiones regulares en e1. La condición que se crea una detección en Google Security Operations cada vez que demore el evento $e1 en un lugar específico. Para fines de ajuste, se proporciona una condición not para excluir ciertos rutas de acceso no maliciosas para el argumento de la línea de comandos. Más condiciones de not agregar a esta regla si identificas falsos positivos frecuentes que provienen de otras rutas de acceso a archivos conocidas.

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
}

Especifica más de una variable de evento

YARA-L te permite tener más de una variable de evento en una regla. En la En el siguiente ejemplo, la regla tiene los eventos $e1 y $e2. La condición establece que condición lógica que activa la detección.

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
}

Sección de resultados de las reglas

Usa la sección de resultados para establecer variables de conservación en la detección de reglas para proporcionan enriquecimiento para el consumo posterior. Por ejemplo, puedes agregar la gravedad la información de puntuación basada en los datos de los eventos que se analizan. El La siguiente detección examina dos eventos para atribuir el valor $hostname. Si con el valor de coincidencia de $hostnames durante un período de 5 minutos, una puntuación de gravedad es se aplicó. Cuando se usan períodos, solo el motor de detección examina los bloques de tiempo discretos que especifiques.

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

Conclusión

YARA-L es un lenguaje de detección flexible que te permite examinar las políticas y no solo mostrar una consulta de datos. La variable de evento se usa para Realizar un seguimiento de los valores de campo que se usan en la sección de condición de la regla Tú pueden usar un solo evento, varios eventos a lo largo del tiempo, correlacionar fuentes de una (por ejemplo, $hostname de distintas fuentes de datos) y hasta usar herramientas como expresiones regulares para proporcionar coincidencias. Es esencial ajustar las reglas a tu propio estilo en un entorno de producción, lo que puede hacerse especificando exclusiones dentro de la lógica. Tú también puedes usar listas de referencia para agrupar elementos y, luego, hacer referencia a ellos lista de la regla. No olvides que Google Security Operations no necesita de detección de alertas para recibir alertas. Puede realizar un seguimiento de las detecciones y alertar solo a aquellos que consideres más importantes en tu en un entorno de nube.