Collecter les journaux Tanium Threat Response

Compatible avec :

Ce document explique comment ingérer des journaux Tanium Threat Response dans Google Security Operations à l'aide de la fonctionnalité d'exportation AWS S3 native de Tanium Connect. Tanium Threat Response génère des alertes de détection des menaces, des résultats d'investigation et des données de réponse aux incidents au format JSON. Ces données peuvent être exportées directement vers S3 à l'aide de Tanium Connect, sans nécessiter de fonctions Lambda personnalisées. L'analyseur transforme les données JSON brutes de Tanium Threat Response en modèle de données unifié (UDM). Il tente d'abord d'analyser le message entrant au format JSON, gère les erreurs potentielles, puis extrait et mappe les champs pertinents à la structure UDM, y compris les détails sur l'hôte, l'utilisateur, le processus, l'activité réseau et les conclusions de sécurité concernés.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Tanium Core Platform 7.0 ou version ultérieure
  • Module Tanium Threat Response installé et configuré
  • Module Tanium Connect installé avec une licence valide
  • Tanium Direct Connect 1.9.30 ou version ultérieure pour les fonctionnalités d'investigation
  • Accès privilégié à la console Tanium avec droits d'administrateur
  • Accès privilégié à AWS (S3, IAM)

Configurer le compte de service Tanium Threat Response

  1. Connectez-vous à la console Tanium.
  2. Accédez à Modules > Réponse aux menaces.
  3. Cliquez sur Paramètres en haut à droite.
  4. Dans la section Compte de service, configurez les éléments suivants :
    • Utilisateur du compte de service : sélectionnez un utilisateur disposant des autorisations appropriées pour la réponse aux menaces.
    • Vérifiez que le compte dispose du rôle utilisateur "Connect".
    • Confirmez l'accès aux alertes et aux données d'investigation de la réponse aux menaces.
  5. Cliquez sur Enregistrer pour appliquer la configuration du compte de service.

Collecter les prérequis de Tanium Threat Response

  1. Connectez-vous à la console Tanium en tant qu'administrateur.
  2. Accédez à Administration > Autorisations > Utilisateurs.
  3. Créez ou identifiez un utilisateur de compte de service avec les rôles suivants :
    • Rôle Administrateur de la réponse aux menaces ou Utilisateur de la réponse aux menaces en lecture seule.
    • Privilège du rôle Connect User (Utilisateur Connect).
    • Accès aux groupes d'ordinateurs surveillés (recommandé : groupe Tous les ordinateurs).
    • Autorisation Lire les questions enregistrées pour les ensembles de contenus sur la réponse aux menaces.

Configurer un bucket AWS S3 et IAM pour Google SecOps

  1. Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur : Créer un bucket.
  2. Enregistrez le Nom et la Région du bucket pour référence ultérieure (par exemple, tanium-threat-response-logs).
  3. Créez un utilisateur en suivant ce guide : Créer un utilisateur IAM.
  4. Sélectionnez l'utilisateur créé.
  5. Sélectionnez l'onglet Informations d'identification de sécurité.
  6. Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
  7. Sélectionnez Service tiers comme Cas d'utilisation.
  8. Cliquez sur Suivant.
  9. Facultatif : ajoutez un tag de description.
  10. Cliquez sur Créer une clé d'accès.
  11. Cliquez sur Télécharger le fichier CSV pour enregistrer la clé d'accès et la clé d'accès secrète pour une utilisation ultérieure.
  12. Cliquez sur OK.
  13. Sélectionnez l'onglet Autorisations.
  14. Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
  15. Sélectionnez Ajouter des autorisations.
  16. Sélectionnez Joindre directement des règles.
  17. Recherchez et sélectionnez la règle AmazonS3FullAccess.
  18. Cliquez sur Suivant.
  19. Cliquez sur Ajouter des autorisations.

Configurer la destination Tanium Connect AWS S3

  1. Connectez-vous à la console Tanium.
  2. Accédez à Modules > Connect.
  3. Cliquez sur Créer une connexion.
  4. Fournissez les informations de configuration suivantes :
    • Nom : saisissez un nom descriptif (par exemple, Threat Response Alerts to S3 for SecOps).
    • Description : description facultative (par exemple, Export threat detection alerts and investigation findings to AWS S3 for Google SecOps ingestion).
    • Activer : sélectionnez cette option pour activer la connexion et l'exécuter selon la programmation.
  5. Cliquez sur Suivant.

