Collecter les journaux d'IOC Anomali ThreatStream

Compatible avec :

Ce document explique comment ingérer des journaux d'IOC Anomali ThreatStream dans Google Security Operations à l'aide d'une API. L'analyseur transforme les données d'IOC au format JSON ou CEF en modèle de données unifié (UDM). Le code tente d'abord d'analyser l'entrée en tant que JSON. Si cela échoue, il recherche le préfixe "CEF:" pour la traiter en tant que message CEF, en extrayant les attributs d'IOC et en les mappant aux champs UDM.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Accès privilégié à un locataire Enterprise Anomali ThreatStream

Créer un utilisateur API dédié

  1. Connectez-vous à ThreatStream. Passez à l'ancienne interface utilisateur si vous utilisez Anomali Enterprise.
  2. Accédez à Administration > Utilisateurs.
  3. Cliquez sur + Ajouter un utilisateur (ou sélectionnez un compte de service existant).
  4. Renseignez les informations suivantes :
    • Adresse e-mail : adresse e-mail du compte de service (par exemple, anomali_ioc_secops@example.com).
    • Source d'authentification : sélectionnez Standard.
    • Type d'utilisateur : sélectionnez Utilisateur de l'API.
    • Rôle : sélectionnez Lecture seule (suffisant pour lister les indicateurs).
  5. Cliquez sur Enregistrer.
  6. Un e-mail d'activation est envoyé au nouveau compte. Finalisez l'activation.

Générer une clé API

  1. Connectez-vous à ThreatStream en tant qu'utilisateur de l'API.
  2. Accédez à l'avatar de votre profil > Mes clés API.
  3. Cliquez sur Générer une clé.
  4. Saisissez une Description (par exemple,Google SecOps export).
  5. Cliquez sur Enregistrer.
  6. Copiez et enregistrez la valeur de la clé affichée sous Clé dans un emplacement sécurisé. La valeur de clé ne s'affiche plus.
  1. Accédez à Administration > Paramètres de l'organisation.
  2. Sélectionnez l'onglet Liste d'adresses IP autorisées.
  3. Cliquez sur + Ajouter.
  4. Saisissez l'adresse de votre locataire Google SecOps, puis cliquez sur Enregistrer.

Configurer des flux

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Anomali TS IOC).
  4. Sélectionnez API tierce comme Type de source.
  5. Sélectionnez le type de journal Anomali.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • Nom d'utilisateur : saisissez le nom d'utilisateur de l'API que vous venez de créer.
    • Secret : saisissez la clé API générée et copiée précédemment.
    • Espace de noms de l'élément : espace de noms de l'élément.
    • Libellés d'ingestion : libellé appliqué aux événements de ce flux.
  8. Cliquez sur Suivant.
  9. Vérifiez la configuration du flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Table de mappage UDM

