Darktrace-Logs erfassen

Parserversion:19.0

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: Die Kundennummer, 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 bestätigen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • CEF-Syslog-Warnmeldungen: 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 principal.hostname, principal.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 principal.hostname, principal.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 : und dann auf den Wert von score gesetzt, der in einen String konvertiert wird.
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 principal.hostname, principal.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. Setzen Sie ihn andernfalls auf STATUS_UPDATE.
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. Setzen Sie ihn andernfalls auf NETWORK_SUSPICIOUS.
percentScore event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
device.credentials event.idm.read_only_udm.target.user.userid Aus dem Änderungsprotokoll zugeordnet
url event.idm.read_only_udm.principal.url Aus dem Änderungsprotokoll zugeordnet
username event.idm.read_only_udm.principal.user.userid Aus dem Änderungsprotokoll zugeordnet
iris-event-type event.idm.read_only_udm.metadata.product_event_type Aus dem Änderungsprotokoll zugeordnet
inhibitor event.idm.read_only_udm.target.ip Aus dem Änderungsprotokoll zugeordnet
inhibitor event.idm.read_only_udm.target.asset.ip Aus dem Änderungsprotokoll zugeordnet
inhibitor event.idm.read_only_udm.target.port Aus dem Änderungsprotokoll zugeordnet
device.os event.idm.read_only_udm.principal.platform Aus dem Änderungsprotokoll zugeordnet
device.typename event.idm.read_only_udm.principal.asset.type Aus dem Änderungsprotokoll zugeordnet
device.ossource event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
model.tags event.idm.read_only_udm.additional.fields Aus dem Änderungsprotokoll zugeordnet
codeid event.idm.read_only_udm.security_result.rule_id Aus dem Änderungsprotokoll zugeordnet
inhibitor event.idm.read_only_udm.security_result.description Aus dem Änderungsprotokoll zugeordnet
host_ip event.idm.read_only_udm.intermediary.ip Aus dem Änderungsprotokoll zugeordnet
technique_data event.idm.read_only_udm.security_result.attack_details.techniques Aus dem Änderungsprotokoll zugeordnet
tactics_data event.idm.read_only_udm.security_result.attack_details.tactics Aus dem Änderungsprotokoll zugeordnet
model.created.userid principal.user.userid Aus dem Änderungsprotokoll zugeordnet
model.edited.userid additional.fields Aus dem Änderungsprotokoll zugeordnet
direction network.direction Aus dem Änderungsprotokoll zugeordnet
filterType" under "triggeredFilters additional.fields Aus dem Änderungsprotokoll zugeordnet
trigger.value" under "triggeredFilters additional.fields Aus dem Änderungsprotokoll zugeordnet
from principal.user.email_addresses Aus dem Änderungsprotokoll zugeordnet
subject metadata.description Aus dem Änderungsprotokoll zugeordnet
anomaly_score", "tags", "link_hosts", and "message_id additional.fields Aus dem Änderungsprotokoll zugeordnet
recipients observer.user.email_addresses Aus dem Änderungsprotokoll zugeordnet
attachment_sha1s" and "attachment_sha256s security_result.detection_fields Aus dem Änderungsprotokoll zugeordnet
triggeredFilter.trigger.value target.ip Aus dem Änderungsprotokoll zugeordnet
from network.email.from Aus dem Änderungsprotokoll zugeordnet
subject network.email.subject Aus dem Änderungsprotokoll zugeordnet
attachment_sha1s", "attachment_sha256s", "recipients", "link_hosts", "tags", "actions", "anomaly_score", "message_id security_result.detection_fields Aus dem Änderungsprotokoll zugeordnet
model.name principal.user.user_display_name Aus dem Änderungsprotokoll zugeordnet
breachUrl security_result.url_back_to_product Aus dem Änderungsprotokoll zugeordnet
device.typelabel", "device.sid", "device.typename principal.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
device.ips.0.subnet additional_fields Aus dem Änderungsprotokoll zugeordnet
device.device.lastSeen principal.asset.last_seen_time Aus dem Änderungsprotokoll zugeordnet
mitreTechniques security_result.attack_details.techniques Aus dem Änderungsprotokoll zugeordnet
details sec_result.about.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
principal_port_no principal.port Aus dem Änderungsprotokoll zugeordnet
location principal.location.country_or_region Aus dem Änderungsprotokoll zugeordnet
target_host target.hostname Aus dem Änderungsprotokoll zugeordnet
source_ip principal.ip Aus dem Änderungsprotokoll zugeordnet
source_port principal.port Aus dem Änderungsprotokoll zugeordnet
dest_ip target.ip Aus dem Änderungsprotokoll zugeordnet
dest_port target.port Aus dem Änderungsprotokoll zugeordnet
@host principal.hostname Aus dem Änderungsprotokoll zugeordnet
note principal.application Aus dem Änderungsprotokoll zugeordnet
@type sec_result.about.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
opcode sec_result.about.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
trans_id sec_result.about.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
query_class sec_result.about.resource.attribute.labels Aus dem Änderungsprotokoll zugeordnet
deviceMacAddress principal.mac 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