Configurer la source de connexion

  1. Dans la section Source, fournissez les informations de configuration suivantes :
    • Type de source : sélectionnez Question enregistrée.
    • Question enregistrée : sélectionnez l'une des questions enregistrées suivantes liées à la réponse aux menaces :
      • Réponse aux menaces > Alertes pour les alertes de détection des menaces.
      • Résultats de l'analyse de la réponse aux menaces pour les résultats de l'analyse.
      • Réponse aux menaces : correspondances Intel pour les correspondances de renseignements sur les menaces.
      • Réponse aux menaces : activité des points de terminaison pour les activités suspectes des points de terminaison.
      • Réponse aux menaces : connexions réseau pour les menaces basées sur le réseau.
    • Groupe d'ordinateurs : sélectionnez Tous les ordinateurs ou des groupes d'ordinateurs spécifiques à surveiller.
    • Intervalle d'actualisation : définissez l'intervalle approprié pour la collecte de données (par exemple, 10 minutes pour les alertes de menace).
  2. Cliquez sur Suivant.

Configurer la destination AWS S3

  1. Dans la section Destination, fournissez les informations de configuration suivantes :
    • Type de destination : sélectionnez AWS S3.
    • Nom de la destination : saisissez un nom unique (par exemple, Google SecOps ThreatResponse S3 Destination).
    • Clé d'accès AWS : saisissez la clé d'accès AWS du fichier CSV téléchargé lors de l'étape de configuration d'AWS S3.
    • Clé d'accès secrète AWS : saisissez la clé d'accès secrète AWS à partir du fichier CSV téléchargé lors de l'étape de configuration d'AWS S3.
    • Nom du bucket : saisissez le nom de votre bucket S3 (par exemple, tanium-threat-response-logs).
    • Région : sélectionnez la région AWS où se trouve votre bucket S3.
    • Préfixe de clé : saisissez un préfixe pour les objets S3 (par exemple, tanium/threat-response/).
  2. Cliquez sur Suivant.

Configurer des filtres

  1. Dans la section Filtres, configurez les options de filtrage des données :
    • Envoyer uniquement les nouveaux éléments : sélectionnez cette option pour n'envoyer que les nouvelles alertes de menace depuis la dernière exportation.
    • Filtres de colonne : ajoutez des filtres basés sur des attributs d'alerte spécifiques si nécessaire (par exemple, filtrez par gravité de l'alerte, type de menace ou état de l'investigation).
  2. Cliquez sur Suivant.

Mettre en forme les données pour AWS S3

  1. Dans la section Format, configurez le format des données :
    • Format : sélectionnez JSON.
    • Options :
      • Inclure les en-têtes : décochez cette option pour éviter d'inclure les en-têtes dans la sortie JSON.
      • Inclure les cellules vides : sélectionnez cette option selon vos préférences.
    • Options avancées :
      • Nommage des fichiers : utilisez le nommage par défaut basé sur le code temporel.
      • Compression : sélectionnez Gzip pour réduire les coûts de stockage et le temps de transfert.
  2. Cliquez sur Suivant.

Planifier la connexion

  1. Dans la section Programmation, configurez la programmation de l'exportation :
    • Activer la planification : sélectionnez cette option pour activer les exportations automatiques planifiées.
    • Type de programmation : sélectionnez Récurrente.
    • Fréquence : sélectionnez Toutes les 10 minutes pour recevoir des alertes en temps opportun sur les menaces.
    • Heure de début : définissez une heure de début appropriée pour la première exportation.
  2. Cliquez sur Suivant.

Enregistrer et valider la connexion

  1. Vérifiez la configuration de la connexion sur l'écran récapitulatif.
  2. Cliquez sur Save (Enregistrer) pour créer la connexion.
  3. Cliquez sur Tester la connexion pour vérifier la configuration.
  4. Si le test réussit, cliquez sur Exécuter maintenant pour effectuer une première exportation.
  5. Surveillez l'état de la connexion sur la page Présentation de Connect.

Configurer un flux dans Google SecOps pour ingérer les journaux Tanium Threat Response

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur + Ajouter un flux.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Tanium Threat Response logs).
  4. Sélectionnez Amazon S3 V2 comme type de source.
  5. Sélectionnez Tanium Threat Response comme type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • URI S3 : s3://tanium-threat-response-logs/tanium/threat-response/
    • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
    • Âge maximal des fichiers : incluez les fichiers modifiés au cours des derniers jours. La valeur par défaut est de 180 jours.
    • ID de clé d'accès : clé d'accès utilisateur ayant accès au bucket S3.
    • Clé d'accès secrète : clé secrète de l'utilisateur ayant accès au bucket S3.
    • 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 de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Table de mappage UDM

