Raccogliere i log di Stream di CrowdStrike Falcon
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
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
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- 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
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installazione di Windows
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/Bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi di root o sudo.
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
- Per altre opzioni di installazione, consulta questa guida all'installazione.
Configura l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
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).
- Individua il file
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
- Sostituisci la porta e l'indirizzo IP come richiesto nella tua infrastruttura.
- Sostituisci
<customer_id>
con l'ID cliente effettivo. - Aggiorna
/path/to/ingestion-authentication-file.json
con il percorso in cui è stato salvato il file di autenticazione nella sezione Ottenere il file di autenticazione per l'importazione di Google SecOps.
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
- Accedi a CrowdStrike Falcon con un account con privilegi.
- Vai a Menu > Assistenza.
- Fai clic su Client API > KeysSelect.
- Fai clic su Aggiungi nuovo client API.
- Nella sezione Ambiti API, seleziona Stream di eventi e attiva l'opzione Lettura.
- Fai clic su Aggiungi.
- Copia e salva l'ID cliente, il client secret e l'URL di base.
Installa Falcon SIEM Connector
- Scarica il pacchetto di installazione RPM per il tuo sistema operativo.
Installazione del pacchetto:
Sistema operativo CentOS:
sudo rpm -Uvh <installer package>
Sistema operativo Ubuntu:
sudo dpkg -i <installer package>
Directory di installazione predefinite:
- Falcon SIEM Connector -
/opt/crowdstrike/
. - Servizio:
/etc/init.d/cs.falconhoseclientd/
.
- Falcon SIEM Connector -
Configura il connettore SIEM per inoltrare gli eventi a Bindplane
- Accedi alla macchina su cui è installato SIEM Connector come utente
sudo
. - Vai alla directory
/opt/crowdstrike/etc/
. - Rinomina
cs.falconhoseclient.leef.cfg
incs.falconhoseclient.cfg
.- Il connettore SIEM utilizza la configurazione
cs.falconhoseclient.cfg
per impostazione predefinita.
- Il connettore SIEM utilizza la configurazione
- 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 suapp_id: SECOPS-LEEF
.client_id:
: il valoreclient_id
copiato dal passaggio precedente.client_secret:
: il valoreclient_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.
- Salva il file
cs.falconhoseclient.cfg
. 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
(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
(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.