Collecter les journaux IOC du MISP

Compatible avec:

Présentation

Cet analyseur extrait les IOC des données du MISP au format JSON ou CSV. Il analyse l'entrée, met en correspondance les champs avec la UDM, gère différents types d'IOC (adresses IP, domaines, hachages de fichiers, etc.) et enrichit les données avec le contexte de la CTI, comme la confiance et la gravité. L'analyseur exécute également une logique spécifique pour différents formats de données et gère les cas où des champs sont manquants ou non compatibles.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié au MISP.

Configurer un flux dans Google SecOps pour ingérer les journaux de renseignement sur les menaces du MISP

  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, Journaux du SIEM).
  4. Sélectionnez Webhook comme type de source.
  5. Sélectionnez Intelligence sur les menaces du référentiel MISP 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 Security Operations.
    • SECRET: clé secrète que vous avez générée pour authentifier le flux.

Activer l'envoi de requêtes HTTP vers une URL externe dans MISP

  1. Accédez à la machine sur laquelle MISP est déployé.
  2. Modifiez le fichier config.php situé dans app/Config/.
  3. Recherchez la configuration rest_client_enable_arbitrary_urls et définissez-la sur True. none 'rest_client_enable_arbitrary_urls' => true
  4. Enregistrez le fichier.

Configurer un webhook dans MISP pour Google SecOps

  1. Connectez-vous à la plate-forme MISP Threat Intelligence.
  2. Accédez à Administration > Workflows > List Modules (Administration > Workflows > Lister les modules).
  3. Sélectionnez Webhook.
  4. Accédez à la colonne Action, puis cliquez sur Activer.
  5. Accédez à Workflows > List triggers (Workflows > Liste des déclencheurs).
  6. Sélectionnez le déclencheur de webhook de votre choix.
  7. Sélectionnez Webhook dans la liste des modules.
  8. Glissez-déposez-la dans l'espace de travail.
  9. Connectez l'entrée à la sortie du déclencheur.
  10. Dans le module Webhook, renseignez les champs suivants :
    • URL: saisissez ENDPOINT_URL, suivi de API_KEY et de SECRET.
    • Méthode de requête HTTP: sélectionnez POST.
  11. Cliquez sur Enregistrer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
Attribute.category event.idm.entity.metadata.threat.category_details Mappé directement à partir de Attribute.category dans l'objet JSON imbriqué dans le champ "data". Utilisé dans le chemin d'analyse JSON.
Attribute.comment event.idm.entity.metadata.threat.summary Mappé directement à partir de Attribute.comment dans l'objet JSON imbriqué dans le champ "data". Utilisé dans le chemin d'analyse JSON.
Attribute.deleted event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Attribute.deleted et ajouté en tant que champ de détection avec la clé "Attribut supprimé". Utilisé dans le chemin d'analyse JSON.
Attribute.event_id event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Attribute.event_id et ajouté en tant que champ de détection avec la clé "Attribute event_id". Utilisé dans le chemin d'analyse JSON.
Attribute.first_seen event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Attribute.first_seen et ajouté en tant que champ de détection avec la clé "Attribute first_seen". Utilisé dans le chemin d'analyse JSON.
Attribute.id event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Attribute.id et ajouté en tant que champ de détection avec la clé "ID de l'attribut" ou "ID de l'attribut $$", en fonction du chemin d'analyse. Utilisé dans les chemins d'analyse CSV et JSON.
Attribute.timestamp event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Attribute.timestamp et ajouté en tant que champ de détection avec la clé "Code temporel de l'attribut". Utilisé dans le chemin d'analyse JSON.
Attribute.to_ids event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Attribute.to_ids et ajouté en tant que champ de détection avec la clé "Attribute to_ids". Utilisé dans le chemin d'analyse JSON.
Attribute.type log_type Mappé directement à partir de Attribute.type dans l'objet JSON imbriqué dans le champ "data". Utilisé comme champ provisoire, puis pour renseigner d'autres champs UDM. Utilisé dans le chemin d'analyse JSON.
Attribute.uuid event.idm.entity.metadata.product_entity_id Mappé directement à partir de Attribute.uuid dans l'objet JSON imbriqué dans le champ "data". Utilisé dans le chemin d'analyse JSON.
Attribute.value Plusieurs La valeur de ce champ permet de renseigner plusieurs champs UDM en fonction de Attribute.type (ou log_type si dérivé de Attribute.type) :
 : event.idm.entity.entity.hostname si type est "domain".
 - event.idm.entity.entity.file.md5 si type est "md5".
 - event.idm.entity.entity.file.sha1 si type est "sha1".
 : event.idm.entity.entity.file.sha256 si type est "sha256".
 : event.idm.entity.entity.resource.name si type est "mutex".
 : event.idm.entity.entity.registry.registry_key si type est "regkey".
 : event.idm.entity.entity.user.email_addresses si type est "threat-actor".
 : event.idm.entity.entity.url si type est "uri" ou "url".
 : event.idm.entity.entity.file.full_path si type est "nom de fichier".
 : analyse de l'adresse IP et du port si type est "ip-dst|port", "ip-dst" ou "ip-src". Utilisé dans le chemin d'analyse JSON.
column1 event.idm.entity.metadata.product_entity_id Mappé directement à partir de column1 dans le chemin d'analyse CSV.
column14 Fait partie de event.idm.entity.metadata.threat.description Associé à description pour former la description finale dans les métadonnées de la menace. Utilisé dans le chemin d'analyse CSV.
column16 event.idm.entity.metadata.threat.threat_feed_name, event.ioc.feed_name Mappé directement à partir de column16. Utilisé dans le chemin d'analyse CSV.
column18 event.idm.entity.metadata.threat.severity_details, event.ioc.raw_severity Mappé directement à partir de column18. Utilisé dans le chemin d'analyse CSV.
column21 Partie de event.idm.entity.metadata.threat.description, event.ioc.description Utilisé comme base de la description, puis concatenant avec event_info. Utilisé dans le chemin d'analyse CSV.
column3 Fait partie de event.ioc.categorization Mappé directement à partir de column3 et concatenated avec "IOCs" pour former la catégorisation finale. Utilisé dans le chemin d'analyse CSV.
column4 event.idm.entity.metadata.description Mappé directement à partir de column4. Utilisé dans le chemin d'analyse CSV.
column5 Plusieurs La valeur de ce champ est utilisée pour renseigner plusieurs champs UDM en fonction du champ column4 (qui est mappé sur type) :
 : event.idm.entity.entity.hostname si type est "domain".
 : analyse de l'adresse IP et du port si type est "ip-dst|port", "ip-dst" ou "ip-src".
 - event.idm.entity.entity.file.md5 si type est "md5".
 - event.idm.entity.entity.file.sha1 si type est "sha1".
 : event.idm.entity.entity.file.sha256 si type est "sha256".
 : event.idm.entity.entity.resource.name si type est "mutex".
 : event.idm.entity.entity.registry.registry_key si type est "regkey".
 : event.idm.entity.entity.user.email_addresses si type est "threat-actor".
 : event.idm.entity.entity.url si type est "uri" ou "url".
 : event.idm.entity.entity.file.full_path si type est "nom de fichier". Utilisé dans le chemin d'analyse CSV.
