Collecter les journaux Attivo Networks BOTsink

Compatible avec:

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

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. 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

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Profil.
  3. Copiez et sauvegardez le numéro client dans la section Détails de l'organisation.

Installer l'agent Bindplane

Installation de Windows

  1. Ouvrez l'invite de commande ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installation de Linux

  1. Ouvrez un terminal avec des droits root ou sudo.
  2. 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

  1. 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).
  2. 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
    
  3. Remplacez le port et l'adresse IP dans votre infrastructure si nécessaire.

  4. Remplacez <customer_id> par le numéro client réel.

  5. 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

  1. Connectez-vous à l'UI Web Attiva Networks.
  2. Accédez à Administration > Gestion > Syslog.
  3. Cliquez sur Ajouter pour créer un profil Syslog.
  4. Indiquez un nom descriptif pour le profil.
  5. Dans Transfert d'événements, sélectionnez Activé.
  6. 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.
  7. Sélectionnez Ajouter une connexion dans la section "Profil".
  8. 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.
  9. 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.
  10. 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.