CrowdStrike Falcon-Streamprotokolle erfassen

Unterstützt in:

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

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
  3. 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

  1. Melden Sie sich in der Google SecOps Console an.
  2. Gehen Sie zu SIEM-Einstellungen > Profil.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

Windows-Installation

  1. Öffnen Sie die Eingabeaufforderung oder die 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
    

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
    

Zusätzliche Installationsressourcen

Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet

  1. 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.
  2. Bearbeiten Sie die Datei config.yamlso:

    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

  1. Melden Sie sich mit einem Konto mit Berechtigungen in CrowdStrike Falcon an.
  2. Gehen Sie zu Menü > Support.
  3. Klicken Sie auf API-Clients > KeysSelect.
  4. Klicken Sie auf Neuen API-Client hinzufügen.
  5. Wählen Sie im Abschnitt API-Bereiche die Option Ereignisstreams aus und aktivieren Sie dann die Option Lesen.
  6. Klicken Sie auf Hinzufügen.
  7. Kopieren und speichern Sie die Client-ID, das Client-Secret und die Basis-URL.

Falcon SIEM Connector installieren

  1. Laden Sie das RPM-Installationspaket für Ihr Betriebssystem herunter.
  2. Paketinstallation:

    • CentOS-Betriebssystem:

      sudo rpm -Uvh <installer package>
      
    • Ubuntu-Betriebssystem:

      sudo dpkg -i <installer package>
      
  3. Standardinstallationsverzeichnisse:

    • Falcon SIEM Connector – /opt/crowdstrike/
    • Dienst: /etc/init.d/cs.falconhoseclientd/.

SIEM-Connector so konfigurieren, dass Ereignisse an Bindplane weitergeleitet werden

  1. Melden Sie sich auf dem Computer mit installiertem SIEM Connector als sudo-Nutzer an.
  2. Wechseln Sie zum Verzeichnis /opt/crowdstrike/etc/.
  3. Benennen Sie cs.falconhoseclient.leef.cfg in cs.falconhoseclient.cfg um.
    • Der SIEM-Connector verwendet standardmäßig die cs.falconhoseclient.cfg-Konfiguration.
  4. 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 Wert client_id, der aus dem vorherigen Schritt kopiert wurde.
    • client_secret:: Der Wert client_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.
  5. Speichern Sie die Datei cs.falconhoseclient.cfg.
  6. 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
      
  7. 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
      
  8. 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