Darktrace-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Darktrace-Logs mit einem Bindplane-Agent in Google Security Operations aufnehmen. Dieser Parser extrahiert zuerst allgemeine Felder aus Syslog-Nachrichten und verwendet dann eine bedingte Logik, um sowohl CEF- als auch JSON-formatierte Darktrace-Logs zu verarbeiten. Die extrahierten Felder werden dem Schema für einheitliche Datenmodelle (Unified Data Model, UDM) zugeordnet. Die Daten werden mit Sicherheitskontext angereichert und die Ereigniskategorisierung für die nachgelagerte Analyse wird standardisiert.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Windows 2016 oder höher oder Linux-Host mit systemd
- Wenn die Ausführung hinter einem Proxy erfolgt, sind die Firewallports geöffnet.
- Privilegierter Zugriff auf Darktrace
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie SIEM-Einstellungen > Collection Agents auf.
- Laden Sie die Authentifizierungsdatei für die Aufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps-Konsole an.
- Rufen Sie die SIEM-Einstellungen > „Profil“ auf.
- Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Fenstereinbau
- Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i `https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi` /quiet
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
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
Zusätzliche Installationsressourcen
Weitere Installationsoptionen finden Sie im Installationsleitfaden.
BindPlane-Agent zum Erfassen von Syslog-Daten und Senden an Google SecOps konfigurieren
- Auf die Konfigurationsdatei zugreifen:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor (z. B.
nano
,vi
oder Notepad).
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so:receivers: tcplog: # Replace the port and IP address as required listen_address: `0.0.0.0:10282` 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: DARKTRACE raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
Ersetzen Sie
<customer_id>
durch die tatsächliche Kunden-ID.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
auf den Pfad, in dem die Authentifizierungsdatei im Abschnitt Google SecOps-Aufnahmeauthentifizierungsdatei abrufen gespeichert wurde.
Starten Sie den Bindlane-Agent neu, um die Änderungen zu übernehmen.
Führen Sie den folgenden Befehl aus, um den Bindplane-Agent unter Linux neu zu starten:
sudo systemctl restart bindplane-agent
Wenn Sie den Bindplane-Agent unter Windows neu starten möchten, können Sie entweder die Konsole Dienste verwenden oder den folgenden Befehl eingeben:
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog auf Darktrace konfigurieren
- Melden Sie sich in der Darktrace-Web-UI an.
- Klicken Sie auf Admin > Systemkonfiguration.
- Klicken Sie auf Benachrichtigungseinstellungen bestätigen.
- 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-Serverport: Geben Sie die BindPlane-Portnummer ein, z. B.
10282
. - CEF Syslog TCP Alert: Wählen Sie True aus.
- Klicken Sie auf Speichern.
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. |
description | 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. |
Endpunkt | 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. |
Methode | 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 gesetzt. |
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 | 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 den Wert 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 den Wert logged into \\\\S+ over ssh enthält. |
|
security_result.category | Wird auf DATA_EXFILTRATION gesetzt, wenn issue_msg den Wert Exfiltration enthält. Wird auf NETWORK_MALICIOUS gesetzt, wenn issue_msg den Wert Compromise enthält. Andernfalls legen Sie NETWORK_SUSPICIOUS fest. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten