Carbon Black-EDR-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Carbon Black EDR-Logs aus Cloud- und On-Premise-Umgebungen mit AWS S3 erfassen. Der Parser extrahiert Felder aus JSON-, CSV- oder syslog-formatierten Nachrichten, normalisiert sie und ordnet sie dem UDM zu. Es verarbeitet verschiedene Carbon Black-Ereignistypen, einschließlich Netzwerkverbindungen, Prozessereignisse, Dateiänderungen, Registrierungsänderungen und IOC-Treffer, und ergänzt die Daten nach Möglichkeit mit Informationen zu Bedrohungsinformationen und Geräten.
Hinweise
Folgende Voraussetzungen müssen erfüllt sein:
- Eine konfigurierte Google SecOps-Instanz
- Berechtigter Zugriff auf AWS IAM und S3
- Berechtigter Zugriff auf Carbon Black EDR in der Cloud oder lokal
Carbon Black EDR On-Premises konfigurieren
Amazon S3-Bucket für On-Premise-Umgebungen konfigurieren
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: Bucket erstellen.
- Speichern Sie den Namen und die Region des Buckets für später.
- Erstellen Sie einen Nutzer gemäß der Anleitung IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Bereich Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
- Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
- Klicken Sie auf Weiter.
- Optional: Fügen Sie ein Beschreibungs-Tag hinzu.
- Klicken Sie auf Zugriffsschlüssel erstellen.
- Klicken Sie auf CSV-Datei herunterladen, um den Zugriffsschlüssel und den Secret Access Key zur späteren Verwendung zu speichern.
- Klicken Sie auf Fertig.
- Wählen Sie den Tab Berechtigungen aus.
- Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
- Wählen Sie Berechtigungen hinzufügen aus.
- Wählen Sie Richtlinien direkt anhängen aus.
- Suchen Sie nach der Richtlinie AmazonS3FullAccess und wählen Sie sie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
cb-event-forwarder auf On-Premise-EDR-Server installieren
Installieren Sie das CbOpenSource-Repository, falls es noch nicht vorhanden ist:
cd /etc/yum.repos.d curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
Installieren Sie das RPM mit YUM:
yum install cb-event-forwarder
Wenn Sie EDR 7.1.0 oder höher verwenden, führen Sie das folgende Script aus, um die entsprechenden Berechtigungen für EDR festzulegen:
/usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
cb-event-forwarder für die Ausgabe von JSON-Protokollen konfigurieren
Öffnen Sie die Konfigurationsdatei:
sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
Ändern Sie die folgenden Parameter:
[event_forwarder] output_format=json # Enable JSON format output_type=s3 # Send logs to AWS S3 s3_bucket_name=YOUR-S3-BUCKET-NAME s3_region=YOUR-S3-BUCKET-NAME s3_access_key_id=YOUR_AWS_ACCESS_KEY s3_secret_access_key=YOUR_AWS_SECRET_KEY s3_prefix=carbonblack/edr/logs
So speichern und schließen Sie die Datei über die Tastatur:
- Strg + X, dann Y und die Eingabetaste.
Starten Sie cb-event-forwarder:
sudo systemctl enable cb-event-forwarder sudo systemctl restart cb-event-forwarder sudo systemctl status cb-event-forwarder
Carbon Black Cloud Event Forwarder für S3 konfigurieren
AWS S3-Bucket erstellen
- Melden Sie sich in der AWS Management Console an.
- Achten Sie darauf, dass die AWS-Region mit der Region des Ereignis-Forwarders übereinstimmt:
- Suchen Sie auf der Seite AWS Console nach der Region.
- Wählen Sie im Drop-down-Menü die richtige Region für den Ereignis-Forwarder aus.
- In der folgenden Liste finden Sie die entsprechende AWS-Region für jede Carbon Black EDR-URL.
- „instance-alias“.my.carbonblack.io – Region: USA Ost (N. Virginia) (us-east-1)
- „instance-alias“.my.cbcloud.de – Region: Europa (Frankfurt) (eu-central-1)
- „instance-alias“.my.cbcloud.sg Region: Asiatisch-pazifischer Raum (Singapur) (ap-southeast-1)
- Wählen Sie Dienste aus.
- Rufen Sie die S3-Konsole auf.
- Klicken Sie auf Bucket erstellen, um den Assistenten Bucket erstellen zu öffnen.
- Geben Sie unter Bucket-Name einen eindeutigen Namen für den Bucket ein, z. B. CB-EDR.
- Achten Sie darauf, dass die Region standardmäßig die Region ist, die Sie zuvor ausgewählt haben.
- Aktualisieren Sie die Standardeinstellungen für die Blockierung des öffentlichen Zugriffs, um den öffentlichen Zugriff zuzulassen. Dies ist erforderlich, um die Protokolle in Google SecOps zu importieren.
- Wählen Sie Bucket erstellen aus.
S3-Bucket so konfigurieren, dass der Ereignisweiterleiter Ereignisse schreiben kann
- Erstellen Sie einen Nutzer. Folgen Sie dazu der Anleitung unter IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Bereich Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
- Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
- Klicken Sie auf Weiter.
- Optional: Fügen Sie ein Beschreibungs-Tag hinzu.
- Klicken Sie auf Zugriffsschlüssel erstellen.
- Klicken Sie auf CSV-Datei herunterladen, um den Zugriffsschlüssel und den Secret Access Key zur späteren Verwendung zu speichern.
- Klicken Sie auf Fertig.
- Wählen Sie den Tab Berechtigungen aus.
- Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
- Wählen Sie Berechtigungen hinzufügen aus.
- Wählen Sie Richtlinien direkt anhängen aus.
- Suchen Sie nach der Richtlinie AmazonS3FullAccess.
- Wählen Sie die Richtlinie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
Weiterleitung von Ereignissen in der EDR Console konfigurieren
- Melden Sie sich in VMware Carbon Black Cloud an.
- Rufen Sie den Tab Ereignisweiterleiter auf.
- Aktivieren Sie die Ereignisse, die das Produkt in S3 hochladen soll.
- Wähle unter Ausgabe und Typ die Option S3 aus.
- Geben Sie den S3-Bucket-Namen im folgenden Format an:
<region>:<bucket-name>
(z. B.us-east-1:cb-edr
). - Wählen Sie die Datei AWS-Anmeldedaten hochladen im INI-Format aus.
Hier ein Beispiel für ein Profil:
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1
Klicken Sie auf Speichern und starten Sie den Dienst neu, damit die Änderungen wirksam werden.
Feed in Google SecOps für die Aufnahme der Carbon Black EDR-Protokolle konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Carbon Black EDR-Logs.
- Wählen Sie als Quelltyp Amazon S3 aus.
- Wählen Sie Carbon Black EDR als Logtyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Region: die Region, in der sich der Amazon S3-Bucket befindet.
- S3-URI: der Bucket-URI.
s3:/BUCKET_NAME
- Ersetzen Sie
BUCKET_NAME
durch den tatsächlichen Namen des Buckets.
- Ersetzen Sie
- URI ist: Wählen Sie den URI_TYPE gemäß der Logstream-Konfiguration aus (Einzelne Datei | Verzeichnis | Verzeichnis mit Unterverzeichnissen).
- Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
- Zugriffsschlüssel-ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
- Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.
- Asset-Namespace: der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
action |
security_result.detection_fields[?key == 'action'].value |
Der Wert des Felds action aus dem Rohprotokoll. |
cb_server |
intermediary.hostname |
Der Wert des Felds cb_server aus dem Rohprotokoll. |
cb_version |
metadata.product_version |
Der Wert des Felds cb_version aus dem Rohprotokoll. |
child_pid |
target.process.pid (für ingress.event.childproc -Ereignisse) |
Der Wert des Felds child_pid aus dem Rohprotokoll, wenn type = ingress.event.childproc . |
child_process_guid |
target.process.product_specific_process_id (für ingress.event.childproc -Ereignisse) |
„CB:“, verkettet mit dem Wert des Felds child_process_guid aus dem Rohprotokoll, wenn type ingress.event.childproc ist. |
child_username |
target.user.userid (für ingress.event.childproc -Ereignisse) |
Der Wert des Felds child_username aus dem Rohprotokoll, wenn type = ingress.event.childproc . |
childproc_guid |
target.process.product_specific_process_id (für endpoint.event.procstart -Ereignisse) |
„CB:“, verkettet mit dem Wert des Felds childproc_guid aus dem Rohprotokoll, wenn type endpoint.event.procstart ist. |
childproc_hash.0 |
target.process.file.md5 (für endpoint.event.procstart -Ereignisse) |
Das erste Element des childproc_hash -Arrays aus dem Rohprotokoll, wenn type = endpoint.event.procstart ist. |
childproc_hash.1 |
target.process.file.sha256 (für endpoint.event.procstart -Ereignisse) |
Das zweite Element des childproc_hash -Arrays aus dem Rohprotokoll, wenn type = endpoint.event.procstart ist. |
childproc_name |
target.process.file.full_path (für endpoint.event.procstart -Ereignisse) |
Der Wert des Felds childproc_name aus dem Rohprotokoll, wenn type = endpoint.event.procstart . |
childproc_pid |
target.process.pid (für endpoint.event.procstart -Ereignisse) |
Der Wert des Felds childproc_pid aus dem Rohprotokoll, wenn type = endpoint.event.procstart . |
childproc_publisher.0.name |
security_result.detection_fields[?key == 'childproc_publisher_name'].value (für endpoint.event.procstart -Ereignisse) |
„childproc_publisher_name:“, zusammengesetzt mit dem Wert von childproc_publisher.0.name aus dem Rohprotokoll, wenn type = endpoint.event.procstart ist. |
childproc_publisher.0.state |
security_result.detection_fields[?key == 'childproc_publisher_state'].value (für endpoint.event.procstart -Ereignisse) |
„childproc_publisher_state:“, zusammengesetzt mit dem Wert von childproc_publisher.0.state aus dem Rohprotokoll, wenn type endpoint.event.procstart ist. |
childproc_reputation |
security_result.detection_fields[?key == 'childproc_reputation'].value (für endpoint.event.procstart -Ereignisse) |
Der Wert des Felds childproc_reputation aus dem Rohprotokoll, wenn type = endpoint.event.procstart . |
childproc_username |
target.user.userid (für endpoint.event.procstart -Ereignisse) |
Der Wert des Felds childproc_username aus dem Rohprotokoll, wenn type = endpoint.event.procstart . |
clientIp |
principal.ip , principal.asset.ip |
Der Wert des Felds clientIp aus dem Rohprotokoll. |
cmdline |
target.process.command_line (für feed.query.hit.process - und feed.storage.hit.process -Ereignisse), additional.fields[?key == 'cmdline_*'].value.string_value (für watchlist.storage.hit.process -Ereignisse) |
Der Wert des Felds cmdline aus dem Rohprotokoll, wenn type feed.query.hit.process oder feed.storage.hit.process ist. Bei watchlist.storage.hit.process -Ereignissen wird sie in additional.fields mit dem Schlüssel „cmdline_*“ gespeichert. |
command_line |
target.process.command_line (für ingress.event.procstart -Ereignisse) |
Der Wert des Felds command_line aus dem Rohprotokoll, wenn type = ingress.event.procstart . |
comms_ip |
intermediary.ip |
Der Wert des Felds comms_ip aus dem Rohprotokoll. |
computer_name |
principal.hostname , principal.asset.hostname |
Der Wert des Felds computer_name aus dem Rohprotokoll. |
crossproc_api |
additional.fields[?key == 'crossproc_api'].value.string_value (für endpoint.event.apicall -Ereignisse) |
Der Wert des Felds crossproc_api aus dem Rohprotokoll, wenn type = endpoint.event.apicall . |
crossproc_guid |
additional.fields[?key == 'crossproc_guid'].value.string_value (für endpoint.event.crossproc -Ereignisse) |
Der Wert des Felds crossproc_guid aus dem Rohprotokoll, wenn type = endpoint.event.crossproc . |
crossproc_hash.0 |
additional.fields[?key == 'crossproc_md5'].value.string_value (für endpoint.event.crossproc -Ereignisse) |
Das erste Element des crossproc_hash -Arrays aus dem Rohprotokoll, wenn type = endpoint.event.crossproc ist. |
crossproc_hash.1 |
additional.fields[?key == 'crossproc_sha256'].value.string_value (für endpoint.event.crossproc -Ereignisse) |
Das zweite Element des crossproc_hash -Arrays aus dem Rohprotokoll, wenn type = endpoint.event.crossproc ist. |
crossproc_name |
target.process.file.full_path (für endpoint.event.crossproc -Ereignisse) |
Der Wert des Felds crossproc_name aus dem Rohprotokoll, wenn type = endpoint.event.crossproc . |
crossproc_publisher.0.name |
security_result.detection_fields[?key == 'crossproc_publisher_name'].value (für endpoint.event.crossproc -Ereignisse) |
„crossproc_publisher_name:“, zusammengesetzt mit dem Wert von crossproc_publisher.0.name aus dem Rohprotokoll, wenn type endpoint.event.crossproc ist. |
crossproc_publisher.0.state |
security_result.detection_fields[?key == 'crossproc_publisher_state'].value (für endpoint.event.crossproc -Ereignisse) |
„crossproc_publisher_state:“, zusammengesetzt mit dem Wert von crossproc_publisher.0.state aus dem Rohprotokoll, wenn type endpoint.event.crossproc ist. |
crossproc_reputation |
additional.fields[?key == 'crossproc_reputation'].value.string_value (für endpoint.event.crossproc -Ereignisse) |
Der Wert des Felds crossproc_reputation aus dem Rohprotokoll, wenn type = endpoint.event.crossproc . |
crossproc_target |
additional.fields[?key == 'crossproc_target'].value.string_value (für endpoint.event.crossproc -Ereignisse) |
Der Wert des Felds crossproc_target aus dem Rohprotokoll, wenn type = endpoint.event.crossproc . Wird in den String „true“ oder „false“ umgewandelt. |
Änderungen
2024-05-13
- Das Feld „alert_url“ wurde dem UDM-Feld „metadata.url_back_to_product“ zugeordnet.
2024-01-19
- Vor der Zuordnung wurde eine Null-Prüfung für „filemod_hash.0“ und „filemod_hash.1“ hinzugefügt.
2023-12-27
- „filemod_hash.0“ und „filemod_hash.1“ wurden auf „null“ initialisiert, um die nicht geparsten Protokolle zu parsen.
2023-10-26
- Die Funktion „gsub“ wurde hinzugefügt, um die nicht geparsten Felder zu parsen.
2023-10-13
- Neue JSON-Logs werden jetzt mit einem JSON-Block verarbeitet.
- Redundanter Code für die Felder „computer_name“, „parent_name“, „process_name“, „pid“, „process_path“, „md5“, „sha256“, „process_guid“, „parent_pid“, „docs.0.process_pid“, „cb_version“, „process_hash.0“, „process_hash.1“, „parent_hash.0“ und „parent_hash.1“ wurde entfernt.
2023-07-21
- MITRE ATT&CK-Taktiken und -Techniken wurden zu „security_result.attack_details“ hinzugefügt.
2023-03-24
- Das Feld „protocol“ wurde „network.ip_protocol“ zugeordnet.
- Bedingte Nullprüfung für die Felder „child_username“, „child_pid“ und „child_command_line“ hinzugefügt.
- „metadata.event_type“ wurde von „GENERIC_EVENT“ in „STATUS_UPDATE“ geändert, wenn „principal.hostname“ oder „principal.ip“ nicht null ist.
2023-03-14
- Fehlerkorrektur:
- Die folgenden Felder wurden zugeordnet, wenn das Feld „type“ den Wert „null“ hat:
- Das Feld „process_guid“ wurde „principal.process.product_specific_process_id“ zugeordnet.
- Das Feld „device_external_ip“ wurde „target.ip“ zugeordnet.
- Das Feld „device_os“ wurde „principal.platform“ zugeordnet.
- Das Feld „device_group“ wurde in „principal.group.group_display_name“ ummapped.
- Das Feld „process_pid“ wurde „principal.process.pid“ zugeordnet.
- Das Feld „process_path“ wurde „principal.process.file.full_path“ zugeordnet.
- Das Feld „process_cmdline“ wurde in „principal.process.command_line“ ummapped.
- Das Feld „process_hash.0“ wurde „principal.process.file.md5“ zugeordnet.
- Das Feld „principal.1“ wurde „principal.process.file.sha256“ zugeordnet.
- Das Feld „process_username“ wurde „principal.user.userid“ zugeordnet.
- Das Feld „clientIp“ wurde „principal.ip“ zugeordnet.
- Das Feld „description“ wurde „metadata.description“ zugeordnet.
- Das Feld „orgName“ wurde „principal.administrative_domain“ zugeordnet.
- Die folgenden Felder wurden zugeordnet, wenn das Feld „ruleName“ „CYDERES“ enthält:
- Das Feld „deviceInfo.internalIpAddress“ wurde „principal.ip“ zugeordnet.
- Das Feld „deviceInfo.externalIpAddress“ wurde „target.ip“ zugeordnet.
- Das Feld „ruleName“ wurde „security_result.rule_name“ zugeordnet.
- Das Feld „deviceInfo.deviceType“ wurde „principal.asset.platform_software.platform“ zugeordnet.
- Das Feld „domain“ wurde „principal.administrative_domain“ zugeordnet.
- Das Feld „deviceInfo.groupName“ wurde in „principal.group.group_display_name“ umgeordnet.
- Das Feld „deviceInfo.deviceVersion“ wurde in „principal.asset.platform_software.platform_version“ umgewandelt.
- Das Feld „deviceInfo.deviceId“ wurde „principal.asset.asset_id“ zugeordnet.
- Das Feld „eventId“ wurde „additional.fields“ zugeordnet.
- „metadata.event_type“ wurde von „GENERIC_EVENT“ in „NETWORK_CONNECTION“ geändert, wenn „principal.ip“ und „target.ip“ nicht null sind.
- „metadata.event_type“ wurde von „GENERIC_EVENT“ in „STATUS_UPDATE“ geändert, wenn „principal.ip“ nicht null ist.
2023-02-03
- Fehlerkorrektur: „filemod_hash“ wird jetzt auf „target.file“ und nicht mehr auf „target.process.file“ zugeordnet.
2023-01-20
- Fehlerbehebung: Die Produktspezifische Prozess-ID „product_specific_process_id“ wird nicht mehr für leere Prozess-IDs ausgefüllt und zugeordnet.
2022-11-25
- „remote_ip“ wurde für TCP/UDP-Ereignisse vom Typ „Inbound“ mit „principal.ip“ und „local_ip“ mit „target.ip“ verknüpft.
- „remote_port“ wurde für TCP/UDP-Ereignisse vom Typ „Inbound“ mit „principal.port“ und „local_port“ mit „target.port“ verknüpft.
2022-10-06
- Alle kundenspezifischen Parser wurden zum Standardparser migriert.
2022-07-10
- Die Zuordnung von „event_type“ zu „PROCESS_LAUNCH“ für Protokolle vom Typ „endpoint.event.'.“ wurde aktualisiert.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten