Migrer les alertes CBN vers les alertes de règles de détection YARA-L

Ce document explique comment migrer les alertes de normalisation basée sur la configuration (CBN) vers les alertes de détection YARA-L. En tant qu'analyste en sécurité, vous pouvez continuer à recevoir des notifications d'alertes provenant de systèmes tiers à l'aide de la page Alertes et IOC.

Migrer les alertes CBN vers le moteur de détection YARA-L

Pour migrer les alertes CBN, vous pouvez vous assurer que vos anciennes alertes CBN sont disponibles en tant qu'alertes de règles de détection à l'aide des options suivantes.

L'option de recherche UDM vous permet d'afficher les événements avec le alert_state défini dans les analyseurs :

security_result.alert_state = "ALERTING"

Dans les résultats de recherche UDM, vous pouvez explorer les champs suivants pour comprendre quelles sources génèrent des alertes CBN dans votre environnement :

  • Metadata > Vendor Name

  • Metadata > Product Name

Télécharger les alertes CBN par défaut à l'aide de l'API Tools et les examiner manuellement

L'approche précédente vous aide à trouver les alertes qui se sont déclenchées, mais ne couvre pas le scénario des alertes que vous n'avez jamais vues auparavant. Vous pouvez utiliser la méthode backstory.googleapis.com/v1/tools/cbn des analyseurs pour télécharger les CBN par défaut, sélectionnés ou tous, et examiner manuellement la logique de l'analyseur appliquée pour trouver les alertes basées sur is_alert ou alert_state.

Vous pouvez transférer les alertes CBN vers les alertes de règles du moteur de détection YARA-L que vous utilisez activement.

Migrer les alertes de l'antivirus Windows Defender qui s'affichaient auparavant dans Enterprise Insights en tant qu'alertes CBN

L'exemple suivant montre comment migrer les alertes antivirus Windows Defender qui étaient auparavant affichées dans Enterprise Insights en tant qu'alertes CBN.

  1. Recherchez un exemple d'alerte en utilisant l'une des approches expliquées précédemment.

  2. À l'aide du lecteur de journaux bruts / d'événements UDM, copiez certains champs UDM qui permettront une détection fiable. Consultez l'exemple ci-dessous.

    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. Créez une règle de moteur de détection 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
    }
    

L'alerte CBN semble utiliser un champ qui n'a pas été analysé dans UDM.

Vous pouvez résoudre rapidement ce problème à l'aide de l'option d'extensions de l'analyseur.

Par exemple, l'alerte CBN Corelight utilise le champ notice et n'émet une alerte que si la valeur est "true" :

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

Étant donné que cette valeur n'est pas normalisée dans UDM par défaut, vous pouvez utiliser une extension d'analyse Grok comme suit pour ajouter cette valeur en tant que champ UDM de type 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"
                }
            }
        }
    }
}

Vous pouvez ensuite l'utiliser dans une règle du moteur de détection YARA-L comme suit, en utilisant la fonction 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"
    )

Vous devez activer les règles créées pour les alertes. Pour en savoir plus, consultez Exécuter des règles sur des données en direct.