STIX Threat Intelligence-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie STIX Threat Intelligence-Logs mit dem Bindplane-Agent in Google Security Operations aufnehmen.

STIX (Structured Threat Information Expression) ist eine standardisierte Sprache und ein standardisiertes Format für die Weitergabe von Kompromittierungsindikatoren (Indicators of Compromise, IOCs) und Threat-Intelligence-Daten zwischen Organisationen. STIX-Daten werden in der Regel als JSON- oder XML-Dateien von TAXII-Servern oder Threat Intelligence-Plattformen empfangen. Der Bindplane-Agent erfasst STIX-Datendateien direkt aus dem lokalen Dateisystem.

Hinweis

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher oder Linux-Host mit systemd
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Ein TAXII-Client oder eine Threat Intelligence-Plattform, die STIX-formatierte Dateien (JSON oder XML) in einem lokalen Verzeichnis speichert

Google SecOps-Anmeldedaten für den Bindplane-Agenten abrufen

Wählen Sie eine der folgenden Methoden aus, um den Bindplane-Agenten bei Google SecOps zu authentifizieren:

  • Neue Bereitstellungen: Verwenden Sie die Chronicle API (Option 1).
  • Legacy-Bereitstellungen: Verwenden Sie die Authentifizierungsdatei für die Datenaufnahme (Option 2) weiter, bis die Ingestion API am 20. Juli 2027 eingestellt wird.
  1. Melden Sie sich in der Google Cloud -Konsole an und wählen Sie das Google Cloud -Projekt aus, das mit Ihrer Google SecOps-Instanz verknüpft ist.
  2. Rufen Sie IAM & Verwaltung > Dienstkonten auf.
  3. Klicken Sie auf Dienstkonto erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name des Dienstkontos: Geben Sie einen Namen für das Konto ein, z. B. bindplane-ingest.
    • Dienstkontobeschreibung: Geben Sie eine Beschreibung ein, z. B. Bindplane agent log ingestion.
  5. Klicken Sie auf Erstellen und fortfahren.
  6. Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen auf Rolle auswählen und wählen Sie Chronicle-Bearbeiter aus.
  7. Klicken Sie auf Weiter und dann auf Fertig.
  8. Klicken Sie auf das von Ihnen erstellte Dienstkonto und rufen Sie den Tab Schlüssel auf.
  9. Klicken Sie auf Schlüssel hinzufügen > Neuen Schlüssel erstellen.
  10. Wählen Sie JSON aus und klicken Sie auf Erstellen. Die Schlüsseldatei wird auf Ihren Computer heruntergeladen.
  11. Speichern Sie die Schlüsseldatei als ingestion-auth.json im Bindplane-Collector-Verzeichnis (/opt/observiq-otel-collector/ingestion-auth.json unter Linux oder C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json unter Windows) oder aktualisieren Sie creds_file_path in config.yaml, damit der Pfad mit dem Pfad übereinstimmt, in dem Sie die Datei speichern.
  12. Rufen Sie IAM & Verwaltung > Einstellungen auf und kopieren Sie die Projektnummer. Sie benötigen sie für die Konfiguration des Exporters.

Option 2: Authentifizierungsdatei für die Datenaufnahme herunterladen (Legacy)

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Erfassungs-Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Datenaufnahme herunter.
  4. Speichern Sie die Datei sicher auf dem System, auf dem der Bindplane-Agent installiert werden soll.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profil auf.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

Bindplane-Agent installieren

Installieren Sie den Bindplane-Agent auf Ihrem Windows- oder Linux-Betriebssystem gemäß der folgenden Anleitung.

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sc query observiq-otel-collector
    

    Der Dienst sollte als RUNNING angezeigt werden.

Linux-Installation

  1. Öffnen Sie ein Terminal mit Root- oder sudo-Berechtigungen.
  2. Führen Sie dazu diesen Befehl aus:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sudo systemctl status observiq-otel-collector
    

    Der Dienst sollte als active (running) angezeigt werden.

Zusätzliche Installationsressourcen

Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agenten.

Bindplane-Agent so konfigurieren, dass Logs aufgenommen und an Google SecOps gesendet werden