Champ du journal Mappage UDM Logique
obj.asn entity.administrative_domain Le champ "asn" du journal brut est mappé au champ "administrative_domain" de l'objet d'entité UDM.
obj.confidence ioc.confidence_score Le champ "confidence" (confiance) du journal brut est mappé au champ "confidence_score" (score de confiance) de l'objet UDM ioc.
obj.country entity.location.country_or_region Le champ "pays" du journal brut est mappé sur le champ "country_or_region" de l'objet d'entité UDM.
obj.created_ts entity.metadata.creation_timestamp Le champ "created_ts" du journal brut est mappé sur le champ "creation_timestamp" de l'objet d'entité UDM.
obj.created_ts ioc.active_timerange.start Le champ "created_ts" du journal brut est mappé au champ "start" de l'objet UDM ioc.
obj.created_ts entity.metadata.threat.first_discovered_time Le champ "created_ts" du journal brut est mappé sur le champ "first_discovered_time" de l'objet menace UDM.
obj.expiration_ts entity.metadata.interval.end_time Le champ "expiration_ts" du journal brut est mappé sur le champ "end_time" de l'objet d'entité UDM.
obj.expiration_ts ioc.active_timerange.end Le champ "expiration_ts" du journal brut est mappé sur le champ "end" de l'objet UDM ioc.
obj.id entity.metadata.product_entity_id Le champ "id" du journal brut est mappé au champ "product_entity_id" de l'objet d'entité UDM.
obj.ip entity.entity.ip Le champ "ip" du journal brut est fusionné avec le champ "ip" de l'objet d'entité UDM.
obj.ip ioc.ip_and_ports.ip_address Le champ "ip" du journal brut est mappé sur le champ "ip_address" de l'objet UDM ioc.
obj.itype ioc.categorization Le champ "itype" du journal brut est mappé sur le champ "categorization" de l'objet UDM ioc.
obj.itype entity.metadata.threat.category_details Le champ "itype" du journal brut est fusionné avec le champ "category_details" de l'objet de menace UDM.
obj.latitude entity.entity.location.region_latitude Le champ de latitude du journal brut est mappé sur le champ "region_latitude" de l'objet d'entité UDM.
obj.longitude entity.entity.location.region_longitude Le champ de longitude du journal brut est mappé sur le champ region_longitude de l'objet d'entité UDM.
obj.meta.detail2 ioc.description Le champ "detail2" du journal brut est mappé au champ de description de l'objet UDM ioc.
obj.meta.detail2 entity.metadata.threat.description Le champ "detail2" du journal brut est mappé au champ de description de l'objet de menace UDM.
obj.meta.severity ioc.raw_severity Le champ "severity" (gravité) du journal brut est mappé sur le champ "raw_severity" de l'objet IOC UDM.
obj.meta.severity entity.metadata.threat.severity Le champ "gravité" du journal brut est mappé sur le champ "gravité" de l'objet menace UDM. Si le niveau de gravité est "très élevé", il est associé à "CRITIQUE".
obj.meta.severity entity.metadata.threat.severity_details Le champ "severity" (gravité) du journal brut est mappé sur le champ "severity_details" (détails de la gravité) de l'objet menace UDM.
obj.modified_ts entity.metadata.threat.last_updated_time Le champ "modified_ts" du journal brut est mappé sur le champ "last_updated_time" de l'objet de menace UDM.
obj.org entity.entity.administrative_domain Le champ "org" du journal brut est mappé au champ "administrative_domain" de l'objet d'entité UDM.
obj.resource_uri entity.metadata.threat.url_back_to_product Le champ "resource_uri" du journal brut est mappé sur le champ "url_back_to_product" de l'objet menace UDM.
obj.retina_confidence entity.metadata.threat.confidence_score Le champ "retina_confidence" du journal brut est mappé sur le champ "confidence_score" de l'objet menace UDM.
obj.source ioc.feed_name Le champ source du journal brut est mappé sur le champ feed_name de l'objet UDM ioc.
obj.source entity.metadata.threat.threat_name Le champ source du journal brut est mappé sur le champ "threat_name" de l'objet menace UDM.
obj.status entity.metadata.threat.threat_status Le champ d'état du journal brut est mappé au champ threat_status de l'objet menace UDM.
obj.subtype entity.entity.file.sha1 Le champ de sous-type du journal brut est mappé au champ sha1 de l'objet d'entité UDM si le sous-type est "SHA1".
obj.subtype entity.entity.file.sha256 Le champ "subtype" du journal brut est mappé sur le champ "sha256" de l'objet d'entité UDM si le sous-type est "SHA256".
obj.tags entity.metadata.source_labels Le champ "tags" du journal brut est mappé sur le champ "source_labels" de l'objet d'entité UDM.
obj.tags.id entity.metadata.source_labels Le champ "id" du tableau "tags" du journal brut est mappé au champ "source_labels" de l'objet d'entité UDM.
obj.tags.name entity.metadata.source_labels Le champ "name" du tableau de tags du journal brut est mappé au champ "source_labels" de l'objet d'entité UDM.
obj.threatscore entity.metadata.threat.risk_score Le champ "threatscore" du journal brut est mappé sur le champ "risk_score" de l'objet de menace UDM.
obj.threat_type entity.metadata.threat.detection_fields Le champ "threat_type" du journal brut est mappé sur le champ "detection_fields" de l'objet menace UDM.
obj.type entity.entity.file.md5 Le champ "type" du journal brut est mappé sur le champ "md5" de l'objet d'entité UDM si le type est "md5".
obj.type entity.entity.hostname Le champ "type" du journal brut est mappé sur le champ "hostname" de l'objet d'entité UDM si le type est "domain".
obj.type entity.entity.ip Le champ "type" du journal brut est fusionné avec le champ "ip" de l'objet d'entité UDM si le type est "ip" ou "ipv6".
obj.type entity.entity.url Le champ "type" du journal brut est mappé sur le champ "url" de l'objet d'entité UDM si le type est "url" ou "string".
obj.type entity.entity.user.email_addresses Le champ "type" du journal brut est fusionné avec le champ "email_addresses" de l'objet d'entité UDM si le type est "email".
obj.type entity.metadata.entity_type Le champ "type" du journal brut est mappé sur le champ "entity_type" de l'objet d'entité UDM. Si le type est "ip" ou "ipv6", il est mappé sur "IP_ADDRESS". Si le type est "domain", il est mappé sur "DOMAIN_NAME". Si le type est "md5" ou si le champ itype contient "md5", il est mappé sur "FILE". Si le type est "url" ou "string", il est mappé sur "URL". Si le type est "email", il est mappé sur "USER". Sinon, il est mappé sur "UNKNOWN_ENTITYTYPE".
obj.uuid entity.additional.fields Le champ "uuid" du journal brut est mappé sur le champ "fields" de l'objet d'entité UDM.
obj.value entity.entity.ip Le champ "value" du journal brut est fusionné avec le champ "ip" de l'objet d'entité UDM si le champ "type" est défini sur "ip" et que le champ "ip" est vide.
obj.value entity.entity.ip Le champ "value" du journal brut est fusionné avec le champ "ip" de l'objet d'entité UDM si le champ "ip_field_not_exists" est défini sur "true" et que le champ "value" est une adresse IP.
obj.value entity.entity.url Le champ "value" du journal brut est mappé sur le champ "url" de l'objet d'entité UDM si le champ "type" est défini sur "url" ou "string".
obj.value ioc.domain_and_ports.domain Le champ "value" du journal brut est mappé sur le champ "domain" de l'objet UDM ioc si le champ "type" n'est pas "ip".
obj.value ioc.ip_and_ports.ip_address Le champ "value" du journal brut est mappé au champ "ip_address" de l'objet IoC UDM si le champ "type" est défini sur "ip" et que le champ "ip" est vide.
cn1 ioc.confidence_score Le champ "cn1" du journal brut est mappé au champ "confidence_score" de l'objet UDM ioc.
cn2 entity.metadata.threat.rule_id Le champ "cn2" du journal brut est mappé sur le champ "rule_id" de l'objet menace UDM.
cs1 ioc.raw_severity Le champ "cs1" du journal brut est mappé au champ "raw_severity" de l'objet UDM ioc.
cs2 entity.metadata.threat.threat_name Le champ "cs2" du journal brut est mappé sur le champ "threat_name" de l'objet menace UDM.
cs3 entity.metadata.threat.threat_status Le champ cs3 du journal brut est mappé au champ threat_status de l'objet menace UDM. Si le champ cs3 est défini sur "active", il est mappé sur "ACTIVE". Si le champ cs3 est "cleared", il est mappé sur "CLEARED". Si le champ cs3 est "falsePositive" ou "falsepos", il est mappé sur "FALSE_POSITIVE". Si le champ cs3 est défini sur "threat_status_unspecified", il est mappé sur "THREAT_STATUS_UNSPECIFIED".
cs4 entity.entity.administrative_domain Le champ cs4 du journal brut est mappé au champ administrative_domain de l'objet d'entité UDM.
cs5 ioc.description Le champ cs5 du journal brut est mappé au champ de description de l'objet UDM ioc.
cs5 entity.metadata.threat.detection_fields Le champ "cs5" du journal brut est mappé sur le champ "detection_fields" de l'objet menace UDM.
cs5 entity.metadata.threat.description Le champ cs5 du journal brut est mappé au champ de description de l'objet menace UDM.
cs6 entity.metadata.threat.category_details Le champ cs6 du journal brut est fusionné avec le champ category_details de l'objet menace UDM.
device_product entity.metadata.product_name Le champ "device_product" du journal brut est mappé au champ "product_name" de l'objet d'entité UDM.
device_vendor entity.metadata.vendor_name Le champ "device_vendor" du journal brut est mappé au champ "vendor_name" de l'objet d'entité UDM.
device_version entity.metadata.product_version Le champ "device_version" du journal brut est mappé sur le champ "product_version" de l'objet d'entité UDM.
msg entity.metadata.threat.summary Le champ "msg" du journal brut est mappé sur le champ "summary" de l'objet de menace UDM.
shost entity.entity.hostname Le champ "shost" du journal brut est mappé au champ "hostname" de l'objet d'entité UDM.
shost entity.entity.url Le champ "shost" du journal brut est mappé sur le champ "url" de l'objet d'entité UDM.
shost ioc.domain_and_ports.domain Le champ "shost" du journal brut est mappé sur le champ "domain" de l'objet UDM ioc.
src entity.entity.ip Le champ "src" du journal brut est fusionné avec le champ "ip" de l'objet d'entité UDM.
src ioc.ip_and_ports.ip_address Le champ "src" du journal brut est mappé sur le champ "ip_address" de l'objet UDM ioc.
entity.metadata.threat.confidence HIGH_CONFIDENCE Le champ "confidence" de l'objet de menace UDM est défini sur "HIGH_CONFIDENCE" si le champ "confidence_score" est supérieur ou égal à 75.
entity.metadata.threat.confidence LOW_CONFIDENCE Le champ "confidence" de l'objet de menace UDM est défini sur "LOW_CONFIDENCE" (faible niveau de confiance) si le champ "confidence_score" est inférieur ou égal à 50.
entity.metadata.threat.confidence MEDIUM_CONFIDENCE Le champ "confidence" de l'objet de menace UDM est défini sur "MEDIUM_CONFIDENCE" si le champ "confidence_score" est supérieur à 50 et inférieur ou égal à 74.
entity.metadata.threat.confidence UNKNOWN_CONFIDENCE Le champ "confidence" de l'objet de menace UDM est défini sur "UNKNOWN_CONFIDENCE" si le champ "confidence_score" n'est pas un entier valide.
entity.metadata.vendor_name ANOMALI_IOC Le champ "vendor_name" de l'objet d'entité UDM est défini sur "ANOMALI_IOC".

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.