Champ du journal Mappage UDM Logique
ID de l'alerte security_result.rule_instance La valeur de ce champ est extraite du champ "ID d'alerte" du journal brut.
Adresse IP de l'ordinateur principal.ip La valeur de ce champ est extraite du champ "Adresse IP de l'ordinateur" du journal brut.
Adresse IP de l'ordinateur target.ip La valeur de ce champ est extraite du champ "Adresse IP de l'ordinateur" du journal brut.
Nom de l'ordinateur principal.hostname La valeur de ce champ est extraite du champ "Nom de l'ordinateur" du journal brut.
Nom de l'ordinateur target.hostname La valeur de ce champ est extraite du champ "Nom de l'ordinateur" du journal brut.
id target.resource.attribute.labels La valeur de ce champ est extraite du champ "id" du journal brut. La clé est codée en dur sur "id".
ID Intel security_result.rule_id La valeur de ce champ est extraite du champ "Intel Id" du journal brut.
Étiquettes Intel security_result.description La valeur de ce champ est extraite du champ "Libellés Intel" du journal brut.
Nom Intel security_result.summary La valeur de ce champ est extraite du champ "Nom de l'info" du journal brut.
Nom Intel security_result.threat_name La valeur de ce champ est extraite du champ "Nom de l'info" du journal brut.
Type d'informations security_result.rule_type La valeur de ce champ est extraite du champ "Type d'informations" du journal brut.
MatchDetails.finding.system_info.bits principal.asset.platform_software.bits La valeur de ce champ est extraite du champ "MatchDetails.finding.system_info.bits" du journal brut.
MatchDetails.finding.system_info.os principal.asset.platform_software.platform_version La valeur de ce champ est extraite du champ "MatchDetails.finding.system_info.os" du journal brut.
MatchDetails.finding.system_info.patch_level principal.asset.platform_software.platform_patch_level La valeur de ce champ est extraite du champ "MatchDetails.finding.system_info.patch_level" du journal brut.
MatchDetails.finding.system_info.platform principal.asset.platform_software.platform La valeur de ce champ est extraite du champ "MatchDetails.finding.system_info.platform" du journal brut.
MatchDetails.match.contexts.0.event.registrySet.keyPath target.registry.registry_key La valeur de ce champ est extraite du champ "MatchDetails.match.contexts.0.event.registrySet.keyPath" du journal brut.
MatchDetails.match.contexts.0.event.registrySet.valueName target.registry.registry_value_name La valeur de ce champ est extraite du champ "MatchDetails.match.contexts.0.event.registrySet.valueName" du journal brut.
MatchDetails.match.properties.args security_result.about.process.command_line La valeur de ce champ est extraite du champ "MatchDetails.match.properties.args" du journal brut.
MatchDetails.match.properties.file.fullpath target.process.file.full_path La valeur de ce champ est extraite du champ "MatchDetails.match.properties.file.fullpath" du journal brut.
MatchDetails.match.properties.file.md5 target.process.file.md5 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.file.md5" du journal brut.
MatchDetails.match.properties.file.sha1 target.process.file.sha1 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.file.sha1" du journal brut.
MatchDetails.match.properties.file.sha256 target.process.file.sha256 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.file.sha256" du journal brut.
MatchDetails.match.properties.fullpath target.process.file.full_path La valeur de ce champ est extraite du champ "MatchDetails.match.properties.fullpath" du journal brut.
MatchDetails.match.properties.local_port principal.port La valeur de ce champ est extraite du champ "MatchDetails.match.properties.local_port" du journal brut.
MatchDetails.match.properties.md5 target.process.file.md5 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.md5" du journal brut.
MatchDetails.match.properties.parent.args security_result.about.process.command_line La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.args" du journal brut.
MatchDetails.match.properties.parent.file.fullpath target.process.parent_process.file.full_path La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.file.fullpath" du journal brut.
MatchDetails.match.properties.parent.file.md5 target.process.parent_process.file.md5 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.file.md5" du journal brut.
MatchDetails.match.properties.parent.parent.file.fullpath target.process.parent_process.parent_process.file.full_path La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.file.fullpath" du journal brut.
MatchDetails.match.properties.parent.parent.file.md5 target.process.parent_process.parent_process.file.md5 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.file.md5" du journal brut.
MatchDetails.match.properties.parent.parent.parent.file.fullpath target.process.parent_process.parent_process.parent_process.file.full_path La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.file.fullpath" du journal brut.
MatchDetails.match.properties.parent.parent.parent.file.md5 target.process.parent_process.parent_process.parent_process.file.md5 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.file.md5" du journal brut.
MatchDetails.match.properties.parent.parent.parent.parent.file.fullpath target.process.parent_process.parent_process.parent_process.parent_process.file.full_path La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.parent.file.fullpath" du journal brut.
MatchDetails.match.properties.parent.parent.parent.parent.file.md5 target.process.parent_process.parent_process.parent_process.parent_process.file.md5 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.parent.file.md5" du journal brut.
MatchDetails.match.properties.parent.parent.parent.parent.parent.file.fullpath target.process.parent_process.parent_process.parent_process.parent_process.parent_process.file.full_path La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.parent.parent.file.fullpath" du journal brut.
MatchDetails.match.properties.parent.parent.parent.parent.parent.file.md5 target.process.parent_process.parent_process.parent_process.parent_process.parent_process.file.md5 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.parent.parent.file.md5" du journal brut.
MatchDetails.match.properties.parent.pid target.process.parent_process.pid La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.pid" du journal brut.
MatchDetails.match.properties.parent.parent.pid target.process.parent_process.parent_process.pid La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.pid" du journal brut.
MatchDetails.match.properties.parent.parent.parent.pid target.process.parent_process.parent_process.parent_process.pid La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.pid" du journal brut.
MatchDetails.match.properties.parent.parent.parent.parent.pid target.process.parent_process.parent_process.parent_process.parent_process.pid La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.parent.pid" du journal brut.
MatchDetails.match.properties.parent.parent.parent.parent.parent.pid target.process.parent_process.parent_process.parent_process.parent_process.parent_process.pid La valeur de ce champ est extraite du champ "MatchDetails.match.properties.parent.parent.parent.parent.parent.pid" du journal brut.
MatchDetails.match.properties.pid target.process.pid La valeur de ce champ est extraite du champ "MatchDetails.match.properties.pid" du journal brut.
MatchDetails.match.properties.protocol network.ip_protocol La valeur de ce champ est extraite du champ "MatchDetails.match.properties.protocol" du journal brut.
MatchDetails.match.properties.remote_ip target.ip La valeur de ce champ est extraite du champ "MatchDetails.match.properties.remote_ip" du journal brut.
MatchDetails.match.properties.remote_port target.port La valeur de ce champ est extraite du champ "MatchDetails.match.properties.remote_port" du journal brut.
MatchDetails.match.properties.sha1 target.process.file.sha1 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.sha1" du journal brut.
MatchDetails.match.properties.sha256 target.process.file.sha256 La valeur de ce champ est extraite du champ "MatchDetails.match.properties.sha256" du journal brut.
MatchDetails.match.properties.user target.administrative_domain Le nom de domaine est extrait du champ "MatchDetails.match.properties.user" du journal brut en recherchant une barre oblique inverse (""). Les caractères précédant la barre oblique sont considérés comme le nom de domaine.
MatchDetails.match.properties.user target.user.userid Le nom d'utilisateur est extrait du champ "MatchDetails.match.properties.user" du journal brut en recherchant une barre oblique inverse (""). Les caractères situés après la barre oblique inverse sont considérés comme le nom d'utilisateur.
Techniques MITRE security_result.threat_id La valeur de ce champ est extraite du champ "Techniques MITRE" du journal brut.
params security_result.detection_fields La valeur de ce champ est extraite du champ "params" du journal brut. La clé est codée en dur sur "params_" concaténé avec l'index du paramètre.
Horodatage metadata.event_timestamp La valeur de ce champ est extraite du champ "Timestamp" (Code temporel) du journal brut.
N/A is_alert Ce champ est codé en dur sur "true" si le champ "Adresse IP de l'ordinateur" du journal brut n'est pas vide.
N/A metadata.log_type Ce champ est codé en dur sur "TANIUM_THREAT_RESPONSE".
N/A metadata.product_event_type Ce champ est codé en dur sur "Tanium Signal".
N/A metadata.product_name Ce champ est codé en dur sur "Réponse aux menaces".
N/A metadata.vendor_name Ce champ est codé en dur sur "Tanium".
N/A network.http.method Ce champ est codé en dur sur "POST" si la valeur du champ "method" dans le journal brut est "submit".

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