Collecter les journaux Carbon Black EDR

Compatible avec :

Ce document explique comment collecter les journaux Carbon Black EDR à partir d'environnements cloud et sur site à l'aide d'AWS S3. L'analyseur extrait les champs des messages au format JSON, CSV ou syslog, les normalise et les mappe à l'UDM. Il gère différents types d'événements Carbon Black, y compris les connexions réseau, les événements de processus, les modifications de fichiers, les modifications de registre et les correspondances d'IOC, en enrichissant les données avec des informations sur les menaces et des informations sur les appareils, le cas échéant.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Instance Google SecOps.
  • Accès privilégié à AWS IAM et S3.
  • Accès privilégié à Carbon Black EDR dans le cloud ou sur site.

Configurer Carbon Black EDR sur site

Configurer un bucket Amazon S3 pour les systèmes sur site

  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 une utilisation ultérieure.
  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.

Installer cb-event-forwarder sur un serveur EDR sur site

  1. Installez le dépôt CbOpenSource s'il n'est pas déjà présent :

    cd /etc/yum.repos.d
    curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
    
  2. Installez le RPM à l'aide de YUM :

    yum install cb-event-forwarder
    
  3. Si vous utilisez EDR 7.1.0 ou une version ultérieure, exécutez le script suivant pour définir les autorisations appropriées requises par EDR :

    /usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
    

Configurer cb-event-forwarder pour générer des journaux JSON

  1. Ouvrez le fichier de configuration :

    sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
    
  2. Modifiez les paramètres suivants :

    [event_forwarder]
    output_format=json   # Enable JSON format
    output_type=s3       # Send logs to AWS S3
    s3_bucket_name=YOUR-S3-BUCKET-NAME
    s3_region=YOUR-S3-BUCKET-NAME
    s3_access_key_id=YOUR_AWS_ACCESS_KEY
    s3_secret_access_key=YOUR_AWS_SECRET_KEY
    s3_prefix=carbonblack/edr/logs
    
  3. Enregistrez et quittez à l'aide du clavier :

    • Appuyez sur Ctrl+X, puis sur Y et sur Entrée.
  4. Démarrez cb-event-forwarder :

    sudo systemctl enable cb-event-forwarder
    sudo systemctl restart cb-event-forwarder
    sudo systemctl status cb-event-forwarder
    

Configurer Carbon Black Cloud Event Forwarder pour S3

Créer un bucket AWS S3

  1. Connectez-vous à la console de gestion AWS.
  2. Assurez-vous que la région AWS correspond à celle du transmetteur d'événements :
    1. Sur la page Console AWS, recherchez la région.
    2. Utilisez le menu déroulant pour sélectionner la région appropriée de votre Redirecteur d'événements.
    3. La liste suivante indique la région AWS applicable pour chaque URL Carbon Black EDR.
      • "instance-alias".my.carbonblack.io - Région : US East (N. Virginie) (us-east-1)
      • "instance-alias".my.cbcloud.de – Région : Europe (Francfort) (eu-central-1)
      • Région "instance-alias".my.cbcloud.sg : Asie-Pacifique (Singapour) (ap-southeast-1)
  3. Sélectionnez Services.
  4. Accédez à la console S3.
  5. Cliquez sur Créer un bucket pour ouvrir l'assistant Créer un bucket.
    1. Dans Nom du bucket, saisissez un nom unique pour votre bucket (par exemple, CB-EDR).
    2. Assurez-vous que la région est celle que vous avez sélectionnée précédemment par défaut.
    3. Modifiez les paramètres par défaut de Bloquer l'accès public pour autoriser l'accès public (cette étape est nécessaire pour ingérer les journaux dans Google SecOps).
    4. Sélectionnez Créer un bucket.

Configurer le bucket S3 pour autoriser le redirecteur d'événements à écrire des événements

  1. Créez un utilisateur en suivant ce guide de l'utilisateur : Créer un utilisateur IAM.
  2. Sélectionnez l'utilisateur créé.
  3. Sélectionnez l'onglet Informations d'identification de sécurité.
  4. Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
  5. Sélectionnez Service tiers comme Cas d'utilisation.
  6. Cliquez sur Suivant.
  7. Facultatif : ajoutez un tag de description.
  8. Cliquez sur Créer une clé d'accès.
  9. 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.
  10. Cliquez sur OK.
  11. Sélectionnez l'onglet Autorisations.
  12. Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
  13. Sélectionnez Ajouter des autorisations.
  14. Sélectionnez Joindre directement des règles.
  15. Recherchez la règle AmazonS3FullAccess.
  16. Sélectionnez la règle.
  17. Cliquez sur Suivant.
  18. Cliquez sur Ajouter des autorisations.

Configurer le transfert d'événements dans la console EDR

  1. Connectez-vous à VMware Carbon Black Cloud.
  2. Accédez à l'onglet Event forwarder (Transférer les événements).
  3. Activez les événements que vous souhaitez que le produit importe dans S3.
  4. Accédez à Sortie et type, puis définissez la valeur sur S3.
  5. Indiquez le nom du bucket S3 au format suivant : <region>:<bucket-name> (par exemple, us-east-1:cb-edr).
  6. Sélectionnez le fichier Importer les identifiants AWS au format INI.
  7. Voici un exemple de profil :

    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
    AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    Default region name [None]: us-east-1
    
  8. Cliquez sur Enregistrer et redémarrez le service pour que les modifications prennent effet.

Configurer des flux

Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :

  • Paramètres SIEM> Flux
  • Plate-forme de contenu > Packs de contenu

Configurer des flux à partir de Paramètres SIEM > Flux

Pour configurer un flux, procédez comme suit :

  1. Accédez à Paramètres SIEM > Flux.
  2. Cliquez sur Add New Feed (Ajouter un flux).
  3. Sur la page suivante, cliquez sur Configurer un seul flux.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Carbon Black EDR).
  5. Sélectionnez Amazon S3 comme Type de source.
  6. Sélectionnez Carbon Black EDR comme type de journal.
  7. Cliquez sur Suivant.
  8. Spécifiez les valeurs des paramètres d'entrée suivants :

    • Région : région dans laquelle se trouve le bucket Amazon S3.
    • URI S3 : URI du bucket.
      • s3:/BUCKET_NAME
        • Remplacez BUCKET_NAME par le nom réel du bucket.
    • URI is a : sélectionnez le type d'URI en fonction de la configuration du flux de journaux (Single file | Directory | Directory which includes subdirectories).
    • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
    • 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.
  9. Cliquez sur Suivant.

  10. Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.

Configurer des flux depuis le Hub de contenu

Indiquez les valeurs des champs suivants :

  • Région : région dans laquelle se trouve le bucket Amazon S3.
  • URI S3 : URI du bucket.
    • s3:/BUCKET_NAME
      • Remplacez BUCKET_NAME par le nom réel du bucket.
  • URI is a : sélectionnez le type d'URI en fonction de la configuration du flux de journaux (Single file | Directory | Directory which includes subdirectories).
  • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
  • 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.

Options avancées

  • Nom du flux : valeur préremplie qui identifie le flux.
  • Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
  • Espace de noms de l'élément : espace de noms associé au flux.
  • Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.

Table de mappage UDM

