Darktrace-Logs erfassen

Unterstützt in:

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

Darktrace ist eine KI-gestützte Cybersicherheitsplattform, die Bedrohungen und Anomalien in Echtzeit erkennt. Der Parser verarbeitet sowohl CEF- als auch JSON-formatierte Darktrace-Logs, extrahiert Felder und ordnet sie dem einheitlichen Datenmodell (Unified Data Model, UDM) zu.

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
  • Netzwerkverbindung zwischen dem Bindplane-Agent und der Darktrace-Appliance
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Privilegierter Zugriff auf die Darktrace-Web-UI

Authentifizierungsdatei für die Aufnahme in Google SecOps 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 der BindPlane-Agent 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.

Fenstereinbau

  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 (Wird ausgeführt) 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 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-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren

Konfigurationsdatei suchen

  • Linux:

    sudo nano /etc/bindplane-agent/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:
        tcplog:
            listen_address: "0.0.0.0:10282"
    
    exporters:
        chronicle/darktrace:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: DARKTRACE
            raw_log_field: body
    
    service:
        pipelines:
            logs/darktrace_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/darktrace
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • listen_address: IP-Adresse und Port, auf die gewartet werden soll:
      • 0.0.0.0, um alle Schnittstellen zu überwachen (empfohlen)
      • Port 10282 ist der standardmäßige CEF-Syslog-Port von Darktrace. Passen Sie ihn nach Bedarf an.
  • Exporter-Konfiguration:

    • 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, die aus der Google SecOps Console kopiert wurde
    • 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.

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-Agent unter Windows neu zu starten:

    • Eingabeaufforderung oder PowerShell als Administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Services-Konsole:

      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"
        

Syslog auf Darktrace konfigurieren

  1. Melden Sie sich in der Darktrace-Web-UI an.
  2. Klicken Sie auf Admin > Systemkonfiguration.
  3. Klicken Sie auf Benachrichtigungseinstellungen überprüfen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • CEF-Syslog-Warnungen: Wählen Sie Wahr aus.
    • CEF-Syslog-Server: Geben Sie die BindPlane-IP-Adresse ein.
    • CEF-Syslog-Server-Port: Geben Sie die Bindplane-Portnummer ein, z. B. 10282.
    • CEF Syslog TCP Alert: Wählen Sie True aus.
  5. Klicken Sie auf Speichern.

