Migrer les alertes CBN vers les alertes liées à la règle 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 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'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 identifier les 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'analyseur backstory.googleapis.com/v1/tools/cbn pour télécharger les CBN par défaut, sélectionnés ou tous, et examiner manuellement la logique d'analyseur appliquée pour rechercher des 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. Trouvez un exemple d'alerte à l'aide de l'une des approches expliquées précédemment.

  2. À l'aide du visionneuse de journaux bruts/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 UDM

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

Par exemple, l'alerte CBN Corelight utilise le champ notice et n'envoie d'alertes conditionnelles 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.