Collecter les journaux IOC CrowdStrike

Compatible avec:

Présentation

Cet analyseur extrait les données CrowdStrike Falcon Intelligence à partir de messages au format JSON. Il transforme différents champs d'indicateurs de compromission dans le format UDM, en gérant différents types d'indicateurs (domaines, adresses IP, URL, hachages, etc.) et les métadonnées associées, y compris les relations, les libellés et les informations sur les menaces. L'analyseur effectue également la validation des données et le gestion des exceptions. Il donne la priorité à l'analyse JSON, puis utilise la correspondance grok si nécessaire et supprime les messages mal formés.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer des autorisations appropriées pour accéder à la plate-forme CrowdStrike Falcon Intelligence.

Configurer un flux dans Google SecOps pour ingérer les journaux d'IOC CrowdStrike

  1. Accédez à Paramètres du SIEM > Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, CrowdStrike IOC Logs).
  4. Sélectionnez Webhook comme type de source.
  5. Sélectionnez Crowdstrike IOC comme Type de journal.
  6. Cliquez sur Suivant.
  7. Facultatif: spécifiez des valeurs pour les paramètres d'entrée suivants :
    • Délimiteur de fractionnement: délimiteur utilisé pour séparer les lignes de journal, par exemple \n.
    • Espace de noms des éléments: espace de noms des éléments.
    • Libellés d'ingestion: libellé appliqué aux événements de ce flux.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux dans l'écran Finaliser, puis cliquez sur Envoyer.
  10. Cliquez sur Générer une clé secrète pour générer une clé secrète permettant d'authentifier ce flux.
  11. Copiez et stockez la clé secrète. Vous ne pourrez plus afficher cette clé secrète. Si nécessaire, vous pouvez générer une nouvelle clé secrète, mais cette action rend l'ancienne clé secrète obsolète.
  12. Dans l'onglet Détails, copiez l'URL du point de terminaison du flux dans le champ Informations sur le point de terminaison. Vous devez spécifier cette URL de point de terminaison dans votre application cliente.
  13. Cliquez sur OK.

Créer une clé API pour le flux webhook

  1. Accédez à la console Google Cloud > Identifiants.

    Accéder à "Identifiants"

  2. Cliquez sur Créer des identifiants, puis sélectionnez Clé API.

  3. Limitez l'accès de la clé API à l'API Google Security Operations.

Spécifier l'URL du point de terminaison

  1. Dans votre application cliente, spécifiez l'URL du point de terminaison HTTPS fournie dans le flux de webhook.
  2. Activez l'authentification en spécifiant la clé API et la clé secrète dans l'en-tête personnalisé au format suivant:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recommandation: Spécifiez la clé API en tant qu'en-tête plutôt que dans l'URL.

  3. Si votre client webhook n'est pas compatible avec les en-têtes personnalisés, vous pouvez spécifier la clé API et la clé secrète à l'aide de paramètres de requête au format suivant:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Remplacez les éléments suivants :

  • ENDPOINT_URL: URL du point de terminaison du flux.
  • API_KEY: clé API permettant de s'authentifier auprès de Google SecOps.
  • SECRET: clé secrète que vous avez générée pour authentifier le flux.

Créer un webhook CrowdStrike

  1. Connectez-vous à la console CrowdStrike Falcon Intelligence.
  2. Accédez au CrowdStrike Store.
  3. Recherchez Webhook.
  4. Activez l'intégration du webhook.
  5. Cliquez sur Configurer.
  6. Sélectionnez Ajouter une configuration.
  7. Assurez-vous que seuls les IOC sont envoyés au webhook.
  8. Collez l'URL du point de terminaison dans le champ URL du webhook de l'écran Configurer le webhook.
  9. Cliquez sur Enregistrer.
  10. CrowdStrike envoie désormais les événements générés au flux Google SecOps spécifié.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
