Collecter les journaux de l'antivirus Kaspersky
Ce document explique comment ingérer les journaux Kaspersky Antivirus dans Google Security Operations à l'aide de Bindplane. Le code de l'analyseur tente d'abord d'analyser le message de journal brut au format JSON. Si cela échoue, il utilise des expressions régulières (modèles grok) pour extraire les champs du message en fonction des formats de journaux Kaspersky AV courants.
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes :
- Instance Google SecOps
- Hôte Windows 2016 ou version ultérieure, ou 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é à Kaspersky Antivirus
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,viou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yamlcomme 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: '/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: KASPERSKY_AV raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsRemplacez 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.jsonen 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-agentPour 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 l'exportation d'événements dans Kaspersky AV
- Connectez-vous à la console Kaspersky Security Center.
- Sélectionnez le serveur d'administration dont vous souhaitez exporter les événements.
- Dans l'espace de travail Administration Server (Serveur d'administration), cliquez sur l'onglet Events (Événements).
- Cliquez sur le lien "Configurer les notifications et l'exportation d'événements".
- Sélectionnez Configurer l'exportation vers un système SIEM dans la liste.
- Fournissez les informations de configuration suivantes :
- Système SIEM : sélectionnez Arcsight (format CEF).
- Adresse du serveur du système SIEM : saisissez l'adresse IP de l'agent Bindplane.
- Port du serveur du système SIEM : saisissez le numéro de port de l'agent Bindplane (par exemple,
514pour UDP). - Protocole : sélectionnez UDP.
- Cliquez sur OK.
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
| Application | network.http.user_agent | Mappé directement à partir du champ Application dans le journal brut. |
| Chemin d'accès de l'application | target.process.file.full_path | Utilisé avec le champ Name pour construire le chemin d'accès complet si Application path est présent dans le journal brut. |
| Composant | target.resource.name | Mappé directement à partir du champ Component dans le journal brut. |
| Catégorie de contenu | security_result.category_details | Ajouté au champ security_result.category_details si Content category est présent dans le journal brut. |
| Source de la catégorie de contenu | target.resource.type | Si la valeur contient databases, le champ UDM est défini sur DATABASE. |
| Erreur | security_result.summary | Directement mappé à partir du champ Erreur dans le journal brut si le champ summary est vide. |
| et | metadata.product_event_type | Directement mappé à partir du champ et dans le journal brut si le champ product_event_type est vide. |
| et | security_result.category_details | Ajouté au champ security_result.category_details. |
| etdn | extensions.vulns.vulnerabilities.description | Mappé directement à partir du champ etdn dans le journal brut. |
| Hachage SHA256 du fichier | target.process.file.sha256 | Mappé directement à partir du champ File SHA256 hash dans le journal brut. |
| gn | security_result.about.labels | key est défini sur GN et value est défini sur la valeur du champ gn. |
| hdn | principal.hostname | Mappé directement à partir du champ hdn dans le journal brut. |
| hanche | principal.ip | Mappé directement à partir du champ hip dans le journal brut. |
| host_name | principal.hostname | Mappé directement à partir du champ host_name dans le journal brut. |
| intermediary_host | intermediary.hostname | Mappé directement à partir du champ intermediary_host dans le journal brut. |
| intermediary_hostname | intermediary.hostname | Mappé directement à partir du champ intermediary_hostname dans le journal brut. |
| kv_data1 | Ce champ est analysé et ses valeurs sont mappées à d'autres champs UDM. | |
| kv_data2 | Ce champ est analysé et ses valeurs sont mappées à d'autres champs UDM. | |
| étiquette | network.http.user_agent | Si la valeur est User-Agent, le champ UDM est renseigné avec la valeur du champ description. |
| étiquette | principal.hostname | Si la valeur est Host, le champ UDM est renseigné avec le nom d'hôte extrait du champ description. |
| étiquette | security_result.description | Pour les autres valeurs, le champ UDM est renseigné avec une chaîne contenant les champs label et description. |
| MD5 | target.process.file.md5 | Directement mappé à partir du champ MD5 du journal brut après conversion en minuscules. |
| Hachage MD5 du fichier | target.process.file.md5 | Mappé directement à partir du champ MD5 file hash dans le journal brut. |
| message | Ce champ est analysé et ses valeurs sont mappées à d'autres champs UDM. | |
| méthode | network.http.method | Directement mappé à partir du champ method du journal brut s'il correspond à une liste de méthodes HTTP. |
| nom | target.file.full_path | Mappé directement à partir du champ name dans le journal brut. |
| Nom | target.process.file.full_path | Utilisé avec le champ application_path pour construire le chemin d'accès complet. |
| p1 | target.process.file.sha256 | Mappé directement à partir du champ p1 du journal brut après conversion en minuscules si le champ SHA256 est vide et que la valeur est une chaîne hexadécimale. |
| p2 | target.process.file.full_path | Mappé directement à partir du champ p2 dans le journal brut. |
| p5 | security_result.rule_name | Mappé directement à partir du champ p5 dans le journal brut. |
| p7 | principal.user.user_display_name | Directement mappé à partir du champ p7 dans le journal brut si les champs User et user_name sont vides. |
| ID du processus | principal.process.pid | Mappé directement à partir du champ Process ID dans le journal brut. |
| process_id | target.process.pid | Mappé directement à partir du champ process_id dans le journal brut. |
| protocol | network.application_protocol | Si la valeur contient http (non sensible à la casse), le champ UDM est défini sur HTTP. |
| Motif | security_result.summary | Mappé directement à partir du champ Reason dans le journal brut. |
| Page Web demandée | target.url | Mappé directement à partir du champ Requested web page dans le journal brut. |
| Résultat | Si la valeur est Allowed, le champ sr_action est défini sur ALLOW. |
|
| rtid | security_result.about.labels | key est défini sur rtid et value est défini sur la valeur du champ rtid. |
| Règle | security_result.description | Mappé directement à partir du champ Rule dans le journal brut. |
| SHA256 | target.process.file.sha256 | Directement mappé à partir du champ SHA256 du journal brut après conversion en minuscules. |
| sr_action | security_result.action | Fusionné dans le champ security_result.action. |
| résumé | security_result.summary | Mappé directement à partir du champ summary dans le journal brut. |
| task_name | security_result.about.labels | key est défini sur TaskName et value est défini sur la valeur du champ task_name. |
| threat_action_taken | Si la valeur est blocked, le champ security_action est défini sur BLOCK. Si la valeur est allowed, le champ security_action est défini sur ALLOW. |
|
| timestamp | metadata.event_timestamp | Permet de renseigner le code temporel de l'événement. |
| Type | security_result.threat_name | Mappé directement à partir du champ Type dans le journal brut. |
| URL | network.http.referral_url | Mappé directement à partir du champ url dans le journal brut. |
| Utilisateur | principal.user.user_display_name | Le nom d'utilisateur est extrait de ce champ et mappé au champ UDM. |
| Utilisateur | principal.administrative_domain | Le domaine est extrait de ce champ et mappé sur le champ UDM. |
| user_name | principal.user.user_display_name | Directement mappé à partir du champ user_name dans le journal brut si le champ User est vide. |
| metadata.event_type | Définissez sur SCAN_VULN_NETWORK si Application path et Name sont présents, sur STATUS_UNCATEGORIZED si hdn ou host_name sont présents, ou sur GENERIC_EVENT dans les autres cas. |
|
| metadata.vendor_name | Toujours défini sur KASPERSKY. |
|
| metadata.product_name | Toujours défini sur KASPERSKY_AV. |
|
| metadata.log_type | Toujours défini sur KASPERSKY_AV. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.