Raccogliere i log di Stream di CrowdStrike Falcon

Supportato in:

Questo documento spiega come raccogliere i log di CrowdStrike Falcon Stream utilizzando Bindplane. Il parser estrae le coppie chiave-valore e le mappa al modello di dati unificato (UDM), gestisce diversi delimitatori e arricchisce i dati con un contesto aggiuntivo, come la gravità e i tipi di eventi. Esegue inoltre trasformazioni specifiche per determinati tipi di eventi e campi, ad esempio gli accessi degli utenti e i risultati di sicurezza.

Prima di iniziare

  • Assicurati di avere un'istanza Google Security Operations.
  • Assicurati di utilizzare Windows 2016 o versioni successive o un host Linux con systemd.
  • Se il servizio è in esecuzione dietro un proxy, assicurati che le porte del firewall siano aperte.
  • Assicurati di disporre dell'accesso privilegiato alla console CrowdStrike Falcon.
  • Ottieni le credenziali API per Falcon Stream (ID cliente e client secret).

Recupera il file di autenticazione di importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.

Ottenere l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installazione di Windows

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/Bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installazione di Linux

  1. Apri un terminale con privilegi di root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/Bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Risorse di installazione aggiuntive

Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps

  1. Accedi al file di configurazione:

    • Individua il file config.yaml. In genere si trova nella directory /etc/Bindplane-agent/ su Linux o nella directory di installazione su Windows.
    • Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. Modifica il file config.yaml come segue:

    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
    
    

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux, esegui il seguente comando:

    sudo systemctl restart Bindplane-agent
    
  • Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:

    net stop BindplaneAgent && net start BindplaneAgent
    

Configurare e ottenere una chiave API CrowdStrike

  1. Accedi a CrowdStrike Falcon con un account con privilegi.
  2. Vai a Menu > Assistenza.
  3. Fai clic su Client API > KeysSelect.
  4. Fai clic su Aggiungi nuovo client API.
  5. Nella sezione Ambiti API, seleziona Stream di eventi e attiva l'opzione Lettura.
  6. Fai clic su Aggiungi.
  7. Copia e salva l'ID cliente, il client secret e l'URL di base.

Installa Falcon SIEM Connector

  1. Scarica il pacchetto di installazione RPM per il tuo sistema operativo.
  2. Installazione del pacchetto:

    • Sistema operativo CentOS:

      sudo rpm -Uvh <installer package>
      
    • Sistema operativo Ubuntu:

      sudo dpkg -i <installer package>
      
  3. Directory di installazione predefinite:

    • Falcon SIEM Connector - /opt/crowdstrike/.
    • Servizio: /etc/init.d/cs.falconhoseclientd/.

