Collecter les journaux Cylance PROTECT
Ce document explique comment ingérer les journaux Cylance PROTECT dans Google Security Operations à l'aide de Bindplane. Le code de l'analyseur Logstash transforme les messages syslog Cylance PROTECT en Unified Data Model (UDM). Il extrait les champs du message syslog, les normalise, les mappe aux champs UDM et enrichit les données avec des informations sur la gravité et la catégorie des menaces.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Windows 2016 ou version ultérieure, ou un hôte Linux avec
systemd
- Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
- Accès privilégié à Cylance PROTECT
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installation de fenêtres
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
Exécutez la commande suivante :
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Ressources d'installation supplémentaires
Pour plus d'options d'installation, consultez le guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
- Accédez au fichier de configuration :
- Recherchez le fichier
config.yaml
. En règle générale, il se trouve dans le répertoire/etc/bindplane-agent/
sous Linux ou dans le répertoire d'installation sous Windows. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yaml
comme suit :receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'CYLANCE_PROTECT' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
Remplacez
<customer_id>
par le numéro client réel.Mettez à jour
/path/to/ingestion-authentication-file.json
en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.
Redémarrez l'agent Bindplane pour appliquer les modifications.
Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :
sudo systemctl restart bindplane-agent
Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgent
Configurer Syslog dans Cylance Protect
- Connectez-vous à la console de gestion Cylance.
- Accédez à Paramètres > Application.
- Cochez la case Syslog/SIEM.
- Sélectionnez tous les événements.
- Fournissez les informations de configuration suivantes :
- SIEM : sélectionnez Syslog.
- Protocole : sélectionnez UDP.
- Cochez la case Autoriser les messages de plus de 2 Ko.
- Adresse IP/Domaine : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane (par exemple,
514
pour UDP). - Établissement : sélectionnez le type de journalisation des applications.
- Cliquez sur Test Connection (Tester la connexion).
- Cliquez sur Enregistrer.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
Version de l'agent | metadata.product_version | Valeur extraite de Agent Version: <value> |
Score Cylance | security_result.severity_details | Valeur extraite de Cylance Score: <value> |
security_result.severity | Mappé selon la logique suivante : - ÉLEVÉ : si le score Cylance > 67 - MOYEN : si le score Cylance > 33 - FAIBLE : si le score Cylance <= 33 |
|
Détecté par | security_result.detection_fields.value | Valeur extraite de Detected By: <value> |
ID de l'appareil | principal.asset_id | Valeur extraite de Device Id: <value> et précédée de Cylance: |
ID des appareils | principal.asset_id | Valeur extraite de Device Ids: <value> et précédée de Cylance: , utilisée lorsque Device Id n'est pas présent |
Nom de l'appareil | principal.hostname | Valeur extraite de Device Name: <value> |
Nom de l'appareil | target.hostname | Valeur extraite de Device Name: <value> , utilisée pour des types d'événements spécifiques tels que ScriptControl |
Noms des appareils | principal.hostname | Valeur extraite de Device Names: <value> , utilisée lorsque Device Name n'est pas présent |
Description | security_result.summary | Valeur extraite de Description: <value> , utilisée pour des types d'événements spécifiques tels que OpticsCaeNetworkEvent |
Adresse IP de destination | target.ip | Valeur extraite de Destination IP: <value> |
Port de destination | target.port | Valeur extraite de Destination Port: <value> |
ID de l'événement | metadata.product_log_id | Valeur extraite de Event Id: <value> |
Nom de l'événement | Permet de déterminer des sous-types d'événements spécifiques et d'appliquer la logique correspondante. | |
Type d'événement | metadata.product_event_type | Valeur extraite de Event Type: <value> |
metadata.event_type | Mappé en fonction des champs Event Type et Event Name , la valeur par défaut est GENERIC_EVENT |
|
Nom du fichier | principal.process.file.full_path | Valeur extraite de File Name: <value> et combinée à Path: <value> pour former le chemin d'accès complet |
Chemin d'accès au fichier | target.file.full_path | Valeur extraite de File Path: <value> |
Instigating Process ImageFileSha256 | principal.process.file.sha256 | Valeur extraite de Instigating Process ImageFileSha256: <value> |
Nom du processus déclencheur | principal.process.file.full_path | Valeur extraite de Instigating Process Name: <value> |
Propriétaire du processus initiateur | principal.user.userid | Valeur extraite de Instigating Process Owner: <value> . Le nom d'utilisateur est extrait après avoir été divisé par // , le cas échéant. |
Propriétaire du processus initiateur | principal.administrative_domain | Nom de domaine extrait de Instigating Process Owner: <value> en le divisant par // , le cas échéant |
Adresse IP | principal.ip | Adresse(s) IP extraite(s) de IP Address: (<value>) |
Interpréteur | security_result.rule_labels.value | Valeur extraite de Interpreter: <value> |
Version de l'interprète | security_result.rule_labels.value | Valeur extraite de Interpreter Version: <value> |
Utilisateurs connectés | about.user.userid | Noms d'utilisateur extraits de Logged On Users: (<value>) |
Adresse MAC | principal.mac | Adresse MAC extraite de MAC Address: (<value>) et mise en forme avec des deux-points |
MD5 | principal.process.file.md5 | Valeur extraite de MD5: <value> |
Message | Utilisé pour extraire des données pour des types d'événements spécifiques, comme AuditLog |
|
OS | principal.platform | Mappé sur WINDOWS si le champ OS contient Windows |
Chemin d'accès | principal.process.file.full_path | Valeur extraite de Path: <value> et combinée à File Name: <value> pour former le chemin d'accès complet |
Nom de la règle | security_result.rule_name | Valeur extraite de Policy Name: <value> |
ID du processus | principal.process.pid | Valeur extraite de Process ID: <value> |
Nom du processus | principal.process.file.full_path | Valeur extraite de Process Name: <value> |
Adresse résolue | network.dns.answers.name | Valeur extraite de Resolved Address: <value> |
SHA256 | principal.process.file.sha256 | Valeur extraite de SHA256: <value> |
Adresse IP source | principal.ip | Valeur extraite de Source IP: <value> , utilisée pour des types d'événements spécifiques |
État | security_result.action | Mappé à des actions UDM spécifiques en fonction de la valeur : – Quarantined : QUARANTINE – Cleared : ALLOW_WITH_MODIFICATION |
Nom de domaine cible | network.dns.questions.name | Valeur extraite de Target Domain Name: <value> |
Target Process ImageFileSha256 | target.process.file.sha256 | Valeur extraite de Target Process ImageFileSha256: <value> |
Nom du processus cible | target.process.file.full_path | Valeur extraite de Target Process Name: <value> |
Propriétaire du processus cible | target.user.userid | Valeur extraite de Target Process Owner: <value> . Le nom d'utilisateur est extrait après avoir été divisé par // , le cas échéant. |
Propriétaire du processus cible | target.administrative_domain | Nom de domaine extrait de Target Process Owner: <value> en le divisant par // , le cas échéant |
Chemin de clé de registre cible | target.registry.registry_key | Valeur extraite de Target Registry KeyPath: <value> |
Classification des menaces | security_result.threat_name | Valeur extraite de Threat Classification: <value> |
Utilisateur | principal.user.userid | Nom d'utilisateur extrait de User: <value> , s'il est présent, utilisé lorsque User Name n'est pas présent |
Utilisateur | principal.user.email_addresses | Adresse e-mail extraite de User: <value> , si elle est présente, utilisée lorsque User Name n'est pas présent |
Nom de l’utilisateur | principal.user.userid | Valeur extraite de User Name: <value> |
Type de cas de non-conformité | security_result.summary | Valeur extraite de Violation Type: <value> et précédée de ExploitAttempt: |
Type de cas de non-conformité | security_result.threat_name | Valeur extraite de Violation Type: <value> |
Noms des zones | security_result.description | Valeur extraite de Zone Names: (<value>) et précédée de Zone_Names: |
metadata.vendor_name | Codé en dur sur Cylance |
|
metadata.product_name | Valeur extraite du message de journal, PROTECT ou OPTICS |
|
metadata.log_type | Codé en dur sur CYLANCE_PROTECT |
|
network.ip_protocol | Codé en dur sur TCP pour les événements OpticsCaeNetworkEvent |
|
network.application_protocol | Codé en dur sur DNS pour les événements OpticsCaeDnsEvent |
|
security_result.rule_labels.key | Définissez-le sur Interpreter ou Interpreter Version en fonction du champ disponible. |
|
security_result.detection_fields.key | Codé en dur sur Detected By |
|
security_result.category | Les valeurs possibles sont les suivantes : (SOFTWARE_SUSPICIOUS), (AUTH_VIOLOATION), (POLICY_VIOLATION), (NETWORK_SUSPICIOUS), (EXPLOIT) et (SOFTWARE_MALICIOUS). |
|
security_result.action | Mappées en fonction du type d'événement et de conditions spécifiques, les valeurs possibles incluent : : AUTORISER : BLOQUER : METTRE EN QUARANTAINE : AUTORISER_AVEC_MODIFICATION |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.