Champ de journal Mappage UDM Logique
action security_result.detection_fields[?key == 'action'].value Valeur du champ action du journal brut.
cb_server intermediary.hostname Valeur du champ cb_server du journal brut.
cb_version metadata.product_version Valeur du champ cb_version du journal brut.
child_pid target.process.pid (pour les événements ingress.event.childproc) Valeur du champ child_pid du journal brut lorsque type est ingress.event.childproc.
child_process_guid target.process.product_specific_process_id (pour les événements ingress.event.childproc) "CB:" concaténé à la valeur du champ child_process_guid du journal brut lorsque type est ingress.event.childproc.
child_username target.user.userid (pour les événements ingress.event.childproc) Valeur du champ child_username du journal brut lorsque type est ingress.event.childproc.
childproc_guid target.process.product_specific_process_id (pour les événements endpoint.event.procstart) "CB:" concaténé à la valeur du champ childproc_guid du journal brut lorsque type est endpoint.event.procstart.
childproc_hash.0 target.process.file.md5 (pour les événements endpoint.event.procstart) Premier élément du tableau childproc_hash du journal brut lorsque type est défini sur endpoint.event.procstart.
childproc_hash.1 target.process.file.sha256 (pour les événements endpoint.event.procstart) Le deuxième élément du tableau childproc_hash du journal brut lorsque type est endpoint.event.procstart.
childproc_name target.process.file.full_path (pour les événements endpoint.event.procstart) Valeur du champ childproc_name du journal brut lorsque type est endpoint.event.procstart.
childproc_pid target.process.pid (pour les événements endpoint.event.procstart) Valeur du champ childproc_pid du journal brut lorsque type est endpoint.event.procstart.
childproc_publisher.0.name security_result.detection_fields[?key == 'childproc_publisher_name'].value (pour les événements endpoint.event.procstart) "childproc_publisher_name:" concaténé avec la valeur de childproc_publisher.0.name du journal brut lorsque type est endpoint.event.procstart.
childproc_publisher.0.state security_result.detection_fields[?key == 'childproc_publisher_state'].value (pour les événements endpoint.event.procstart) "childproc_publisher_state:" concaténé avec la valeur de childproc_publisher.0.state à partir du journal brut lorsque type est endpoint.event.procstart.
childproc_reputation security_result.detection_fields[?key == 'childproc_reputation'].value (pour les événements endpoint.event.procstart) Valeur du champ childproc_reputation du journal brut lorsque type est endpoint.event.procstart.
childproc_username target.user.userid (pour les événements endpoint.event.procstart) Valeur du champ childproc_username du journal brut lorsque type est endpoint.event.procstart.
clientIp principal.ip, principal.asset.ip Valeur du champ clientIp du journal brut.
cmdline target.process.command_line (pour les événements feed.query.hit.process et feed.storage.hit.process), additional.fields[?key == 'cmdline_*'].value.string_value (pour les événements watchlist.storage.hit.process) Valeur du champ cmdline du journal brut lorsque type est feed.query.hit.process ou feed.storage.hit.process. Pour les événements watchlist.storage.hit.process, il est stocké dans additional.fields avec la clé "cmdline_*".
command_line target.process.command_line (pour les événements ingress.event.procstart) Valeur du champ command_line du journal brut lorsque type est ingress.event.procstart.
comms_ip intermediary.ip Valeur du champ comms_ip du journal brut.
computer_name principal.hostname, principal.asset.hostname Valeur du champ computer_name du journal brut.
crossproc_api additional.fields[?key == 'crossproc_api'].value.string_value (pour les événements endpoint.event.apicall) Valeur du champ crossproc_api du journal brut lorsque type est endpoint.event.apicall.
crossproc_guid additional.fields[?key == 'crossproc_guid'].value.string_value (pour les événements endpoint.event.crossproc) Valeur du champ crossproc_guid du journal brut lorsque type est endpoint.event.crossproc.
crossproc_hash.0 additional.fields[?key == 'crossproc_md5'].value.string_value (pour les événements endpoint.event.crossproc) Premier élément du tableau crossproc_hash du journal brut lorsque type est défini sur endpoint.event.crossproc.
crossproc_hash.1 additional.fields[?key == 'crossproc_sha256'].value.string_value (pour les événements endpoint.event.crossproc) Le deuxième élément du tableau crossproc_hash du journal brut lorsque type est endpoint.event.crossproc.
crossproc_name target.process.file.full_path (pour les événements endpoint.event.crossproc) Valeur du champ crossproc_name du journal brut lorsque type est endpoint.event.crossproc.
crossproc_publisher.0.name security_result.detection_fields[?key == 'crossproc_publisher_name'].value (pour les événements endpoint.event.crossproc) "crossproc_publisher_name:" concaténé avec la valeur de crossproc_publisher.0.name à partir du journal brut lorsque type est endpoint.event.crossproc.
crossproc_publisher.0.state security_result.detection_fields[?key == 'crossproc_publisher_state'].value (pour les événements endpoint.event.crossproc) "crossproc_publisher_state:" concaténé avec la valeur de crossproc_publisher.0.state du journal brut lorsque type est endpoint.event.crossproc.
crossproc_reputation additional.fields[?key == 'crossproc_reputation'].value.string_value (pour les événements endpoint.event.crossproc) Valeur du champ crossproc_reputation du journal brut lorsque type est endpoint.event.crossproc.
crossproc_target additional.fields[?key == 'crossproc_target'].value.string_value (pour les événements endpoint.event.crossproc) Valeur du champ crossproc_target du journal brut lorsque type est endpoint.event.crossproc. Converti en chaîne "true" ou "false".

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