Konfigurationsdatei suchen

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Konfigurationsdatei bearbeiten

  • Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:

    receivers:
      filelog:
        include:
          - /var/log/stix/*.json
        start_at: beginning
    
    exporters:
      chronicle/stix:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: STIX
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/stix_to_chronicle:
          receivers:
            - filelog
          exporters:
            - chronicle/stix
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • filelog: Der Empfängertyp zum Erfassen von Logdateien vom Laufwerk
    • include: Liste der zu überwachenden Dateipfade. Legen Sie hier das Verzeichnis fest, in dem STIX-Dateien gespeichert werden:
      • Linux: /var/log/stix/*.json
      • Windows: C:\Logs\stix\*.json
    • start_at: Auf beginning setzen, um vorhandene Logs zu lesen, oder auf end, um nur neue Einträge zu lesen.
  • Exporter-Konfiguration:

    • stix: Aussagekräftiger Name für den Exportvorgang
    • creds_file_path: Vollständiger Pfad zur JSON-Schlüsseldatei des Dienstkontos (Option 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: Kunden-ID aus dem vorherigen Schritt
    • location: Ersetzen Sie <LOCATION> durch die Region Ihrer Google SecOps-Instanz (z. B. us, europe oder asia-southeast1). Der Exporteur stellt diesem Wert das Präfix chronicle.googleapis.com voran. Eine vollständige Liste finden Sie unter Regionale Endpunkte.
    • project: Ersetzen Sie <PROJECT_NUMBER> durch die Projektnummer aus IAM & Verwaltung > Einstellungen.
    • endpoint: Behalten Sie die Einstellung chronicle.googleapis.com bei.
    • STIX: Logtyp genau so, wie er in Chronicle angezeigt wird
    • ingestion_labels: Optionale Labels im YAML-Format (z. B. env: production)
  • Pipelinekonfiguration:

    • stix_to_chronicle: Aussagekräftiger Name für die Pipeline

Exporter für die Legacy Ingestion API

  • Wenn Sie die Authentifizierungsdatei für die Datenaufnahme aus Option 2 verwenden, ersetzen Sie den Block exporters durch Folgendes. Legen Sie creds_file_path auf den Pfad zur Datei für die Authentifizierung bei der Aufnahme fest. Wenn sich Ihre Instanz außerhalb der USA befindet, ersetzen Sie malachiteingestion-pa.googleapis.com durch Ihren regionalen Endpunkt (z. B. europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/stix:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: STIX
        raw_log_field: body
        ingestion_labels:
          env: production
    

Konfigurationsdatei speichern

  • Speichern Sie die Datei nach der Bearbeitung:
    • Linux: Drücken Sie Ctrl+O, dann Enter und dann Ctrl+X.
    • Windows: Klicken Sie auf Datei > Speichern.

Starten Sie den Bindplane-Agent neu, um die Änderungen zu übernehmen.

  • Führen Sie den folgenden Befehl aus, um den Bindplane-Agenten unter Linux neu zu starten:

    sudo systemctl restart observiq-otel-collector
    
    1. Prüfen Sie, ob der Dienst ausgeführt wird:

      sudo systemctl status observiq-otel-collector
      
    2. Prüfen Sie die Logs auf Fehler:

      sudo journalctl -u observiq-otel-collector -f
      
  • Wählen Sie eine der folgenden Optionen aus, um den Bindplane-Agenten unter Windows neu zu starten:

    • Eingabeaufforderung oder PowerShell als Administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Dienstkonsole:

      1. Drücken Sie Win+R, geben Sie services.msc ein und drücken Sie die Eingabetaste.
      2. Suchen Sie nach observIQ OpenTelemetry Collector.
      3. Rechtsklicken Sie und wählen Sie Neu starten aus.
      4. Prüfen Sie, ob der Dienst ausgeführt wird:

        sc query observiq-otel-collector
        
      5. Prüfen Sie die Logs auf Fehler:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

STIX-Datendateisammlung konfigurieren

STIX ist ein Datenformat, kein Produkt. STIX-Threat-Intelligence-Daten werden in der Regel als JSON- oder XML-Dateien von TAXII-Clients, Threat-Intelligence-Plattformen oder manuellen Downloads empfangen. Diese Dateien müssen sich in einem Verzeichnis befinden, das vom Bindplane-Agenten überwacht wird.

Linux

  1. Erstellen Sie ein Verzeichnis zum Speichern von STIX-Datendateien:

    sudo mkdir -p /var/log/stix
    
  2. Konfigurieren Sie Ihren TAXII-Client oder Ihre Threat Intelligence-Plattform so, dass STIX-Dateien in /var/log/stix/ gespeichert werden.

  3. Prüfen Sie, ob das Dienstkonto des Bindplane-Agents Lesezugriff auf das Verzeichnis hat:

    sudo chmod 755 /var/log/stix
    

Windows

  1. Erstellen Sie ein Verzeichnis zum Speichern von STIX-Datendateien:

    mkdir C:\Logs\stix
    
  2. Konfigurieren Sie Ihren TAXII-Client oder Ihre Threat Intelligence-Plattform so, dass STIX-Dateien unter „C:\Logs\stix“ gespeichert werden.

  3. Aktualisieren Sie den Pfad include des Bindplane-Agents in config.yaml, sodass er mit Folgendem übereinstimmt:

    include:
      - C:\Logs\stix\*.json
    

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
entity.administrative_domain Auf „TEST“ festlegen
assetid_value entity.asset.asset_id Wert aus „assetid_value“, falls nicht leer
condition_label, related_indicators_relationship_label, related_indicators_scope, indicator_types_label, valid_start_time_label, controlled_structure_label, marking_structure_label entity.asset.attribute.labels Aus verschiedenen Labels zusammengeführt
Name entity.file.full_path Wert direkt kopiert
val, hash.simple_hash_value, MD5_val, hash_value entity.file.md5 Wert aus „val“, wenn er mit dem MD5-Regex übereinstimmt, andernfalls „hash.simple_hash_value“, wenn der Typ MD5 ist, andernfalls „MD5_val“, andernfalls „hash_value“
Wert entity.file.names Wert direkt kopiert
val, hash.simple_hash_value, sha1_val, hash_value entity.file.sha1 Wert aus „val“, wenn er mit dem SHA1-regulären Ausdruck übereinstimmt, andernfalls „hash.simple_hash_value“, wenn der Typ SHA1 ist, andernfalls „sha1_val“, andernfalls „hash_value“
val, hash.simple_hash_value, sha256val, sha_value, sha_value entity.file.sha256 Wert aus „val“, wenn er mit dem SHA256-Regex übereinstimmt, andernfalls „hash.simple_hash_value“, wenn der Typ SHA256 ist, andernfalls „sha256val“, andernfalls „sha_value“
observable.object.properties.value, dom, value, host, name, external_references.0.source_name entity.hostname Wert aus observable.object.properties.value, wenn der Typ FQDN ist, sonst dom aus grok, sonst value, wenn der Typ domain-name ist, sonst host, sonst name, wenn main_observable_type domain/hostname ist, sonst external_references.0.source_name
ip_val, ipval, ip, source_ip, value, src_ip entity.ip Wert aus ip_val, wenn Grok übereinstimmt, sonst ipval, wenn Kategorie ipv4-addr, sonst ip aus Muster-Grok, sonst source_ip, sonst Wert, wenn Typ ipv4, sonst src_ip aus Grok
source_port, src_port entity.port Wert aus „source_port“ oder „src_port“
indicator_label, extension_value1, extension_value2, extension_value3, extension_value4, revoked_value, spec_version_value, object_marking_ref_value, label_value entity.resource.attribute.labels Aus verschiedenen Labels zusammengeführt
observable.object.properties.value, url_val, value, observable_properties_value entity.url Wert aus „observable.object.properties.value“, wenn der Typ „URL“ ist, andernfalls „url_val“ aus „grok“, andernfalls „value“, wenn der Typ „URL“ ist, andernfalls „observable_properties_value“, wenn nicht leer
email_val, mail, value entity.user.email_addresses Wert aus „email_val“, wenn Grok-Übereinstimmung, sonst „mail“ aus Grok, sonst Wert, wenn Typ „email-addr“
timestamp metadata.collected_timestamp Konvertiert mit Datumsabgleich ISO8601/RFC 3339
title, description metadata.description Wert aus Titel oder Beschreibung
entity_type metadata.entity_type Wert direkt kopiert
timestamp, valid_until metadata.interval.end_time Konvertiert aus „timestamp“ oder „valid_until“ mit Datumsübereinstimmung ISO8601/RFC 3339
timestamp, valid_from, created metadata.interval.start_time Konvertiert aus „timestamp“, „valid_from“, „created“ oder „timestamp“ mit Datumsabgleich ISO8601/RFC 3339
id metadata.product_entity_id Wert direkt kopiert
Version metadata.product_version Wert direkt kopiert
threat_detail metadata.threat Zusammengeführt aus „threat_detail“
threat_detail_category threat.category Wert direkt kopiert
confidence_value, confidence, x_stix_confidence, x_ctix_confidence_score threat.confidence_details Wert aus „confidence_value“, andernfalls „confidence“, wenn „no_value“, andernfalls „x_stix_confidence“, andernfalls „x_ctix_confidence_score“
value, confidence, x_ctix_confidence_score threat.confidence_score Wert aus „value“, wenn der Name „Confidence Score“ ist, andernfalls „confidence“, andernfalls „x_ctix_confidence_score“, in Gleitkommazahl konvertiert
property_label, sha512_value, observable_id, observable_object_id, keyword_label threat.detection_fields Aus verschiedenen Labels zusammengeführt
Beschreibung threat.description Wert direkt kopiert
value, extensions.extension-definition--ea279b3e-5c71-4632-ac08-831c66a786ba.score threat.risk_score Wert aus „value“, wenn der Name „Risk“ ist, andernfalls Erweiterungspunktzahl, in Gleitkommazahl konvertiert
metadata.product_name Legen Sie diesen Wert auf „STIX“ fest.
metadata.vendor_name Auf „STIX“ festgelegt
dom event.idm.entity.entity.hostname Aus Änderungsprotokoll zugeordnet
name event.idm.entity.entity.url Aus Änderungsprotokoll zugeordnet
valid_from event.idm.entity.entity.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
valid_until event.idm.entity.entity.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
pattern_version event.idm.entity.entity.resource.attribute.labels Aus Änderungsprotokoll zugeordnet
observable.object.properties.value.condition event.idm.entity.entity.asset.attribute.labels Aus Änderungsprotokoll zugeordnet
handling.controlled_structure event.idm.entity.entity.asset.attribute.labels Aus Änderungsprotokoll zugeordnet
handling.marking_structures.color event.idm.entity.entity.asset.attribute.labels Aus Änderungsprotokoll zugeordnet
related_indicators.related_indicators event.idm.entity.entity.asset.attribute.labels Aus Änderungsprotokoll zugeordnet
related_indicators.scope event.idm.entity.entity.asset.attribute.labels Aus Änderungsprotokoll zugeordnet
indicator_types event.idm.entity.entity.asset.attribute.labels Aus Änderungsprotokoll zugeordnet
valid_time_positions event.idm.entity.entity.asset.attribute.labels Aus Änderungsprotokoll zugeordnet
observable.object.properties.custom_properties event.idm.entity.metadata.threat.detection_fields Aus Änderungsprotokoll zugeordnet
observable.object.properties.value event.ioc.domain_and_ports.domain Aus Änderungsprotokoll zugeordnet
mitre-extension-definition.extension_type entity.resource.attribute.labels.value Aus Änderungsprotokoll zugeordnet
sco-extension-definition.extension_type entity.resource.attribute.labels.value Aus Änderungsprotokoll zugeordnet
x_ctix_confidence_score threat_detail.confidence_score Aus Änderungsprotokoll zugeordnet
modified timestamp Aus Änderungsprotokoll zugeordnet
valid_from entity_event.metadata.interval.start_time Aus Änderungsprotokoll zugeordnet
confidence threat_detail.confidence_score Aus Änderungsprotokoll zugeordnet
name entity.entity.file.full_path Aus Änderungsprotokoll zugeordnet
description threat_detail.description Aus Änderungsprotokoll zugeordnet
external_references.0.source_name entity_event.entity.hostname Aus Änderungsprotokoll zugeordnet
entity_type IP_ADDRESS Aus Änderungsprotokoll zugeordnet
entity_type USER Aus Änderungsprotokoll zugeordnet
entity_type FILE Aus Änderungsprotokoll zugeordnet
entity_type DOMAIN_NAME Aus Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten