Migrer les alertes CBN vers les alertes liées à la règle de détection YARA-L

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

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

Pour migrer des alertes CBN, assurez-vous que vos précédentes alertes sont sont disponibles en tant qu'alertes de règle de détection à l'aide des options suivantes.

À l'aide de l'option de recherche UDM, vous pouvez afficher les événements avec le alert_state défini dans les analyseurs:

security_result.alert_state = "ALERTING"

À partir des résultats de recherche UDM, vous pouvez explorer les champs suivants pour comprendre Sources générant des alertes CBN dans votre environnement:

  • Metadata > Vendor Name

  • Metadata > Product Name

Téléchargez les alertes CBN par défaut à l'aide de l'API Tools et examinez-les manuellement

L'approche précédente vous aide à trouver les alertes qui ont été déclenchées, pour couvrir le scénario d'alertes que vous n'avez encore jamais vues. Vous pouvez utiliser la méthode d'analyse backstory.googleapis.com/v1/tools/cbn pour télécharger par défaut, sélectionner ou tous les CBN, et examiner manuellement la logique d'analyseur appliquée trouver les alertes basées sur is_alert ou alert_state.

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

Migrez les alertes antivirus Windows Defender qui étaient auparavant affichées dans Enterprise Insights en tant qu'alertes CBN

L'exemple suivant montre comment migrer des 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 journal brut ou de l'observateur d'événements UDM, copiez certains champs UDM qui fourniront 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 Security Operations 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 l'UDM

L'option "Extensions d'analyseur" vous permet de résoudre rapidement ce problème.

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

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

Comme cette valeur n'est pas normalisée en UDM par défaut, vous pouvez utiliser un analyseur 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 de moteur de détection YARA-L comme suit et à l'aide de 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 données actives de règle.