Collecter les journaux Attivo Networks BOTsink
Ce document explique comment ingérer les journaux BOTsink d'Attivo Networks dans Google Security Operations à l'aide de Bindplane. L'analyseur tente d'abord d'analyser les messages de journal entrants au format JSON. Si cela échoue, il utilise une série de modèles Grok pour extraire des champs à partir de messages au format CEF (Common Event Format), en gérant divers formats et erreurs potentielles. Enfin, il met en correspondance les champs extraits avec le schéma UDM (Unified Data Model), enrichit les données avec un contexte supplémentaire et standardise 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 l'exécution se fait 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 le numéro client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Profil.
- Copiez et sauvegardez le numéro client dans la section Détails de l'organisation.
Installer l'agent Bindplane
Installation de Windows
- Ouvrez l'invite de commande 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 des 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
Autres ressources d'installation
Pour plus d'options d'installation, consultez le guide d'installation.
Configurer l'agent Bindplane pour qu'il ingère les journaux Syslog et les envoie à 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 (
nano
,vi
ou Bloc-notes, par exemple).
- 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 dans votre infrastructure si nécessaire.
Remplacez
<customer_id>
par le numéro client réel.Remplacez
/path/to/ingestion-authentication-file.json
par le chemin d'accès du fichier d'authentification enregistré dans la section Obtenir le fichier d'authentification d'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'UI 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.
- Moyen: sélectionnez Alerte.
- Élevé: sélectionnez Critique.
- Très élevé: sélectionnez Urgence.
- Pour Message Format (Format du message), sélectionnez CEF.
- Sélectionnez Ajouter une connexion dans la section "Profil".
- Fournissez les informations de configuration suivantes :
- Nom du serveur: saisissez un nom suffisamment explicite qui 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.
Tableau 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 | Permet d'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 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 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 . Il peut être mappé sur le nom d'hôte principal, l'adresse IP cible ou le 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 mappé sur le nom d'hôte ou l'adresse IP principal 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 l'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 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.