VMware Carbon Black Enterprise EDR

Version de l'intégration : 6.0

Cas d'utilisation des produits

  1. Effectuez des actions d'investigation : obtenez des données à partir de CB Enterprise EDR dans le cadre d'une analyse des alertes dans Google Security Operations.
  2. Effectuer des actions de configuration : configurer les flux/listes de surveillance CB Enterprise EDR à partir de Google SecOps.

Autorisation du produit

Concepts requis pour accéder aux API Carbon Black Enterprise EDR (ThreatHunter) :

  1. Nom d'hôte du service
  2. Clés API
  3. RBAC
  4. Clés d'organisation

Noms d'hôte du service

Il existe deux noms d'hôte Carbon Black Cloud :

  • https://defense-<environment>.conferdeploy.net/
  • https://api-<environment>.conferdeploy.net/

De plus, nous disposons de plusieurs environnements, tels que (liste non exhaustive) :

  • prod02
  • prod04
  • prod05

Pour l'API Carbon Black Enterprise EDR (ThreatHunter), les noms d'hôte suivants seront utilisés : https://defense-<environment>.conferdeploy.net/

Clés API

Les API et services Carbon Black Enterprise EDR (ThreatHunter) sont authentifiés à l'aide de clés API. Les utilisateurs peuvent afficher les paramètres des clés API dans la console Carbon Black Cloud sous Settings > API Keys (Paramètres > Clés API).

Les clés API comportent deux parties :

  • Clé secrète de l'API (anciennement clé API).
  • ID d'API (anciennement ID de connecteur).

L'authentification est transmise à l'API via l'en-tête HTTP X-Auth-Token.

  1. Pour générer l'en-tête approprié, concaténez la clé secrète de l'API avec l'ID de l'API en les séparant par une barre oblique.
  2. Par exemple, si la clé secrète de l'API est ABCD et l'ID de l'API est 1234, l'en-tête HTTP X-Auth-Token correspondant sera : X-Auth-Token: ABCD/1234

Toutes les requêtes API doivent être authentifiées à l'aide d'une clé secrète et d'un ID API. Les requêtes non authentifiées renvoient une erreur HTTP 401.

Obtenir une clé secrète et un ID d'API

  1. Connectez-vous à votre organisation Carbon Black Cloud.
  2. Accédez à Paramètres > Clés API.
  3. Cliquez sur Ajouter une clé API.
  4. Configurer le nom, le niveau d'accès, etc.
  5. Obtenez votre paire clé secrète et ID d'API.

Cela permet à un administrateur d'organisation de définir une clé API et d'accéder à la clé secrète et à l'ID de l'API qui seront nécessaires pour authentifier la requête API. De plus, pour des raisons de sécurité, les administrateurs peuvent limiter l'utilisation de cette clé API à un ensemble spécifique d'adresses IP.

Niveaux d'accès aux clés API

Actuellement, quatre niveaux d'accès principaux aux clés API sont disponibles sur la page "Clés API". Chaque niveau d'accès fournit différents niveaux d'accès aux routes d'API :

  1. Niveau d'accès à la clé personnalisée : fournit une autorisation personnalisable.

    • Les clés API personnalisées sont le résultat de nos efforts en matière de contrôle des accès basé sur les rôles (RBAC).
    • Permet aux clients d'appliquer des contrôles d'accès et de créer des clés API avec le minimum de privilèges.
    • Des rôles utilisateur ou des niveaux d'accès peuvent être attribués aux clés API personnalisées.
  2. Niveau d'accès avec clé API : permet d'accéder à toutes les API, à l'exception de l'API Notifications et de l'API Live Response.

  3. Niveau d'accès aux clés SIEM : permet d'accéder à l'API Notifications.

  4. Niveau d'accès à la clé de réponse en direct : donne accès à toutes les API disponibles pour (1) ci-dessus, ainsi qu'à l'API de réponse en direct.

Corrélation entre le service Carbon Black Enterprise EDR (ThreatHunter) et le niveau d'accès à l'API L'API de la plate-forme est en gras.

Catégorie d'API/de service Niveau(x) d'accès autorisé(s) pour la clé API
PSC /appservices/* Personnalisé (avec les autorisations appropriées)
CB-TH /threathunter/* API personnalisée (avec les autorisations appropriées)
CB-LO /livequery/* Personnalisé (avec les autorisations appropriées)
CB-D /integrationServices/v3/notification/ SIEM
CB-D /integrationServices/* Réponse APILive

Clés d'organisation

En plus des clés API, de nombreuses API ou services Carbon Black Cloud nécessitent une clé org_key dans le chemin d'accès à la requête API. Cela permet d'aider les clients qui gèrent plusieurs organisations.

Vous trouverez votre org_key dans la console Carbon Black Cloud, sous Settings > API Keys.

Configurer l'accès aux API pour l'intégration de Carbon Black Enterprise EDR (ThreatHunter) à Google SecOps

Pour configurer l'accès à l'API pour l'intégration Google SecOps de Carbon Black Enterprise EDR (ThreatHunter), procédez comme suit :

  1. Connectez-vous à la console Carbon Black Cloud, puis accédez à Settings > API Access.
  2. Sur la page "Accès à l'API", accédez à "Niveaux d'accès".
  3. Sur la page "Niveaux d'accès", cliquez sur + Ajouter un niveau d'accès.
  4. Dans la fenêtre qui s'ouvre, indiquez un nom et une description pour le nouveau niveau d'accès, puis sélectionnez les autorisations comme indiqué sur la capture d'écran ci-dessous :

    Liste des autorisations requises

  5. Revenez à l'onglet "Accès à l'API".

  6. Cliquez sur + Ajouter une clé API pour créer une clé API.

  7. Dans l'onglet qui s'ouvre, remplissez le champ obligatoire et sélectionnez le niveau d'accès que vous avez configuré à l'étape 4 :

    Modifier les paramètres de la clé API

  8. Une fois que vous avez cliqué sur Enregistrer, l'ID et la clé secrète de l'API s'affichent. Veuillez enregistrer ces valeurs, car elles ne seront affichées qu'une seule fois.

  9. Une fois l'ID et la clé secrète de l'API enregistrés, l'accès à l'API dans Carbon Black Enterprise EDR (ThreatHunter) est terminé.

Configurer l'intégration de VMware Carbon Black Enterprise EDR (Threat Hunter) dans Google SecOps

Pour obtenir des instructions détaillées sur la configuration d'une intégration dans Google SecOps, consultez Configurer des intégrations.

Paramètres d'intégration

Utilisez les paramètres suivants pour configurer l'intégration :

Nom à afficher du paramètre Type Valeur par défaut Obligatoire Description
Nom de l'instance Chaîne N/A Non Nom de l'instance pour laquelle vous souhaitez configurer l'intégration.
Description Chaîne N/A Non Description de l'instance.
Racine de l'API Chaîne N/A Oui URL racine de l'API VMware Carbon Black Cloud.
Clé de l'organisation Chaîne N/A Oui Clé d'organisation VMware Carbon Black Cloud.
ID de l'API Chaîne N/A Oui ID de l'API VMware Carbon Black Cloud (ID de clé API personnalisée).
Clé secrète de l'API Chaîne N/A Oui Clé secrète de l'API VMware Carbon Black Cloud (clé secrète de l'API personnalisée).
Exécuter à distance Case à cocher N/A Non Cochez le champ pour exécuter l'intégration configurée à distance. Une fois la case cochée, l'option permettant de sélectionner l'utilisateur distant (agent) s'affiche.

Actions

Ping

Description

Testez la connectivité à VMware Carbon Black Enterprise EDR avec les paramètres fournis sur la page de configuration de l'intégration dans l'onglet Google Security Operations Marketplace.

Paramètres

N/A

Exemples de cas d'utilisation de playbooks

Cette action permet de tester la connectivité sur la page de configuration de l'intégration, dans l'onglet "Google Security Operations Marketplace". Elle peut être exécutée manuellement et n'est pas utilisée dans les playbooks.

Exécuter sur

Cette action ne s'exécute pas sur les entités et ne comporte pas de paramètres d'entrée obligatoires.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Mur des cas
Type de résultat Valeur/Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • Si l'opération réussit, le message "Successfully connected to the VMware Carbon Black Enterprise EDR server with the provided connection parameters!" (Connexion au serveur VMware Carbon Black Enterprise EDR réussie avec les paramètres de connexion fournis) s'affiche.

L'action doit échouer et arrêter l'exécution d'un playbook :

  • Si l'opération échoue, affichez le message "Échec de la connexion au serveur VMware Carbon Black Enterprise EDR ! Error is {0}".format(exception.stacktrace)
Général

Description

Recherchez des informations sur l'activité des processus sur l'hôte avec le capteur CB en fonction des paramètres de recherche fournis. L'action accepte les entités Host Google SecOps.

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Obligatoire Description
Query Chaîne N/A Non Requête à exécuter dans la recherche de processus. Par exemple, process_name:svchost.exe pour effectuer une recherche par nom de processus, ou process_hash:9520a99e77d6196d0d09833146424113 pour effectuer une recherche par hachage de processus.
Période Integer 4 Non Spécifiez une période en heures pour laquelle récupérer les alertes.
Limite d'enregistrements Integer 20 Oui Spécifiez le nombre d'enregistrements pouvant être renvoyés par l'action.
Trier par Chaîne N/A Non Spécifiez un paramètre pour trier les données.
Ordre de tri LDD ASC Non Ordre de tri.

Exemples de cas d'utilisation de playbooks

Recherchez les événements causés par des processus en fonction des paramètres de recherche fournis.

Lors de l'analyse d'une alerte liée à un hôte spécifique géré par la plate-forme CB, l'utilisateur souhaite examiner l'hôte et rechercher des événements spécifiques causés par des processus en cours d'exécution en fonction des paramètres de recherche fournis. Les utilisateurs peuvent exécuter cette action pour rechercher des menaces et identifier de manière proactive les processus ou événements suspects sur l'hôte en question.

Exécuter sur

Cette action s'exécute sur l'entité hôte.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
{
"results": [
    {
        "alert_id": [
            "null/WSD2CQMT"
        ],
        "backend_timestamp": "2020-03-04T21:42:45.080Z",
        "device_id": 3078944,
        "device_name": "qaam\\manticorewin864",
        "device_policy_id": 6525,
        "device_timestamp": "2020-03-04T21:39:33.180Z",
        "enriched": true,
        "enriched_event_type": "CREATE_PROCESS",
        "event_description": "The script \"<share><link hash=\"74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9\">C:\\programdata\\wmirepair.bat</link></share>\" invoked the application \"<share><link hash=\"7eadc73f8aa77148ca289d5ce5c2632f3a157d313079583454c0421bb97d5646\">C:\\windows\\syswow64\\regsvr32.exe</link></share>\". ",
        "event_id": "ecc6954f5e6011eaa0de89cc027330db",
        "event_type": "childproc",
        "ingress_time": 1583358118950,
        "legacy": true,
        "org_id": "7DESJ9GN",
        "parent_guid": "7DESJ9GN-002efb20-00001604-00000000-1d5f26cab1067fe",
        "parent_pid": 5636,
        "process_guid": "7DESJ9GN-002efb20-00000d58-00000000-1d5f26d6615c568",
        "process_hash": [
            "629ae017d28848b68485bd2aeede9129",
            "74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9"
        ],
        "process_name": "c:\\programdata\\wmirepair.bat",
        "process_pid": [
            3416
        ],
        "process_username": [
            "NT AUTHORITY\\SYSTEM"
        ]
    },
    ...
]  }
Mur des cas
Type de résultat Valeur / Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • Si l'opération réussit : affichez "Found process information for the following entities:\n {0}".format( entity.Identifiers list)
  • Si is_success=False pour toutes les entités fournies, affichez "Aucun résultat de recherche n'a été renvoyé."
  • Si is_success=False pour certaines des entités fournies, car aucun résultat n'a été trouvé pour les paramètres de recherche spécifiés, affichez "L'action n'a pas pu trouver d'informations sur le processus pour les entités suivantes :\n {0}".format(liste des identifiants de l'entité)
  • Si is_success=False pour certaines des entités fournies en raison d'une erreur lors de l'exécution de la recherche (par exemple, un délai d'attente dépassé), affichez "Échec de l'obtention des résultats en raison d'erreurs lors de l'exécution de la recherche pour les entités suivantes :/n {0}".format(liste des identifiants de l'entité)

L'action doit échouer et arrêter l'exécution d'un playbook :

  • Si une erreur fatale se produit (par exemple, des identifiants incorrects, une absence de connexion au serveur, etc.), affichez "Échec de l'exécution de l'action ! Error is {0}".format(exception.stacktrace)
Les deux
Table

Nom de la table : traiter les résultats de recherche pour {entityIdentifier}

Colonnes :

  • ID de l'événement (event_id)
  • Type d'événement ("enriched_event_type")
  • Nom du processus (process_name)
  • GUID du processus (process_guid)
  • PID du processus (process_pid)
  • GUID du processus parent (parent_guid)
  • PID du processus parent (parent_pid)
  • Hachage du processus (process_hash)
  • Exécuter le processus en tant que ("process_username")
  • Heure de création ("device_timestamp")
  • Description de l'événement (event_description)
  • Adresse IPv4 locale (event_network_local_ipv4)
  • Protocole réseau (event_network_protocol)
  • Adresse IPv4 distante (event_network_remote_ipv4)
  • Port distant (event_network_remote_port)
Entité

Obtenir les événements associés à un processus par GUID de processus

Description

Obtenez des événements associés à des processus spécifiques en fonction des informations de VMware Carbon Black Enterprise EDR. Cette action peut fournir des résultats plus détaillés sur l'activité d'un processus spécifique que l'action "Recherche de processus". Remarque : Pour que l'action fonctionne, l'artefact traité par Google SecOps et transmis à l'action doit être de type "process guid".

Paramètres

Nom à afficher du paramètre Type Valeur par défaut Obligatoire Description
Critères de recherche Chaîne N/A Non Spécifiez un critère de recherche pour la requête. Actuellement, seules les valeurs "event_type" sont acceptées comme critères de recherche (par exemple, netconn). Plusieurs valeurs peuvent être acceptées sous la forme d'une chaîne séparée par des virgules.
Requête Rechercher N/A Oui Requête à exécuter dans la recherche de processus.Par exemple, "netconn_action:ACTION_CONNECTION_CREATE OR netconn_action:ACTION_CONNECTION_ESTABLISHED"
Période Integer 4 Non Spécifiez une période en heures pour laquelle récupérer les alertes.
Limite d'enregistrements Integer 20 Non Spécifiez le nombre d'enregistrements pouvant être renvoyés par l'action.
Trier par Chaîne N/A Non Spécifiez un paramètre pour trier les données.
Ordre de tri LDD ASC Non Ordre de tri

Exemples de cas d'utilisation de playbooks

Enquêter sur l'activité d'un processus spécifique

Lors de l'analyse d'une alerte liée à un hôte spécifique géré par la plate-forme CB, il a été découvert que l'hôte exécutait un processus suspect. L'utilisateur Google SecOps a besoin d'une action qui utilisera la fonctionnalité CB Enterprise EDR pour obtenir les événements associés à un processus donné à partir de Google SecOps.

Exécuter sur

Cette action ne s'applique pas aux entités.

Résultats de l'action

Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
{
    "results": [
        {
            "backend_timestamp": "2020-04-26T18:38:50.128Z",
            "created_timestamp": "2020-05-19T03:56:53.483Z",
            "event_guid": "ufzid3pPQs-yrRlPBe8-ww",
            "event_hash": "ce6a949bcd3879897c9eac258ec6a091",
            "event_timestamp": "2020-04-26T18:34:16.258Z",
            "event_type": "netconn",
            "legacy": false,
            "netconn_action": "ACTION_CONNECTION_CREATE",
            "netconn_inbound": true,
            "netconn_local_ipv6": "FF020000000000000000000000010003",
            "netconn_local_port": 5355,
            "netconn_protocol": "PROTO_UDP",
            "netconn_remote_ipv6": "FE800000000000000000000000000000",
            "netconn_remote_port": 58994,
            "process_guid": "7DESJ9GN-002efb20-000003ec-00000000-1d5fb6d63ba535c",
            "process_pid": 1004
        },
        ...
    ]
}
Mur des cas
Type de résultat Valeur / Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • Si l'opération réussit, affichez "Found events for the following process guids:\n {0}".format( process guid list)
  • Si is_success=False pour tous les GUID de processus fournis, affichez "Aucun résultat de recherche n'a été renvoyé."
  • Si is_success=False pour certaines des entités fournies, car il ne trouve pas le GUID de processus spécifié, affichez "Action was not able to find information for the following processes:\n {0}".format(liste des GUID de processus).
  • Si is_success=False pour certaines des entités fournies en raison d'une erreur lors de l'exécution de la recherche (par exemple, un délai d'attente), affichez "Échec de l'obtention des résultats en raison d'erreurs lors de l'exécution de la recherche pour les GUID de processus suivants :/n {0}".format(liste des identifiants d'entité)

L'action doit échouer et arrêter l'exécution d'un playbook :

  • Si une erreur fatale se produit (par exemple, des identifiants incorrects, une absence de connexion au serveur, etc.), affichez "Échec de l'exécution de l'action ! Error is {0}".format(exception.stacktrace)
Général
Table

Nom de la table : événements trouvés pour le processus {identifiant de l'artefact de processus}

Colonnes : elles doivent être générées automatiquement en fonction des résultats renvoyés.

Entité

Hachage d'enrichissement

Description

Enrichissez l'entité de hachage de fichier Google SecOps en fonction des informations de VMware Carbon Black Enterprise EDR.

Exemples de cas d'utilisation de playbooks

Enrichissez l'entité Google SecOps "hachage de fichier" avec des informations provenant de CB Enterprise EDR.

Lors du traitement d'une alerte de possible infection par un logiciel malveillant associée à un hôte disposant d'un capteur CB Platform, l'utilisateur doit disposer de données d'enrichissement provenant de CB Enterprise EDR (qui fait partie de la plate-forme) concernant les filehashes spécifiques associés à l'alerte en question à des fins d'investigation. Par exemple, dans le cadre de l'enrichissement, l'utilisateur peut obtenir des métadonnées de hachage de fichier associées, lorsque ce hachage de fichier a été détecté pour la première fois dans l'organisation et sur quel hôte.

Exécuter sur

Cette action s'exécute sur l'entité Filehash au format Sha256.

Résultats de l'action

Enrichissement d'entités
Nom du champ d'enrichissement Source (clé JSON) Logique : quand les utiliser ?
CB_ENT_EDR.sha256 sha256 toujours
CB_ENT_EDR.md5 md5 toujours
CB_ENT_EDR.architecture architecture toujours
CB_ENT_EDR.available_file_size available_file_size toujours
CB_ENT_EDR.charset_id charset_id toujours
CB_ENT_EDR.comments commentaires Si la valeur n'est pas nulle
CB_ENT_EDR.company_name company_name toujours
CB_ENT_EDR.copyright droits d'auteur toujours
CB_ENT_EDR.file_available file_available toujours
CB_ENT_EDR.file_description file_description toujours
CB_ENT_EDR.file_size file_size toujours
CB_ENT_EDR.file_version file_version toujours
CB_ENT_EDR.internal_name internal_name toujours
CB_ENT_EDR.lang_id lang_id Si la valeur n'est pas nulle
CB_ENT_EDR.original_filename original_filename toujours
CB_ENT_EDR.os_type os_type toujours
CB_ENT_EDR.private_build private_build Si la valeur n'est pas nulle
CB_ENT_EDR.product_description product_description Si la valeur n'est pas nulle
CB_ENT_EDR.product_name product_name toujours
CB_ENT_EDR.product_version product_version toujours
CB_ENT_EDR.special_build special_build Si la valeur n'est pas nulle
CB_ENT_EDR.trademark marque Si la valeur n'est pas nulle
CB_ENT_EDR.found_times num_devices toujours
CB_ENT_EDR.first_seen_device_timestamp first_seen_device_timestamp toujours
CB_ENT_EDR.first_seen_device_id first_seen_device_id toujours
CB_ENT_EDR.first_seen_device_name first_seen_device_name toujours
CB_ENT_EDR.last_seen_device_timestamp last_seen_device_timestamp toujours
CB_ENT_EDR.last_seen_device_id last_seen_device_id toujours
CB_ENT_EDR.last_seen_device_name last_seen_device_name toujours
Résultat du script
Nom du résultat du script Options de valeur Exemple
is_success Vrai/Faux is_success:False
Résultat JSON
{
    "sha256": "e24dd278cec867486b68418c9066ffa9bd4f394dac3ba94125d58415f677f0f4",
    "architecture": [
        "amd64"
    ],
    "available_file_size": 207800,
    "charset_id": 1200,
    "comments": null,
    "company_name": "Example Organization",
    "copyright": "Copyright  © 2019",
    "file_available": true,
    "file_description": "OpenJDK Platform binary",
    "file_size": 207800,
    "file_version": "8.0.2320.9",
    "internal_name": "java",
    "lang_id": null,
    "md5": "afede6f64ed8878bc0cac57e1831a3bc",
    "original_filename": "java.exe",
    "os_type": "WINDOWS",
    "private_build": null,
    "product_description": null,
    "product_name": "OpenJDK Platform 8",
    "product_version": "8.0.2320.9",
    "special_build": null,
    "trademark": null
}
Mur des cas
Type de résultat Valeur / Description Type
Message de sortie*

L'action ne doit pas échouer ni arrêter l'exécution d'un playbook :

  • Si l'opération réussit et qu'au moins l'une des entités fournies a été enrichie, affichez "Successfully enriched entities: {0}".format([entity.Identifier]).
  • Si l'enrichissement de toutes les entités fournies échoue, affichez "Aucune entité n'a été enrichie".
  • Si vous ne trouvez pas de données dans VMware Carbon Black Enterprise EDR pour enrichir des entités spécifiques, affichez le message "L'action n'a pas pu trouver d'informations VMware Carbon Black Enterprise EDR pour enrichir les entités suivantes : {0}".format([entity.identifier]).
  • Si l'exécution de l'une des requêtes d'enrichissement échoue (par exemple, l'erreur 500 s'affiche lors de l'obtention d'une réponse, mais l'autre réponse est correcte), la valeur de "is_success" doit être définie sur "False". Toutefois, l'action doit enrichir les données obtenues à partir de l'autre réponse et afficher le message suivant : "Les entités suivantes ont été partiellement enrichies en raison d'erreurs lors de l'obtention des données d'entité :/n {0}".format(liste des identifiants d'entité)

L'action doit échouer et arrêter l'exécution d'un playbook :

  • En cas d'erreur fatale (par exemple, identifiants incorrects, absence de connexion au serveur, etc.), affichez "Échec de l'exécution de l'action Enrichir les entités ! Error is {0}".format(exception.stacktrace)
Général