Unterstützte Darktrace-Beispiellogs

  • SYSLOG + KV (CEF)

    {
    "acknowledged": false,
    "commentCount": 0,
    "pbid": 900000001,
    "time": 1604055367000,
    "creationTime": 1604055367000,
    "model": {
        "name": "Compromise::Agent Beacon to New Endpoint",
        "uuid": "dfd6f10b-b91c-4244-9fd5-7c35caf21b33",
        "description": "A device is initiating multiple connections to a new external endpoint...",
        "priority": 2,
        "category": "Informational",
        "mitre": {
        "tactics": [
            "command-and-control"
        ],
        "techniques": [
            "T1071.001"
        ]
        }
    },
    "triggeredComponents": [
        {
        "time": 1677679818000,
        "ip": " ",
        "port": 443,
        "metric": {
            "name": "externalconnections"
        },
        "triggeredFilters": [
            {
            "filterType": "Connection hostname",
            "trigger": {
                "value": "beacon.external.io"
            }
            }
        ]
        }
    ],
    "score": 0.85,
    "device": {
        "did": 90001,
        "macaddress": " ",
        "ip": " ",
        "hostname": "user-laptop-1"
    }
    }
    
  • SYSLOG + JSON

    {
    "dpi_engine": "dt-sensor-101",
    "proto": "tcp",
    "source_ip": " ",
    "source_port": 51000,
    "dest_ip": " ",
    "dest_port": 389,
    "src": " ",
    "dst": " ",
    "details": "AP request: srealm is [TESTDOMAIN.LOCAL], service is [LDAP/DC99.testdomain.local/testdomain.local], ST cipher is [aes256-cts-hmac-sha1-96]",
    "epochdate": 1690471502.2252,
    "@host": "log-collector-host",
    "uid": "ABCDEFGHIJ1234567890",
    "note": "KERBEROS::App",
    "@type": "notice"
    }
    

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
darktraceUrl security_result.url_back_to_product Der Wert wird aus dem Feld darktraceUrl übernommen.
darktrace_host observer.hostname Der Wert wird aus dem Feld darktrace_host übernommen, wenn es sich nicht um eine IP-Adresse handelt.
darktrace_ip observer.ip Der Wert wird aus dem Feld darktrace_ip übernommen.
darktrace_user observer.user.userid Der Wert wird aus dem Feld darktrace_user übernommen.
Beschreibung security_result.summary, metadata.description Der Wert wird aus dem Feld description übernommen.
device.customFields.DT-AUTO.macaddress principal.mac Der Wert wird aus dem Feld device.customFields.DT-AUTO.macaddress übernommen.
device.did principal.asset.asset_id Der Wert wird aus dem Feld device.did übernommen, in einen String konvertiert und mit Device ID: als Präfix versehen.
device.firstSeen principal.asset.first_seen_time Der Wert wird aus dem Feld device.firstSeen übernommen, in einen String konvertiert und als UNIX-Zeitstempel in Millisekunden geparst.
device.hostname hauptkonto.hostname, hauptkonto.asset.hostname Der Wert wird aus dem Feld device.hostname übernommen.
device.ip principal.ip, principal.asset.ip Der Wert wird aus dem Feld device.ip übernommen, wenn er dem IP-Adressformat entspricht.
device.ips.0.subnet additional.fields.subnet Der Wert wird aus dem Feld device.ips.0.subnet übernommen und mit subnet als Präfix versehen.
device.ips.ip principal.ip, principal.asset.ip Der Wert wird für jede IP-Adresse in der Liste aus dem Feld device.ips.ip übernommen.
device.lastSeen principal.asset.last_discover_time Der Wert wird aus dem Feld device.lastSeen übernommen, in einen String konvertiert und als UNIX-Zeitstempel in Millisekunden geparst.
device.macaddress principal.mac Der Wert wird aus dem Feld device.macaddress übernommen.
device.objecttype principal.asset.type Wenn der Wert device ist, wird das UDM-Feld auf WORKSTATION gesetzt.
device.sid principal.resource.attribute.labels.sid Der Wert wird aus dem Feld device.sid übernommen und in einen String konvertiert.
device.typelabel principal.resource.attribute.labels.typelabel Der Wert wird aus dem Feld device.typelabel übernommen.
device.typename principal.resource.attribute.labels.typename Der Wert wird aus dem Feld device.typename übernommen.
dst target.ip, target.asset.ip Der Wert wird aus dem Feld dst übernommen.
dpt target.port Der Wert wird aus dem Feld dpt übernommen und in eine Ganzzahl konvertiert.
dvc principal.ip, principal.asset.ip Wenn der Wert von dvc eine IP-Adresse ist, wird er dem UDM-Feld hinzugefügt.
dvchost hauptkonto.hostname, hauptkonto.asset.hostname Der Wert wird aus dem Feld dvchost übernommen.
endpoint target.url Der Wert wird aus dem Feld endpoint übernommen.
event_time metadata.event_timestamp Der Wert wird aus dem Feld event_time übernommen und als ISO8601-Zeitstempel geparst.
externalId metadata.product_log_id Der Wert wird aus dem Feld externalId übernommen.
incidentEventUrl principal.url Der Wert wird aus dem Feld incidentEventUrl übernommen.
ip principal.ip, principal.asset.ip Der Wert wird aus dem Feld ip übernommen, wenn er dem IP-Adressformat entspricht.
issue_msg security_result.summary Der Wert wird aus dem Feld issue_msg übernommen.
Nachricht security_result.description Der Wert wird aus dem Feld message übernommen.
method network.http.method Der Wert wird aus dem Feld method übernommen.
model.description metadata.description Der Wert wird aus dem Feld model.description übernommen.
model.name metadata.product_event_type Der Wert wird aus dem Feld model.name übernommen.
model.now.category security_result.severity Wenn der Wert critical ist, wird das UDM-Feld auf CRITICAL gesetzt. Wenn der Wert Informational ist, wird das UDM-Feld auf INFORMATIONAL gesetzt. Wenn der Wert Suspicious ist, wird das UDM-Feld auf HIGH und die Kategorie auf NETWORK_SUSPICIOUS festgelegt.
model.now.description metadata.description Der Wert wird aus dem Feld model.now.description übernommen.
model.now.message security_result.description Der Wert wird aus dem Feld model.now.message übernommen.
model.now.name metadata.product_event_type Der Wert wird aus dem Feld model.now.name übernommen.
model.now.pid principal.process.pid Der Wert wird aus dem Feld model.now.pid übernommen und in einen String konvertiert.
model.now.uuid principal.user.userid Der Wert wird aus dem Feld model.now.uuid übernommen und der Ereignistyp wird auf USER_UNCATEGORIZED festgelegt.
model.pid principal.process.pid Der Wert wird aus dem Feld model.pid übernommen und in einen String konvertiert.
model.then.description principal.resource.attribute.labels.Model Then Description Der Wert wird aus dem Feld model.then.description übernommen.
model.then.name principal.resource.attribute.labels.Model Then Name Der Wert wird aus dem Feld model.then.name übernommen.
model.then.pid principal.resource.attribute.labels.Model Then Pid Der Wert wird aus dem Feld model.then.pid übernommen und in einen String konvertiert.
model.then.uuid principal.resource.attribute.labels.Model Then UUID Der Wert wird aus dem Feld model.then.uuid übernommen.
model.uuid principal.user.userid Der Wert wird aus dem Feld model.uuid übernommen und der Ereignistyp wird auf USER_UNCATEGORIZED festgelegt.
relatedBreaches.0.modelName security_result.description Der Wert wird aus dem Feld relatedBreaches.0.modelName übernommen.
Punktzahl security_result.priority, security_result.priority_details Wenn der Wert zwischen 0,8 und 1 liegt, wird die Priorität auf HIGH_PRIORITY festgelegt. Wenn der Wert zwischen 0,5 und 0,79 liegt, wird die Priorität auf MEDIUM_PRIORITY festgelegt. Wenn der Wert zwischen 0 und 0,49 liegt, wird die Priorität auf LOW_PRIORITY festgelegt. Die Prioritätsdetails werden auf Score : gefolgt vom Wert von score, der in einen String konvertiert wird, festgelegt.
die Ausprägung security_result.severity Wenn der Wert 2 ist, wird das UDM-Feld auf MEDIUM gesetzt. Wenn der Wert größer als 2 ist, wird das UDM-Feld auf HIGH gesetzt.
shost hauptkonto.hostname, hauptkonto.asset.hostname Der Wert wird aus dem Feld shost übernommen.
smac principal.mac Der Wert wird aus dem Feld smac übernommen.
src principal.ip, principal.asset.ip Der Wert wird aus dem Feld src übernommen.
Status network.http.response_code Der Wert wird aus dem Feld status übernommen und in einen String konvertiert.
Zusammenfassung metadata.description Der Wert wird aus dem Feld summary übernommen.
Zeit Der Wert wird aus dem Feld time übernommen, in einen String konvertiert und als UNIX-Zeitstempel in Millisekunden geparst.
timestamp Der Wert wird aus dem Feld timestamp übernommen und entweder als ISO8601-Zeitstempel oder als UNIX-Zeitstempel in Millisekunden geparst.
Titel security_result.summary Der Wert wird aus dem Feld title übernommen.
triggeredComponents.ip intermediary.ip Der Wert wird aus dem Feld triggeredComponents.ip übernommen, wenn er dem IP-Adressformat entspricht.
triggeredComponents.port intermediary.port Der Wert wird aus dem Feld triggeredComponents.port übernommen und in eine Ganzzahl konvertiert.
Nutzername principal.user.userid Der Wert wird aus dem Feld username übernommen.
metadata.vendor_name Legen Sie DARKTRACE fest.
metadata.product_name Legen Sie DCIP fest.
metadata.log_type Legen Sie DARKTRACE fest.
network.ip_protocol Wird auf TCP gesetzt, wenn issue_msg nicht UDP enthält. Andernfalls auf UDP setzen.
security_result.action Wird auf BLOCK gesetzt, wenn status gleich 401 ist. Andernfalls wird der Wert auf ALLOW gesetzt.
security_result.severity Legen Sie INFORMATIONAL fest.
network.application_protocol Wird auf HTTP gesetzt, wenn method nicht leer ist.
metadata.event_type Wird auf NETWORK_HTTP gesetzt, wenn method nicht leer ist. Wird auf USER_LOGIN gesetzt, wenn description logged into \\\\S+ over ssh enthält. Wird auf NETWORK_CONNECTION gesetzt, wenn target_ip nicht leer ist. Andernfalls legen Sie STATUS_UPDATE fest.
extensions.auth.type Wird auf MACHINE gesetzt, wenn description logged into \\\\S+ over ssh enthält.
security_result.category Wird auf DATA_EXFILTRATION gesetzt, wenn issue_msg Exfiltration enthält. Wird auf NETWORK_MALICIOUS gesetzt, wenn issue_msg Compromise enthält. Andernfalls legen Sie NETWORK_SUSPICIOUS fest.

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