Collecter les journaux BOTsink Attivo Networks
Ce document explique comment ingérer les journaux Attivo Networks BOTsink dans Google Security Operations à l'aide de Bindplane. L'analyseur tente d'abord d'analyser les messages de journaux entrants au format JSON. Si cela échoue, il utilise une série de modèles Grok pour extraire les champs des messages au format CEF (Common Event Format), en gérant différents formats et erreurs potentielles. Enfin, il mappe les champs extraits au schéma UDM (Unified Data Model), en enrichissant les données avec un contexte supplémentaire et en standardisant la sortie.
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é à Attivo Networks
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: '/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: 'ATTIVO' 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 Attivo Networks BOTsink
- Connectez-vous à l'interface utilisateur Web Attiva Networks.
- Accédez à Administration > Gestion > Syslog.
- Cliquez sur Ajouter pour créer un profil Syslog.
- Indiquez un nom descriptif pour le profil.
- Dans Transfert d'événements, sélectionnez Activé.
- Fournissez la configuration des normes BOTsink :
- Très faible : sélectionnez Informationnel.
- Faible : sélectionnez Avertissement.
- Support : sélectionnez Alerte.
- Élevée : sélectionnez Critique.
- Très élevé : sélectionnez Urgence.
- Pour Format du message, sélectionnez CEF.
- Sélectionnez Ajouter une connexion dans la section du profil.
- Fournissez les informations de configuration suivantes :
- Nom du serveur : saisissez un nom descriptif qui vous permet d'identifier Google SecOps.
- Nom du profil : sélectionnez le profil syslog CEF que vous avez créé précédemment.
- Adresse IP : saisissez l'adresse IP de l'agent Bindplane.
- Port : saisissez le numéro de port de l'agent Bindplane (par exemple, saisissez
514
pour UDP). - Protocole : sélectionnez UDP.
- Cliquez sur Test Connection (Tester la connexion) et vérifiez que vous recevez les données de test dans l'agent Bindplane et Google SecOps.
- Cliquez sur OK.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
alertID | read_only_udm.metadata.product_log_id | La valeur est extraite du champ alertID . |
cat | read_only_udm.security_result.action_details | La valeur est extraite du champ cat . |
CEFDeviceProduct | read_only_udm.metadata.product_name | La valeur est extraite du champ CEFDeviceProduct . |
CEFDeviceVendor | read_only_udm.metadata.vendor_name | La valeur est extraite du champ CEFDeviceVendor . |
CEFDeviceVersion | read_only_udm.metadata.product_version | La valeur est extraite du champ CEFDeviceVersion . |
CEFName | Utilisé pour extraire les champs operation , result , module et descrip . |
|
CEFSeverity | read_only_udm.security_result.severity | Mappé à partir du champ CEFSeverity selon les règles suivantes :– error ou warning : HIGH – (?i)critical : CRITICAL – (?i)notice ou (?i)MEDIUM : MEDIUM – information , info , Very-Low ou Low : LOW |
CEFSignatureID | read_only_udm.security_result.rule_id | La valeur est extraite du champ CEFSignatureID . |
cef_version | read_only_udm.additional.fields.value.string_value | La valeur est extraite du champ cef_version . |
read_only_udm.additional.fields.key | Valeur statique : CEFVersion |
|
descrip | read_only_udm.metadata.description | La valeur est extraite du champ descrip . |
dest_domain | read_only_udm.target.domain.name | La valeur est extraite du champ dest_domain . |
dhost | read_only_udm.target.hostname | La valeur est extraite du champ dhost si service est défini sur NETBIOS . |
dIPDomain | read_only_udm.target.domain.name | La valeur est extraite du champ dIPDomain si dest_domain est vide. |
dst | read_only_udm.target.ip | La valeur est extraite du champ dst . |
dst_os | read_only_udm.target.asset.platform_software.platform_version | La valeur est extraite du champ dst_os . |
dpt | read_only_udm.target.port | La valeur est extraite du champ dpt et convertie en nombre entier. |
dvc | read_only_udm.principal.hostname, read_only_udm.target.ip, read_only_udm.intermediary.hostname | La logique dépend des valeurs des champs dvc , src et sip . Elle peut être associée au nom d'hôte principal, à l'adresse IP cible ou au nom d'hôte intermédiaire en fonction de la disponibilité et du format de ces champs. |
intf | read_only_udm.additional.fields.value.string_value | La valeur est extraite du champ intf et convertie en chaîne. |
read_only_udm.additional.fields.key | Valeur statique : intf |
|
mitreTacticName | read_only_udm.security_result.rule_name | La valeur est extraite du champ mitreTacticName . |
mitreTechniqueId | read_only_udm.security_result.detection_fields.value | La valeur est extraite du champ mitreTechniqueId . |
read_only_udm.security_result.detection_fields.key | Valeur statique : Technique name |
|
mitreTechniqueName | read_only_udm.security_result.detection_fields.value | La valeur est extraite du champ mitreTechniqueName . |
read_only_udm.security_result.detection_fields.key | Valeur statique : Technique name |
|
module | read_only_udm.additional.fields.value.string_value | La valeur est extraite du champ module . |
read_only_udm.additional.fields.key | Valeur statique : module |
|
Message | read_only_udm.metadata.description | La valeur est extraite du champ msg après l'extraction du champ protocol . |
opération | read_only_udm.additional.fields.value.string_value | La valeur est extraite du champ operation . |
read_only_udm.additional.fields.key | Valeur statique : operation |
|
protocol | read_only_udm.network.ip_protocol | La valeur est extraite du champ protocol si elle est TCP ou UDP . |
résultat | read_only_udm.security_result.action | Mappé à partir du champ result selon les règles suivantes :– (?i)SUCCESS ou (?i)ALLOW : ALLOW – CHALLENGE : CHALLENGE – FAILURE , DENY , SKIPPED ou RATE_LIMIT : BLOCK |
rt | read_only_udm.metadata.event_timestamp | La valeur est extraite du champ rt et analysée en tant qu'horodatage UNIX en millisecondes. |
shost | read_only_udm.principal.hostname | La valeur est extraite du champ shost . |
sip | read_only_udm.principal.hostname, read_only_udm.principal.ip | La logique dépend des valeurs des champs dvc et sip . Il peut être associé au nom d'hôte principal ou à l'adresse IP en fonction de la disponibilité et du format de ces champs. |
smac | read_only_udm.principal.mac | La valeur est extraite du champ smac . |
source | read_only_udm.principal.hostname | La valeur est extraite du champ source . |
source_domain | read_only_udm.principal.domain.name | La valeur est extraite du champ source_domain . |
src | read_only_udm.principal.ip | La valeur est extraite du champ src . |
subscriberName | read_only_udm.additional.fields.value.string_value | La valeur est extraite du champ subscriberName . |
read_only_udm.additional.fields.key | Valeur statique : Subscriber Name |
|
suser | read_only_udm.principal.user.userid, read_only_udm.principal.user.user_display_name | La valeur est extraite du champ suser après extraction du nom d'utilisateur. |
threshold (seuil) | read_only_udm.additional.fields.value.string_value | La valeur est extraite du champ threshold . |
read_only_udm.additional.fields.key | Valeur statique : arp-scan-threshold |
|
usrname | read_only_udm.principal.user.email_addresses | La valeur est extraite du champ usrname s'il n'est pas vide ou s'il n'est pas défini sur N/A . |
vlan | read_only_udm.principal.labels.value | La valeur est extraite du champ vlan . |
read_only_udm.principal.labels.key | Valeur statique : vlan |
|
read_only_udm.metadata.event_type | Déterminé en fonction des valeurs des champs src , smac , shost , dst , protocol , dvc et service . Il peut s'agir de l'une des valeurs suivantes : SCAN_NETWORK , NETWORK_CONNECTION , NETWORK_UNCATEGORIZED , STATUS_UPDATE ou GENERIC_EVENT . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.