Configura il connettore SIEM per inoltrare gli eventi a Bindplane

  1. Accedi alla macchina su cui è installato SIEM Connector come utente sudo.
  2. Vai alla directory /opt/crowdstrike/etc/.
  3. Rinomina cs.falconhoseclient.leef.cfg in cs.falconhoseclient.cfg.
    • Il connettore SIEM utilizza la configurazione cs.falconhoseclient.cfg per impostazione predefinita.
  4. Modifica il file cs.falconhoseclient.cfg e modifica o imposta i seguenti parametri:
    • api_url:: l'URL base di CrowdStrike Falcon copiato dal passaggio precedente.
    • app_id:: qualsiasi stringa come identificatore per la connessione all'API Falcon Streaming; ad esempio, impostato su app_id: SECOPS-LEEF.
    • client_id:: il valore client_id copiato dal passaggio precedente.
    • client_secret:: il valore client_secret copiato dal passaggio precedente.
    • send_to_syslog_server: true - Attiva il push al server Syslog.
    • host:: l'IP o il nome host dell'agente Bindplane.
    • port:: la porta dell'agente Bindplane.
  5. Salva il file cs.falconhoseclient.cfg.
  6. Avvia il servizio SIEM Connector:

    • Sistema operativo CentOS:

      sudo service cs.falconhoseclientd start
      
    • Sistema operativo Ubuntu 16.04 o versioni successive:

      sudo systemctl start cs.falconhoseclientd.service
      
  7. (Facoltativo) Interrompi il servizio SIEM Connector:

    • Sistema operativo CentOS:

      sudo service cs.falconhoseclientd stop
      
    • Sistema operativo Ubuntu 16.04 o versioni successive:

      sudo systemctl stop cs.falconhoseclientd.service
      
  8. (Facoltativo) Riavvia il servizio SIEM Connector:

    • Sistema operativo CentOS:

      sudo service cs.falconhoseclientd restart
      
    • Sistema operativo Ubuntu 16.04 o versioni successive:

      sudo systemctl restart cs.falconhoseclientd.service
      

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
cat security_result.category_details Il valore del campo cat è mappato direttamente al campo security_result.category_details.
commandLine target.process.command_line Il valore del campo commandLine è mappato direttamente al campo target.process.command_line.
cs1 security_result.summary Se cs1Label è "incidentType", il valore di cs1 viene mappato a security_result.summary. In caso contrario, viene mappato come coppia chiave-valore in security_result.detection_fields con la chiave di cs1Label e il valore di cs1.
cs1Label security_result.detection_fields.key Utilizzato come chiave in security_result.detection_fields quando cs1 non è un tipo di incidente.
cs2 security_result.detection_fields.value Mappato come coppia chiave-valore in security_result.detection_fields con la chiave di cs2Label e il valore di cs2.
cs2Label security_result.detection_fields.key Utilizzata come chiave in security_result.detection_fields insieme a cs2.
cs3 security_result.detection_fields.value Mappato come coppia chiave-valore in security_result.detection_fields con la chiave di cs3Label e il valore di cs3.
cs3Label security_result.detection_fields.key Utilizzata come chiave in security_result.detection_fields insieme a cs3.
cs4 security_result.about.url Se cs4Label è "falconHostLink", il valore di cs4 viene mappato a security_result.about.url. In caso contrario, viene mappato come coppia chiave-valore in security_result.detection_fields con la chiave di cs4Label e il valore di cs4.
cs4Label security_result.detection_fields.key Utilizzato come chiave in security_result.detection_fields quando cs4 non è un falconHostLink.
description metadata.description Il valore del campo description è mappato direttamente al campo metadata.description. Se è vuoto, vengono utilizzati incidentDescription, msg o serviceName.
devTime metadata.event_timestamp Il valore del campo devTime viene analizzato e mappato al campo metadata.event_timestamp.
deviceCustomDate1 metadata.event_timestamp Se devTime non è presente, il valore del campo deviceCustomDate1 viene analizzato e mappato al campo metadata.event_timestamp.
domain principal.administrative_domain Estratto dal campo userName utilizzando un'espressione regolare e mappato a principal.administrative_domain.
duser principal.user.userid Se presente, il valore di duser sovrascrive il campo usrName e viene utilizzato per compilare i campi utente.
endpointName security_result.detection_fields.value Mappato come coppia chiave-valore in security_result.detection_fields con la chiave "endpointName".
eventType metadata.product_event_type Il valore del campo eventType è mappato direttamente al campo metadata.product_event_type.
falconHostLink security_result.about.url Il valore del campo falconHostLink è mappato direttamente al campo security_result.about.url.
filePath target.process.file.full_path Il valore del campo filePath è mappato direttamente al campo target.process.file.full_path.
identityProtectionIncidentId security_result.detection_fields.value Mappato come coppia chiave-valore in security_result.detection_fields con la chiave "identityProtectionIncidentId".
incidentDescription metadata.description Se description è vuoto, il valore del campo incidentDescription viene mappato al campo metadata.description.
incidentType security_result.summary Il valore del campo incidentType è mappato direttamente al campo security_result.summary.
log_type metadata.log_type Il valore del campo log_type è mappato direttamente al campo metadata.log_type.
msg metadata.description Se description e incidentDescription sono vuoti, il valore del campo msg viene mappato al campo metadata.description.
numbersOfAlerts security_result.detection_fields.value Mappato come coppia chiave-valore in security_result.detection_fields con la chiave "numbersOfAlerts".
numberOfCompromisedEntities security_result.detection_fields.value Mappato come coppia chiave-valore in security_result.detection_fields con la chiave "numberOfCompromisedEntities".
product metadata.product_name Il valore del campo product è mappato direttamente al campo metadata.product_name.
resource target.resource.name Il valore del campo resource è mappato direttamente al campo target.resource.name.
serviceName target.application Il valore del campo serviceName è mappato direttamente al campo target.application. Utilizzato anche come opzione di riserva per metadata.description.
severityName security_result.severity Il valore del campo severityName viene mappato al campo security_result.severity dopo essere stato scritto in maiuscolo. La logica di mappatura include conversioni specifiche per nomi di gravità diversi.
sha256 target.file.sha256 Il valore del campo sha256 è mappato direttamente al campo target.file.sha256.
src principal.ip Il valore del campo src è mappato direttamente al campo principal.ip.
srcMAC principal.mac Il valore del campo srcMAC viene mappato direttamente al campo principal.mac dopo la sostituzione dei trattini con i due punti.
state security_result.detection_fields.value Mappato come coppia chiave-valore in security_result.detection_fields con la chiave "state".
success security_result.action Se success è "true", security_result.action è impostato su "ALLOW". Se success è "false", security_result.action è impostato su "BLOCK".
userName principal.user.userid Se usrName non è presente, per compilare i campi utente viene utilizzato il valore del campo userName. Il dominio viene estratto, se presente.
usrName principal.user.userid/target.user.userid Se presente, il valore del campo usrName viene mappato a principal.user.userid o target.user.userid a seconda di eventType. Se si tratta di un indirizzo email, viene aggiunto anche al rispettivo campo email_addresses.
vendor metadata.vendor_name Il valore del campo vendor è mappato direttamente al campo metadata.vendor_name.
version metadata.product_version Il valore del campo version è mappato direttamente al campo metadata.product_version.
(Parser Logic) extensions.auth.mechanism Imposta su "USERNAME_PASSWORD" se eventType è "saml2Assert" o "twoFactorAuthenticate".
(Parser Logic) extensions.auth.type Impostato su "AUTHTYPE_UNSPECIFIED" se eventType è "assert" o "userAuthenticate".
(Parser Logic) metadata.event_timestamp Il timestamp del campo collection_time o timestamp del log non elaborato viene utilizzato come timestamp dell'evento.
(Parser Logic) metadata.event_type Determinato in base al campo eventType e ad altri campi. Il valore predefinito è "GENERIC_EVENT" e può essere modificato in "USER_LOGIN", "GROUP_MODIFICATION", "GROUP_DELETION", "SERVICE_STOP", "SERVICE_START" o "USER_UNCATEGORIZED".
(Parser Logic) target.resource.type Imposta su "GRUPPO" se eventType è "remove_group", "update_group" o "delete_group".

Modifiche

2025-01-10

Miglioramento:

  • Quando "OperationBlocked" è "true", "security_result.action" è mappato a "BLOCK".
  • Quando "OperationBlocked" è "false", mappa "security_result.action" a "ALLOW".
  • Quando "event_type" è "IdentityProtectionEvent", mappa "event_data.IncidentDescription" a "security_result.summary".
  • Quando "event_type" è "IdentityProtectionEvent", mappa "event_data.SeverityName" a "security_result.severity".

2025-01-09

Miglioramento:

  • "event_data.Technique" è stato mappato a "security_result.rule_name".
  • "event_data.CommandLine" è stato mappato a "target.process.command_line".
  • Se "event_data.IOCType" è "ipv4", mappa "event_data.IOCValue" a "target.ip" e "target.asset.ip".
  • Se "event_data.IOCType" è "hash_sha256", mappa "event_data.IOCValue" a "target.file.sha256".

2024-12-12

Miglioramento:

  • "event.SeverityName" è stato mappato a "security_result.severity".
  • "event.Description" è stato mappato a "security_result.summary".
  • "security_result.action" mappato in base a "event.PatternDispositionFlags.OperationBlocked".

2024-10-29

Miglioramento:

  • È stato aggiunto il supporto per il formato JSON dei log.
  • "request" è stato mappato a "network.http.referral_url".
  • "networkDetectionType" è stato mappato a "security_result.detection_fields".

2022-07-18

Miglioramento:

  • È stata aggiunta la seguente mappatura per i log nel formato LEEF:
  • Il campo "version" mappato a "metadata.product_version".
  • I campi "usrName" e "userName" a "principal.user.email_addresses" se si tratta di un'email, altrimenti mappati a "principal.user.userid".
  • Il campo "severityName" mappato a "security_result.severity".
  • Il campo "cat" mappato a "security_result.category_details".
  • Il campo "incidentType" mappato a "security_result.summary".
  • Il campo "falconHostLink" mappato a "security_result.about.url".
  • Il campo "numberOfCompromisedEntities" mappato a "security_result.detection_fields[n]".
  • Il campo "identityProtectionIncidentId" è stato mappato a "security_result.detection_fields[n]".
  • Il campo "numbersOfAlerts" mappato a "security_result.detection_fields[n]".
  • Il campo "state" mappato a "security_result.detection_fields[n]".
  • È stata aggiunta la seguente mappatura per i log nel formato CEF:
  • Il campo "version" mappato a "metadata.product_version".
  • Il campo "deviceCustomDate1" mappato a "metadata.event_type".
  • Il campo "msg" mappato a "metadata.description".
  • Il campo "cs1" mappato a "security_result.summary" se il valore di "cs1Label" è "incidentType", altrimenti mappato a "security_result.detection_fields[n]".
  • Il campo "cs2" mappato a "security_result.detection_fields[n]".
  • Il campo "cs3" mappato a "security_result.detection_fields[n]".
  • Il campo "cs1" mappato a "security_result.about.url" se il valore di "cs4Label" è "falconHostLink", altrimenti mappato a "security_result.detection_fields[n]".
  • Il campo "cn1" è stato mappato a "security_result.detection_fields[n]".
  • Il campo "cn2" mappato a "security_result.detection_fields[n]".
  • Il campo "cn3" mappato a "security_result.detection_fields[n]".
  • Il campo "duser" a "principal.user.email_addresses" se si tratta di un'email, altrimenti mappato a "principal.user.userid".

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.