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 den Austausch von 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

Authentifizierungsdatei für die Google SecOps-Aufnahme abrufen

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

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. Kopieren und speichern Sie die Kunden-ID 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. Warte, 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. Warte, bis die Installation abgeschlossen ist.

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

    sudo systemctl status observiq-otel-collector
    

    Der Dienst sollte als aktiv (wird ausgeführt) angezeigt werden.

Zusätzliche Installationsressourcen

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

Bindplane-Agenten zum Erfassen von Logs und Senden an Google SecOps konfigurieren

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:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.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 dies auf 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 Datei für die Authentifizierung bei der Aufnahme:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: Kunden-ID aus dem vorherigen Schritt
    • endpoint: Regionale Endpunkt-URL:
      • USA: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Asien: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Eine vollständige Liste finden Sie unter Regionale Endpunkte.
    • STIX: Logtyp, genau 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

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.

Bindplane-Agent neu starten, um die Änderungen zu übernehmen

  • Führen Sie den folgenden Befehl aus, um den Bindplane-Agent 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. Logs auf Fehler prüfen:

      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. Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
      4. Prüfen Sie, ob der Dienst ausgeführt wird:

        sc query observiq-otel-collector
        
      5. Logs auf Fehler prüfen:

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

Erhebung von STIX-Datendateien konfigurieren

STIX ist ein Datenformat, kein Produkt. STIX-Daten zur Bedrohungsanalyse 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-Agent ü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 Bindplane-Agentenpfad include in config.yaml so, dass er mit Folgendem übereinstimmt:

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

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
entity.administrative_domain Auf „TEST“ festgelegt
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-regulären Ausdruck ü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-regulären Ausdruck ü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 Typ „FQDN“, andernfalls „dom“ aus „grok“, andernfalls „value“, wenn Typ „domain-name“, andernfalls „host“, andernfalls „name“, wenn „main_observable_type“ „domain“/„hostname“, andernfalls „external_references.0.source_name“
ip_val, ipval, ip, source_ip, value, src_ip entity.ip Wert aus „ip_val“, wenn „grok“ übereinstimmt, andernfalls „ipval“, wenn die Kategorie „ipv4-addr“ ist, andernfalls „ip“ aus dem Muster „grok“, andernfalls „source_ip“, andernfalls „value“, wenn der Typ „ipv4“ ist, andernfalls „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“ übereinstimmt, andernfalls „mail“ aus „grok“, andernfalls Wert, wenn Typ „email-addr“
timestamp metadata.collected_timestamp Konvertiert mit Datumsabgleich ISO8601/RFC 3339
Titel, Beschreibung 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 Datumsabgleich 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“, 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 der Erweiterungsscore, in Gleitkommazahl konvertiert
metadata.product_name Auf „STIX“ festgelegt
metadata.vendor_name Auf „STIX“ festgelegt
dom event.idm.entity.entity.hostname Aus dem Änderungsprotokoll zugeordnet
name event.idm.entity.entity.url Aus dem Änderungsprotokoll zugeordnet
valid_from event.idm.entity.entity.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
valid_until event.idm.entity.entity.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
pattern_version event.idm.entity.entity.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
observable.object.properties.value.condition event.idm.entity.entity.asset.attribute.labels Aus dem Änderungsprotokoll zugeordnet
handling.controlled_structure event.idm.entity.entity.asset.attribute.labels Aus dem Änderungsprotokoll zugeordnet
handling.marking_structures.color event.idm.entity.entity.asset.attribute.labels Aus dem Änderungsprotokoll zugeordnet
related_indicators.related_indicators event.idm.entity.entity.asset.attribute.labels Aus dem Änderungsprotokoll zugeordnet
related_indicators.scope event.idm.entity.entity.asset.attribute.labels Aus dem Änderungsprotokoll zugeordnet
indicator_types event.idm.entity.entity.asset.attribute.labels Aus dem Änderungsprotokoll zugeordnet
valid_time_positions event.idm.entity.entity.asset.attribute.labels Aus dem Änderungsprotokoll zugeordnet
observable.object.properties.custom_properties event.idm.entity.metadata.threat.detection_fields Aus dem Änderungsprotokoll zugeordnet
observable.object.properties.value event.ioc.domain_and_ports.domain Aus dem Änderungsprotokoll zugeordnet
mitre-extension-definition.extension_type entity.resource.attribute.labels.value Aus dem Änderungsprotokoll zugeordnet
sco-extension-definition.extension_type entity.resource.attribute.labels.value Aus dem Änderungsprotokoll zugeordnet
x_ctix_confidence_score threat_detail.confidence_score Aus dem Änderungsprotokoll zugeordnet
modified timestamp Aus dem Änderungsprotokoll zugeordnet
valid_from entity_event.metadata.interval.start_time Aus dem Änderungsprotokoll zugeordnet
confidence threat_detail.confidence_score Aus dem Änderungsprotokoll zugeordnet
name entity.entity.file.full_path Aus dem Änderungsprotokoll zugeordnet
description threat_detail.description Aus dem Änderungsprotokoll zugeordnet
external_references.0.source_name entity_event.entity.hostname Aus dem Änderungsprotokoll zugeordnet
entity_type IP_ADDRESS Aus dem Änderungsprotokoll zugeordnet
entity_type USER Aus dem Änderungsprotokoll zugeordnet
entity_type FILE Aus dem Änderungsprotokoll zugeordnet
entity_type DOMAIN_NAME Aus dem Änderungsprotokoll zugeordnet

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

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