_marker event.idm.entity.entity.labels.value La valeur du champ _marker est mappée directement.
actors event.idm.entity.entity.group.group_display_name Si la première valeur de actors contient "panda", "bear", "kitten", "chollima", "jackal" ou "Spider", elle est mappée et event.idm.entity.entity.location.country_or_region est dérivée (respectivement Chine, Russie, Iran, Corée du Nord, groupes d'activistes et groupes criminels). Les autres valeurs de actors sont ajoutées en tant que libellés avec la clé "acteur" dans event.idm.entity.entity.group.attribute.labels.
actors event.idm.entity.entity.location.country_or_region Dérivée en fonction de la première valeur de actors (voir ci-dessus).
deleted event.idm.entity.metadata.threat.action Si deleted est défini sur "false", l'action est "BLOCK". Si deleted est défini sur "true", l'action est "ALLOW".
deleted event.idm.entity.metadata.threat.action_details La valeur de deleted est mappée directement.
domain_types event.idm.entity.metadata.threat.detection_fields.value Toutes les valeurs de domain_types sont concatenatées avec des virgules et mappées avec la clé "domain_types".
id event.idm.entity.metadata.product_entity_id La valeur de id est mappée directement.
indicator event.idm.entity.entity.hostname Mappé si type est "domain".
indicator event.idm.entity.entity.file.md5 Mappé si type est "hash_md5" et que la valeur est un hachage MD5 valide.
indicator event.idm.entity.entity.file.sha1 Mappé si type est "hash_sha1" et que la valeur est un hachage SHA1 valide.
indicator event.idm.entity.entity.file.sha256 Mappé si type est "hash_sha256" et que la valeur est un hachage SHA256 valide.
indicator event.idm.entity.entity.ip Mappé si type est "ip_address" et que la valeur est une adresse IP valide.
indicator event.ioc.ip_and_ports.ip_address Mappé si type est "ip_address" et que la valeur est une adresse IP valide.
indicator event.idm.entity.entity.url Mappé si type est "url".
indicator event.idm.entity.entity.resource.name Mappé si type est "device_name" ou "mutex_name".
indicator event.idm.entity.entity.user.email_addresses Mappé si type est "email_address" et que la valeur est une adresse e-mail valide.
indicator event.idm.entity.metadata.threat.detection_fields.value Mappé avec différentes clés en fonction du champ type (par exemple, "campaign_id", "binary_string", etc.). Si le type n'est pas géré spécifiquement, il est mappé avec type comme clé.
indicator event.ioc.domain_and_ports.domain Mappé si type n'est pas "ip_address" ou "port".
ip_address_types event.idm.entity.metadata.threat.detection_fields.value Toutes les valeurs de ip_address_types sont concaténées avec des virgules et mappées avec la clé "ip_address_types".
kill_chains event.idm.entity.metadata.threat.category La catégorie est dérivée des valeurs de kill_chains. "reconnaissance", "weaponization" ou "actionOnObjectives" génèrent "NETWORK_MALICIOUS". "delivery" ou "exploitation" génèrent "EXPLOIT". "installation" ou "c3" génèrent "SOFTWARE_MALICIOUS". "c2" renvoie "NETWORK_COMMAND_AND_CONTROL". Les autres valeurs renvoient "UNKNOWN_CATEGORY". Vous pouvez attribuer plusieurs catégories.
kill_chains event.idm.entity.metadata.threat.category_details Les valeurs brutes de kill_chains sont mappées directement. Plusieurs valeurs sont possibles.
labels event.idm.entity.metadata.threat.detection_fields Le champ "name" de chaque libellé est divisé en label_key et label_value par le caractère "/". Si label_key est "Malware" ou "ThreatType", label_value est mappé sur threat_name. Sinon, label_key et label_value sont mappés en tant que paire clé-valeur. "created_on" et "last_valid_on" dans chaque étiquette sont également mappés en tant que paires clé-valeur.
labels event.idm.entity.metadata.threat.threat_name Dérivé du champ labels (voir ci-dessus).
last_updated event.idm.entity.metadata.threat.detection_fields.value La valeur de last_updated est mappée avec la clé "last_updated".
malicious_confidence event.idm.entity.metadata.threat.confidence Si malicious_confidence est défini sur "high" (élevé), le niveau de confiance est "HIGH_CONFIDENCE". Si la valeur est "low", le niveau de confiance est "LOW_CONFIDENCE". Si la valeur est "medium", la confiance est "MEDIUM_CONFIDENCE". Sinon, la valeur est "UNKNOWN_CONFIDENCE".
malicious_confidence event.idm.entity.metadata.threat.confidence_details La valeur de malicious_confidence est mappée directement.
malicious_confidence event.ioc.confidence_score La valeur de malicious_confidence est mappée directement.
malware_families event.idm.entity.metadata.threat.threat_name Toutes les valeurs de malware_families sont concatenatées avec des virgules et mappées.
published_date event.idm.entity.metadata.creation_timestamp La valeur de published_date est convertie en code temporel.
published_date event.idm.entity.metadata.interval.start_time La valeur de published_date est convertie en code temporel.
published_date event.ioc.active_timerange.start La valeur de published_date est convertie en code temporel.
relations event.idm.entity.metadata.threat.about Les champs de chaque relation sont mappés à l'objet about en fonction de leur type. "created_date", "last_valid_date" et "id" sont ajoutés en tant qu'étiquettes.
reports event.idm.entity.metadata.threat.about.labels.value Toutes les valeurs de reports sont concatenatées avec des virgules et mappées avec la clé "report_ids".
threat_types event.idm.entity.metadata.threat.threat_name Toutes les valeurs de threat_types sont concatenatées avec des virgules avec l'threat_name existante dérivée de malware_families.
type event.ioc.categorization La valeur de type est mappée directement.
(Logique de l'analyseur) event.idm.entity.metadata.collected_timestamp La valeur de create_time du journal brut est utilisée.
(Logique de l'analyseur) event.idm.entity.metadata.interval.end_time Code en dur sur un code temporel très éloigné (253402300799).
(Logique de l'analyseur) event.idm.entity.metadata.product_name Code dur "Falcon".
(Logique de l'analyseur) event.idm.entity.metadata.vendor_name Code codé en dur sur "CrowdStrike".
(Logique de l'analyseur) event.idm.entity.metadata.entity_type Dérivé en fonction du champ type et de la présence d'autres champs. Consultez le code de l'analyseur pour connaître la logique spécifique.
(Logique de l'analyseur) event.ioc.feed_name Code dur "CrowdStrike Falcon Intelligence".
(Logique de l'analyseur) event.timestamp La valeur de create_time du journal brut est utilisée.

Modifications

2023-08-23

  • Modification du mappage du champ malicious_confidence.

2023-05-04

  • L'analyseur crowdstrike_ioc est défini par défaut.