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 de sécurité, ce document vous permet de 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 alertes CBN précédentes 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é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 des analyseurs 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ègles du moteur de détection YARA-L que vous utilisez activement.

Migrer les alertes de l'antivirus Windows Defender qui étaient auparavant affichées 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. 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 d'extension de l'analyseur vous permet de résoudre rapidement ce scénario.

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

Étant donné que cette valeur n'est pas normalisée dans la UDM par défaut, vous pouvez utiliser une extension d'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 du moteur de détection YARA-L comme suit, à 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 règles avec des données en temps réel.