Migra las alertas de CBN a alertas de reglas de detección de YARA-L

En este documento, se proporcionan detalles sobre cómo puedes migrar las alertas de la normalización basada en la configuración (CBN) a las alertas de detección de YARA-L. Como analista de seguridad, con la ayuda de este documento, puedes seguir recibiendo notificaciones de alertas de sistemas externos a través de la página Alertas y IOC.

Migra las alertas de CBN al motor de detección de YARA-L

Para migrar las alertas de CBN, puedes asegurarte de que tus alertas de CBN anteriores estén disponibles como alertas de reglas de detección con las siguientes opciones.

Con la opción de búsqueda del UDM, puedes ver los eventos con el objeto alert_state establecido en los analizadores:

security_result.alert_state = "ALERTING"

En los resultados de la búsqueda del UDM, puedes explorar los siguientes campos para comprender qué fuentes generan alertas de CBN en tu entorno:

  • Metadata > Vendor Name

  • Metadata > Product Name

Descarga las alertas predeterminadas de CBN con la API de Tools y revísalas de forma manual

El enfoque anterior te ayuda a encontrar las alertas que se activaron, pero no abarca la situación de las alertas que no viste antes. Puedes usar el método backstory.googleapis.com/v1/tools/cbn de los analizadores para descargar todos los CBN, o bien seleccionar los predeterminados, y revisar manualmente la lógica del analizador aplicada para encontrar alertas basadas en is_alert o alert_state.

Puedes transferir las alertas de CBN a las alertas de reglas del motor de detección de YARA-L que usas de forma activa.

Migrar las alertas del antivirus de Windows Defender que antes se mostraban en Enterprise Insights como alertas de CBN

En el siguiente ejemplo, se muestra cómo puedes migrar las alertas del antivirus de Windows Defender que antes se mostraban en Enterprise Insights como alertas de CBN.

  1. Busca un ejemplo de alerta con cualquiera de los enfoques explicados anteriormente.

  2. Con el visor de registros sin procesar o de eventos de UDM, copia los campos de UDM seleccionados que proporcionarán una detección confiable. Consulta el siguiente ejemplo.

    metadata.vendor_name = "Microsoft"
    metadata.product_name = "Windows Defender AV"
    metadata.product_event_type = "MALWAREPROTECTION_STATE_MALWARE_DETECTED"
    principal.asset.hostname = "client02.example.local"
    security_result.action = "BLOCK"
    security_result.severity = "MEDIUM"
    
  3. Crea una regla nueva del motor de detección de YARA-L.

    rule windows_defender_av_monitored_events {
        meta:
        author = "Chronicle"
        description = "Migration of CBN alerts to Google SecOps YARA-L detection engine rule alert."
        // Severity is set at the Outcome level via security_result.severity
        severity = "INFORMATIONAL"
        priority = "INFORMATIONAL"
    events:
            $windows_defender_av.metadata.vendor_name = "Microsoft"
            $windows_defender_av.metadata.product_name = "Windows Defender AV"
            $windows_defender_av.metadata.product_event_type = "MALWAREPROTECTION_STATE_MALWARE_DETECTED"
            $windows_defender_av.principal.asset.hostname = $host
            // optionally tune to only detection on ALLOW, i.e., failure to BLOCK
            //$windows_defender_av.security_result.action = "ALLOW"
            // optionally tune on severity of detection
            //$windows_defender_av.security_result.severity != "LOW"
    outcome:
            $risk_score = max(
            if ($windows_defender_av.security_result.severity = "UNKNOWN_SEVERITY", 0) +
            if ($windows_defender_av.security_result.severity = "LOW", 25) +
            if ($windows_defender_av.security_result.severity = "MEDIUM", 50) +
            if ($windows_defender_av.security_result.severity = "HIGH", 75) +
            if ($windows_defender_av.security_result.severity = "CRITICAL", 100)
            )
    $severity = array_distinct($windows_defender_av.security_result.severity)
        condition:
        $windows_defender_av
    }
    

Al parecer, la alerta de CBN usa un campo que no se analizó en UDM.

Con la opción de extensiones del analizador, puedes abordar rápidamente esta situación.

Por ejemplo, la alerta de CBN de Corelight usa el campo notice y genera alertas de forma condicional solo si es verdadero:

if [notice] == "true" {
  mutate {
    replace => {
      "is_significant" => "true"
      "is_alert"       => "true"
    }
  }
}

Como este valor no se normaliza en el UDM de forma predeterminada, puedes usar una extensión del analizador Grok de la siguiente manera para agregar ese valor como un campo del UDM de tipo Additional:

filter {
    mutate {
        replace => {
            "notice" => ""
        }
    }
    grok {
        match     => { "message" => [ "(?P<message>\{.*\})$" ] }
        on_error  => "_grok_not_syslog"
        overwrite => [ "message" ]
    }
    json {
        on_error       => "not_json" 
        source         => "message"
        array_function => "split_columns"
    }
    if ![not_json] {
        if [notice] != "" {
            mutate {
                convert => {
                    "notice" => "string"
                }
            }
            mutate {
                replace => {
                    "additional_notice.key" => "notice"
                    "additional_notice.value.string_value" => "%{notice}"
                }
            }
            mutate {
                merge => {
                    "event1.idm.read_only_udm.additional.fields" => "additional_notice"
                }
            }
            mutate {
                merge => {
                    "@output" => "event1"
                }
            }
        }
    }
}

Luego, puedes usarlo en una regla del motor de detección de YARA-L de la siguiente manera y con la función Maps:

events:
    // Corelight : Weird Log
    (
        $corelight.metadata.vendor_name = "Corelight" and
        $corelight.metadata.product_name = "Zeek" and
        // this requires a custom parser extension to extract notice
        $corelight.metadata.product_event_type = "weird" and
        $corelight.additional.fields["notice"] = "true"
    )

Debes habilitar y activar las reglas creadas para las alertas. Para obtener más información, consulta Ejecuta datos en vivo de la regla.