Collecter les journaux Carbon Black EDR
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
- Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur : Créer un bucket.
- Enregistrez le nom et la région du bucket pour une utilisation ultérieure.
- Créez un utilisateur en suivant ce guide : Créer un utilisateur IAM.
- Sélectionnez l'utilisateur créé.
- Sélectionnez l'onglet Informations d'identification de sécurité.
- Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
- Sélectionnez Service tiers comme Cas d'utilisation.
- Cliquez sur Suivant.
- Facultatif : ajoutez un tag de description.
- Cliquez sur Créer une clé d'accès.
- 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.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez et sélectionnez la règle AmazonS3FullAccess.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Installer cb-event-forwarder sur un serveur EDR sur site
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
Installez le RPM à l'aide de YUM :
yum install cb-event-forwarder
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
Ouvrez le fichier de configuration :
sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
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
Enregistrez et quittez à l'aide du clavier :
- Appuyez sur Ctrl+X, puis sur Y et sur Entrée.
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
- Connectez-vous à la console de gestion AWS.
- Assurez-vous que la région AWS correspond à celle du transmetteur d'événements :
- Sur la page Console AWS, recherchez la région.
- Utilisez le menu déroulant pour sélectionner la région appropriée de votre Redirecteur d'événements.
- 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)
- Sélectionnez Services.
- Accédez à la console S3.
- Cliquez sur Créer un bucket pour ouvrir l'assistant Créer un bucket.
- Dans Nom du bucket, saisissez un nom unique pour votre bucket (par exemple, CB-EDR).
- Assurez-vous que la région est celle que vous avez sélectionnée précédemment par défaut.
- 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).
- Sélectionnez Créer un bucket.
Configurer le bucket S3 pour autoriser le redirecteur d'événements à écrire des événements
- Créez un utilisateur en suivant ce guide de l'utilisateur : Créer un utilisateur IAM.
- Sélectionnez l'utilisateur créé.
- Sélectionnez l'onglet Informations d'identification de sécurité.
- Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
- Sélectionnez Service tiers comme Cas d'utilisation.
- Cliquez sur Suivant.
- Facultatif : ajoutez un tag de description.
- Cliquez sur Créer une clé d'accès.
- 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.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez la règle AmazonS3FullAccess.
- Sélectionnez la règle.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Configurer le transfert d'événements dans la console EDR
- Connectez-vous à VMware Carbon Black Cloud.
- Accédez à l'onglet Event forwarder (Transférer les événements).
- Activez les événements que vous souhaitez que le produit importe dans S3.
- Accédez à Sortie et type, puis définissez la valeur sur S3.
- Indiquez le nom du bucket S3 au format suivant :
<region>:<bucket-name>
(par exemple,us-east-1:cb-edr
). - Sélectionnez le fichier Importer les identifiants AWS au format INI.
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
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 :
- Accédez à Paramètres SIEM > Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux Carbon Black EDR).
- Sélectionnez Amazon S3 comme Type de source.
- Sélectionnez Carbon Black EDR comme type de journal.
- Cliquez sur Suivant.
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.
- Remplacez
- 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.
Cliquez sur Suivant.
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.
- Remplacez
- 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.