column6 event.idm.entity.metadata.threat.summary Mappé directement à partir de column6. Utilisé dans le chemin d'analyse CSV.
column8 event.ioc.active_timerange.start, event.idm.entity.metadata.interval.start_time Analysé en tant qu'horodatage UNIX. Utilisé dans le chemin d'analyse CSV.
date description event.idm.entity.metadata.threat.description Mappé directement à partir de description dans l'objet JSON imbriqué dans le champ "data". Utilisé dans le chemin d'analyse JSON.
event_creator_email event.idm.entity.entity.labels.value Mappé directement à partir de event_creator_email et ajouté en tant que libellé avec la clé "event_creator_email". Utilisé dans le chemin d'analyse JSON.
event_id Feed.publish event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Feed.publish et ajouté en tant que champ de détection avec la clé "Publication du flux". Utilisé dans le chemin d'analyse JSON.
first_seen event.ioc.active_timerange.start, event.idm.entity.metadata.interval.start_time Analyse comme un code temporel au format "aaaa-MM-jjThh:mm:ssZZ". Utilisé dans le chemin d'analyse JSON.
id info event.idm.entity.metadata.description Mappé directement à partir de info dans l'objet JSON imbriqué dans le champ "data". Utilisé dans le chemin d'analyse JSON.
last_seen event.ioc.active_timerange.end Analyse comme un code temporel au format "aaaa-MM-jjThh:mm:ssZZ". Utilisé dans le chemin d'analyse JSON.
Org.name event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Org.name et ajouté en tant que champ de détection avec la clé "Nom de l'organisation". Utilisé dans le chemin d'analyse JSON.
published event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de published et ajouté en tant que champ de détection avec la clé "published". Utilisé dans le chemin d'analyse JSON.
Tag.colour event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.colour et ajouté en tant que champ de détection avec la clé "couleur de la balise". Utilisé dans le chemin d'analyse JSON.
Tag.exportable event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.exportable et ajouté en tant que champ de détection avec la clé "tag exportable". Utilisé dans le chemin d'analyse JSON.
Tag.hide_tag event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.hide_tag et ajouté en tant que champ de détection avec la clé "tag hide_tag". Utilisé dans le chemin d'analyse JSON.
Tag.id event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.id et ajouté en tant que champ de détection avec la clé "tag id". Utilisé dans le chemin d'analyse JSON.
Tag.is_custom_galaxy event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.is_custom_galaxy et ajouté en tant que champ de détection avec la clé "tag is_custom_galaxy". Utilisé dans le chemin d'analyse JSON.
Tag.is_galaxy event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.is_galaxy et ajouté en tant que champ de détection avec la clé "tag is_galaxy". Utilisé dans le chemin d'analyse JSON.
Tag.isinherited event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.isinherited et ajouté en tant que champ de détection avec la clé "tag isinherited". Utilisé dans le chemin d'analyse JSON.
Tag.name event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.name et ajouté en tant que champ de détection avec la clé "nom de la balise". Utilisé dans le chemin d'analyse JSON.
Tag.numerical_value event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.numerical_value et ajouté en tant que champ de détection avec la clé "tag numerical_value". Utilisé dans le chemin d'analyse JSON.
Tag.user_id event.idm.entity.metadata.threat.detection_fields.value Mappé directement à partir de Tag.user_id et ajouté en tant que champ de détection avec la clé "tag user_id". Utilisé dans le chemin d'analyse JSON.
threat_level_id event.idm.entity.entity.labels.value Mappé directement à partir de threat_level_id et ajouté en tant que libellé avec la clé "threat_level_id". Utilisé dans le chemin d'analyse JSON.
timestamp event.idm.entity.metadata.collected_timestamp, event.idm.entity.metadata.interval.start_time Analysé en tant qu'horodatage UNIX. Utilisé dans le chemin d'analyse CSV.
uuid event.idm.entity.metadata.vendor_name Défini sur "MISP" par l'analyseur. Défini sur "MISP" par l'analyseur. Défini sur une valeur par défaut très éloignée dans le futur (2 534 023 00799 secondes après l'epoch). Déterminé par l'analyseur en fonction du champ type ou log_type. Valeurs possibles : "FILE", "DOMAIN_NAME", "IP_ADDRESS", "MUTEX", "RESOURCE" ou "USER". Peut être dérivé de Attribute.comment ou Attribute.value, en fonction de Attribute.type. Analyse à partir de Attribute.value ou column5 si le type est lié à l'adresse IP. Analyse à partir de Attribute.value ou column5 si le type est "ip-dst|port". Dérivé de column3 lors de l'analyse CSV ou de Attribute.category lors de l'analyse JSON. Dérivé de column21 et column14 lors de l'analyse CSV. Dérivé de column8 ou first_seen. Dérivé de last_seen. Dérivé de description à l'aide d'un modèle Grok. Dérivé de column16 ou défini sur "MISP". Dérivé de column18. Analyse à partir de Attribute.value ou column5 si le type est lié à l'adresse IP. Analyse à partir de Attribute.value ou column5 si le type est "ip-dst|port". Dérivé de Attribute.value ou column5 si le type est "domain". Dérivé du champ confidence, qui est extrait du champ description. Les valeurs possibles sont "HIGH_CONFIDENCE", "MEDIUM_CONFIDENCE", "LOW_CONFIDENCE" ou "UNKNOWN_CONFIDENCE". Mappé directement à partir du champ confidence, qui est extrait du champ description. Mappé directement à partir du champ threat_level, qui est dérivé de column18 dans le chemin d'analyse CSV. Mappé directement à partir du champ feed_name, qui est dérivé de column16 dans le chemin d'analyse CSV. Dérivé de column21 et column14 lors de l'analyse CSV. Dérivé de column6 lors de l'analyse CSV ou de Attribute.comment lors de l'analyse JSON. Plusieurs champs sont ajoutés en tant que champs de détection avec leurs clés correspondantes. Plusieurs champs sont ajoutés en tant qu'étiquettes avec leurs clés correspondantes. Copié à partir du champ timestamp de niveau supérieur dans le journal brut.

Modifications

2023-09-26

  • "published", "Feed.publish", "Org.name", "Attribute.id", "Attribute.event_id", "Attribute.to_ids", "Attribute.timestamp", "Attribute.comment", "Attribute.deleted", "Attribute.first_seen", tous les "tag.names" mappés sur "threat.detection_fields".

2023-08-17

  • Correction de bug :
  • Ajout d'une condition pour effectuer une opération "gsub", qui supprime les barres obliques supplémentaires, uniquement lorsque le journal n'est pas au format JSON.

2023-07-20

  • Correction de bug :
  • Modification de "metadata.entity_type" en "MUTEX" lorsque le journal est de type mutex.

2023-07-04

  • Analyseur nouvellement créé.