CrowdStrike Falcon-Streamprotokolle erfassen
In diesem Dokument wird beschrieben, wie Sie CrowdStrike Falcon-Stream-Logs mit Bindplane erfassen. Der Parser extrahiert Schlüssel/Wert-Paare und ordnet sie dem Unified Data Model (UDM) zu. Dabei werden verschiedene Trennzeichen berücksichtigt und die Daten um zusätzlichen Kontext wie Schweregrad und Ereignistypen ergänzt. Außerdem werden bestimmte Transformationen für bestimmte Ereignistypen und Felder durchgeführt, z. B. für Nutzeranmeldungen und Sicherheitsergebnisse.
Vorbereitung
- Sie benötigen eine Google Security Operations-Instanz.
- Sie müssen Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
- Sie benötigen Lese- und Schreibzugriff auf die CrowdStrike Falcon-Konsole.
- API-Anmeldedaten für Falcon Stream abrufen (Client-ID und Client-Secret)
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
- Lade die Datei für die Datenaufnahmeauthentifizierung 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 Console an.
- Gehen Sie zu SIEM-Einstellungen > Profil.
- Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.
BindPlane-Agent installieren
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder die 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 in diesem Installationsleitfaden.
Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet
Rufen Sie die Konfigurationsdatei auf:
- Suchen Sie die Datei
config.yaml
. Unter Linux befindet es sich normalerweise im Verzeichnis/etc/Bindplane-agent/
, 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:54525" 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: SYSLOG namespace: cs_stream 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 Kundennummer. - Aktualisieren Sie
/path/to/ingestion-authentication-file.json
im Abschnitt Authentifizierungsdatei für die Datenaufnahme von Google SecOps abrufen auf den Pfad, unter dem die Authentifizierungsdatei gespeichert wurde.
Bindplane-Agent neu starten, um die Änderungen anzuwenden
Führen Sie den folgenden Befehl aus, um den Bindplane-Agenten unter Linux neu zu starten:
sudo systemctl restart Bindplane-agent
Sie können den Bindplane-Agenten unter Windows entweder über die Konsole Dienste oder über den folgenden Befehl neu starten:
net stop BindplaneAgent && net start BindplaneAgent
CrowdStrike API-Schlüssel konfigurieren und abrufen
- Melden Sie sich mit einem Konto mit Berechtigungen in CrowdStrike Falcon an.
- Gehen Sie zu Menü > Support.
- Klicken Sie auf API-Clients > KeysSelect.
- Klicken Sie auf Neuen API-Client hinzufügen.
- Wählen Sie im Abschnitt API-Bereiche die Option Ereignisstreams aus und aktivieren Sie dann die Option Lesen.
- Klicken Sie auf Hinzufügen.
- Kopieren und speichern Sie die Client-ID, das Client-Secret und die Basis-URL.
Falcon SIEM Connector installieren
- Laden Sie das RPM-Installationspaket für Ihr Betriebssystem herunter.
Paketinstallation:
CentOS-Betriebssystem:
sudo rpm -Uvh <installer package>
Ubuntu-Betriebssystem:
sudo dpkg -i <installer package>
Standardinstallationsverzeichnisse:
- Falcon SIEM Connector –
/opt/crowdstrike/
- Dienst:
/etc/init.d/cs.falconhoseclientd/
.
- Falcon SIEM Connector –
SIEM-Connector so konfigurieren, dass Ereignisse an Bindplane weitergeleitet werden
- Melden Sie sich auf dem Computer mit installiertem SIEM Connector als
sudo
-Nutzer an. - Wechseln Sie zum Verzeichnis
/opt/crowdstrike/etc/
. - Benennen Sie
cs.falconhoseclient.leef.cfg
incs.falconhoseclient.cfg
um.- Der SIEM-Connector verwendet standardmäßig die
cs.falconhoseclient.cfg
-Konfiguration.
- Der SIEM-Connector verwendet standardmäßig die
- Bearbeiten Sie die Datei
cs.falconhoseclient.cfg
und ändern oder legen Sie die folgenden Parameter fest:api_url:
: Ihre CrowdStrike Falcon-Basis-URL, die Sie aus dem vorherigen Schritt kopiert haben.app_id:
: beliebiger String als Kennung für die Verbindung zur Falcon Streaming API; z. B.app_id: SECOPS-LEEF
client_id:
: Der Wertclient_id
, der aus dem vorherigen Schritt kopiert wurde.client_secret:
: Der Wertclient_secret
, der aus dem vorherigen Schritt kopiert wurde.send_to_syslog_server: true
– Push-Nachrichten an den Syslog-Server aktivieren.host:
: Die IP-Adresse oder der Hostname des Bindplane-Agents.port:
: Der Port des BindPlane-Agents.
- Speichern Sie die Datei
cs.falconhoseclient.cfg
. Starten Sie den SIEM-Connector-Dienst:
CentOS-Betriebssystem:
sudo service cs.falconhoseclientd start
Betriebssystem Ubuntu 16.04 oder höher:
sudo systemctl start cs.falconhoseclientd.service
Optional: Beenden Sie den SIEM Connector-Dienst:
CentOS-Betriebssystem:
sudo service cs.falconhoseclientd stop
Betriebssystem Ubuntu 16.04 oder höher:
sudo systemctl stop cs.falconhoseclientd.service
Optional: Starten Sie den SIEM Connector-Dienst neu:
CentOS-Betriebssystem:
sudo service cs.falconhoseclientd restart
Betriebssystem Ubuntu 16.04 oder höher:
sudo systemctl restart cs.falconhoseclientd.service
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
cat |
security_result.category_details |
Der Wert des Felds cat wird direkt dem Feld security_result.category_details zugeordnet. |
commandLine |
target.process.command_line |
Der Wert des Felds commandLine wird direkt dem Feld target.process.command_line zugeordnet. |
cs1 |
security_result.summary |
Wenn cs1Label „incidentType“ ist, wird der Wert von cs1 security_result.summary zugeordnet. Andernfalls wird es in security_result.detection_fields als Schlüssel/Wert-Paar mit dem Schlüssel aus cs1Label und dem Wert aus cs1 zugeordnet. |
cs1Label |
security_result.detection_fields.key |
Wird als Schlüssel in security_result.detection_fields verwendet, wenn cs1 kein Vorfalltyp ist. |
cs2 |
security_result.detection_fields.value |
Als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel aus cs2Label und dem Wert aus cs2 zugeordnet. |
cs2Label |
security_result.detection_fields.key |
Wird zusammen mit cs2 als Schlüssel in security_result.detection_fields verwendet. |
cs3 |
security_result.detection_fields.value |
Als Schlüssel/Wert-Paar in security_result.detection_fields mit dem Schlüssel aus cs3Label und dem Wert aus cs3 zugeordnet. |
cs3Label |
security_result.detection_fields.key |
Wird zusammen mit cs3 als Schlüssel in security_result.detection_fields verwendet. |
cs4 |
security_result.about.url |
Wenn cs4Label „falconHostLink“ ist, wird der Wert von cs4 auf security_result.about.url zugeordnet. Andernfalls wird es in security_result.detection_fields als Schlüssel/Wert-Paar mit dem Schlüssel aus cs4Label und dem Wert aus cs4 zugeordnet. |
cs4Label |
security_result.detection_fields.key |
Wird als Schlüssel in security_result.detection_fields verwendet, wenn cs4 kein falconHostLink ist. |
description |
metadata.description |
Der Wert des Felds description wird direkt dem Feld metadata.description zugeordnet. Ist das Feld leer, werden stattdessen incidentDescription , msg oder serviceName verwendet. |
devTime |
metadata.event_timestamp |
Der Wert des Felds devTime wird analysiert und dem Feld metadata.event_timestamp zugeordnet. |
deviceCustomDate1 |
metadata.event_timestamp |
Wenn devTime nicht vorhanden ist, wird der Wert des Felds deviceCustomDate1 analysiert und dem Feld metadata.event_timestamp zugeordnet. |
domain |
principal.administrative_domain |
Wird mit einem regulären Ausdruck aus dem Feld userName extrahiert und principal.administrative_domain zugeordnet. |
duser |
principal.user.userid |
Wenn vorhanden, überschreibt der Wert von duser das Feld usrName und wird dann zum Ausfüllen der Nutzerfelder verwendet. |
endpointName |
security_result.detection_fields.value |
In security_result.detection_fields als Schlüssel/Wert-Paar mit dem Schlüssel „endpointName“ zugeordnet. |
eventType |
metadata.product_event_type |
Der Wert des Felds eventType wird direkt dem Feld metadata.product_event_type zugeordnet. |
falconHostLink |
security_result.about.url |
Der Wert des Felds falconHostLink wird direkt dem Feld security_result.about.url zugeordnet. |
filePath |
target.process.file.full_path |
Der Wert des Felds filePath wird direkt dem Feld target.process.file.full_path zugeordnet. |
identityProtectionIncidentId |
security_result.detection_fields.value |
In security_result.detection_fields als Schlüssel/Wert-Paar mit dem Schlüssel „identityProtectionIncidentId“ zugeordnet. |
incidentDescription |
metadata.description |
Wenn description leer ist, wird der Wert des Felds incidentDescription dem Feld metadata.description zugeordnet. |
incidentType |
security_result.summary |
Der Wert des Felds incidentType wird direkt dem Feld security_result.summary zugeordnet. |
log_type |
metadata.log_type |
Der Wert des Felds log_type wird direkt dem Feld metadata.log_type zugeordnet. |
msg |
metadata.description |
Wenn description und incidentDescription leer sind, wird der Wert des Felds msg dem Feld metadata.description zugeordnet. |
numbersOfAlerts |
security_result.detection_fields.value |
In security_result.detection_fields als Schlüssel/Wert-Paar mit dem Schlüssel „numbersOfAlerts“ zugeordnet. |
numberOfCompromisedEntities |
security_result.detection_fields.value |
In security_result.detection_fields als Schlüssel/Wert-Paar mit dem Schlüssel „numberOfCompromisedEntities“ zugeordnet. |
product |
metadata.product_name |
Der Wert des Felds product wird direkt dem Feld metadata.product_name zugeordnet. |
resource |
target.resource.name |
Der Wert des Felds resource wird direkt dem Feld target.resource.name zugeordnet. |
serviceName |
target.application |
Der Wert des Felds serviceName wird direkt dem Feld target.application zugeordnet. Wird auch als Fallback für metadata.description verwendet. |
severityName |
security_result.severity |
Der Wert des Felds severityName wird nach Umwandlung in Großbuchstaben dem Feld security_result.severity zugeordnet. Die Zuordnungslogik umfasst bestimmte Conversions für verschiedene Schweregradnamen. |
sha256 |
target.file.sha256 |
Der Wert des Felds sha256 wird direkt dem Feld target.file.sha256 zugeordnet. |
src |
principal.ip |
Der Wert des Felds src wird direkt dem Feld principal.ip zugeordnet. |
srcMAC |
principal.mac |
Der Wert des Felds srcMAC wird direkt auf das Feld principal.mac abgebildet, nachdem Bindestriche durch Doppelpunkte ersetzt wurden. |
state |
security_result.detection_fields.value |
In security_result.detection_fields als Schlüssel/Wert-Paar mit dem Schlüssel „status“ zugeordnet. |
success |
security_result.action |
Wenn success „wahr“ ist, wird security_result.action auf „ZULASSEN“ gesetzt. Wenn success „false“ ist, wird security_result.action auf „BLOCK“ gesetzt. |
userName |
principal.user.userid |
Wenn usrName nicht vorhanden ist, wird der Wert des Felds userName zum Ausfüllen der Nutzerfelder verwendet. Die Domain wird extrahiert, sofern vorhanden. |
usrName |
principal.user.userid /target.user.userid |
Falls vorhanden, wird der Wert des Felds usrName je nach eventType entweder principal.user.userid oder target.user.userid zugeordnet. Wenn es sich um eine E-Mail-Adresse handelt, wird sie auch dem entsprechenden email_addresses -Feld hinzugefügt. |
vendor |
metadata.vendor_name |
Der Wert des Felds vendor wird direkt dem Feld metadata.vendor_name zugeordnet. |
version |
metadata.product_version |
Der Wert des Felds version wird direkt dem Feld metadata.product_version zugeordnet. |
(Parser Logic) | extensions.auth.mechanism |
Legen Sie „USERNAME_PASSWORD“ fest, wenn eventType „saml2Assert“ oder „twoFactorAuthenticate“ ist. |
(Parser Logic) | extensions.auth.type |
Legen Sie „AUTHTYPE_UNSPECIFIED“ fest, wenn eventType „assert“ oder „userAuthenticate“ ist. |
(Parser Logic) | metadata.event_timestamp |
Der Zeitstempel aus dem Feld collection_time oder timestamp des Rohlogs wird als Ereigniszeitstempel verwendet. |
(Parser Logic) | metadata.event_type |
Wird anhand des Felds eventType und anderer Felder ermittelt. Standardmäßig ist „GENERIC_EVENT“ festgelegt. Es kann aber auch in „USER_LOGIN“, „GROUP_MODIFICATION“, „GROUP_DELETION“, „SERVICE_STOP“, „SERVICE_START“ oder „USER_UNCATEGORIZED“ geändert werden. |
(Parser Logic) | target.resource.type |
Legen Sie „GRUPPE“ fest, wenn eventType „remove_group“, „update_group“ oder „delete_group“ ist. |
Änderungen
2025-01-10
Optimierung:
- Wenn „OperationBlocked“ „true“ ist, wird „security_result.action“ mit „BLOCK“ abgeglichen.
- Wenn „OperationBlocked“ den Wert „false“ hat, wird „security_result.action“ mit „ALLOW“ abgeglichen.
- Wenn „event_type“ „IdentityProtectionEvent“ ist, wird „event_data.IncidentDescription“ mit „security_result.summary“ abgeglichen.
- Wenn „event_type“ „IdentityProtectionEvent“ ist, wird „event_data.SeverityName“ mit „security_result.severity“ abgeglichen.
2025-01-09
Optimierung:
- „event_data.Technique“ wurde in „security_result.rule_name“ umgewandelt.
- „event_data.CommandLine“ wurde „target.process.command_line“ zugeordnet.
- Wenn „event_data.IOCType“ den Wert „ipv4“ hat, wird „event_data.IOCValue“ mit „target.ip“ und „target.asset.ip“ abgeglichen.
- Wenn „event_data.IOCType“ „hash_sha256“ ist, wird „event_data.IOCValue“ mit „target.file.sha256“ abgeglichen.
2024-12-12
Optimierung:
- „event.SeverityName“ wurde „security_result.severity“ zugeordnet.
- „event.Description“ wurde „security_result.summary“ zugeordnet.
- „security_result.action“ wurde anhand von „event.PatternDispositionFlags.OperationBlocked“ zugeordnet.
2024-10-29
Optimierung:
- Unterstützung für das JSON-Format von Protokollen hinzugefügt.
- „request“ wurde „network.http.referral_url“ zugeordnet.
- „networkDetectionType“ wurde in „security_result.detection_fields“ umgewandelt.
2022-07-18
Optimierung:
- Die folgende Zuordnung für Protokolle im LEEF-Format wurde hinzugefügt:
- Das Feld „version“ ist „metadata.product_version“ zugeordnet.
- Die Felder „usrName“ und „userName“ werden „principal.user.email_addresses“ zugeordnet, wenn es sich um eine E-Mail-Adresse handelt, andernfalls „principal.user.userid“.
- Das Feld „severityName“ wurde „security_result.severity“ zugeordnet.
- Das Feld „cat“ ist „security_result.category_details“ zugeordnet.
- Das Feld „incidentType“ ist „security_result.summary“ zugeordnet.
- Das Feld „falconHostLink“ ist „security_result.about.url“ zugeordnet.
- Das Feld „numberOfCompromisedEntities“ ist „security_result.detection_fields[n]“ zugeordnet.
- Das Feld „identityProtectionIncidentId“ wurde „security_result.detection_fields[n]“ zugeordnet.
- Das Feld „numbersOfAlerts“ ist „security_result.detection_fields[n]“ zugeordnet.
- Das Feld „state“ ist „security_result.detection_fields[n]“ zugeordnet.
- Die folgende Zuordnung für CEF-Format-Protokolle wurde hinzugefügt:
- Das Feld „version“ ist „metadata.product_version“ zugeordnet.
- Das Feld „deviceCustomDate1“ ist auf „metadata.event_type“ zugeordnet.
- Das Feld „msg“ ist mit „metadata.description“ verknüpft.
- Das Feld „cs1“ wird „security_result.summary“ zugeordnet, wenn der Wert von „cs1Label“ „incidentType“ ist, andernfalls „security_result.detection_fields[n]“.
- Das Feld „cs2“ ist mit „security_result.detection_fields[n]“ verknüpft.
- Das Feld „cs3“ ist mit „security_result.detection_fields[n]“ verknüpft.
- Das Feld „cs1“ wird „security_result.about.url“ zugeordnet, wenn der Wert von „cs4Label“ „falconHostLink“ ist, andernfalls „security_result.detection_fields[n]“.
- Das Feld „cn1“ ist mit „security_result.detection_fields[n]“ verknüpft.
- Das Feld „cn2“ ist „security_result.detection_fields[n]“ zugeordnet.
- Das Feld „cn3“ ist mit „security_result.detection_fields[n]“ verknüpft.
- Das Feld „duser“ wird „principal.user.email_addresses“ zugeordnet, wenn es sich um eine E-Mail-Adresse handelt, andernfalls „principal.user.userid“.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten