Raccogliere i log di CrowdStrike Falcon Stream

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 nel modello Unified Data Model (UDM), gestendo diversi delimitatori e arricchendo i dati con un contesto aggiuntivo, come gravità e tipi di eventi. Esegue anche trasformazioni specifiche per determinati tipi di eventi e campi, ad esempio accessi utente e risultati di sicurezza.

Prima di iniziare

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

Recuperare il file di autenticazione importazione di Google SecOps

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

Recuperare 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 aggiuntive per l'installazione

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 questo 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 > Seleziona chiavi.
  4. Fai clic su Aggiungi nuovo client API.
  5. Nella sezione Ambiti API, seleziona Stream di eventi e poi attiva l'opzione Lettura.
  6. Fai clic su Aggiungi.
  7. Copia e salva l'ID client, il client secret e l'URL di base.

Installare 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 con SIEM Connector installato come utente sudo.
  2. Vai alla directory /opt/crowdstrike/etc/.
  3. Rinomina cs.falconhoseclient.leef.cfg in cs.falconhoseclient.cfg.
    • SIEM Connector 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 di base di CrowdStrike Falcon copiato dal passaggio precedente.
    • app_id:: qualsiasi stringa come identificatore per la connessione all'API Falcon Streaming; ad esempio, impostala 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) Arresta 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 Logic
cat security_result.category_details Il valore del campo cat viene mappato direttamente al campo security_result.category_details.
commandLine target.process.command_line Il valore del campo commandLine viene 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 Utilizzato 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 Utilizzato 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 viene 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 viene mappato direttamente al campo metadata.product_event_type.
falconHostLink security_result.about.url Il valore del campo falconHostLink viene mappato direttamente al campo security_result.about.url.
filePath target.process.file.full_path Il valore del campo filePath viene 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 viene mappato direttamente al campo security_result.summary.
log_type metadata.log_type Il valore del campo log_type viene 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 viene mappato direttamente al campo metadata.product_name.
resource target.resource.name Il valore del campo resource viene mappato direttamente al campo target.resource.name.
serviceName target.application Il valore del campo serviceName viene mappato direttamente al campo target.application. Utilizzato anche come fallback per metadata.description.
severityName security_result.severity Il valore del campo severityName viene mappato al campo security_result.severity dopo essere stato convertito in maiuscolo. La logica di mappatura include conversioni specifiche per diversi nomi di gravità.
sha256 target.file.sha256 Il valore del campo sha256 viene mappato direttamente al campo target.file.sha256.
src principal.ip Il valore del campo src viene mappato direttamente al campo principal.ip.
srcMAC principal.mac Il valore del campo srcMAC viene mappato direttamente al campo principal.mac dopo aver sostituito i 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, viene utilizzato il valore del campo userName per compilare i campi utente. Il dominio viene estratto, se presente.
usrName principal.user.userid/target.user.userid Se presente, il valore del campo usrName viene mappato su 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 viene mappato direttamente al campo metadata.vendor_name.
version metadata.product_version Il valore del campo version viene mappato direttamente al campo metadata.product_version.
(Parser Logic) extensions.auth.mechanism Imposta il valore "USERNAME_PASSWORD" se eventType è "saml2Assert" o "twoFactorAuthenticate".
(Parser Logic) extensions.auth.type Imposta "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 a 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 "GROUP" se eventType è "remove_group", "update_group" o "delete_group".

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