Raccogliere i log di Carbon Black EDR
Questo documento spiega come raccogliere i log di Carbon Black EDR dagli ambienti cloud e on-premise utilizzando AWS S3. Il parser estrae i campi dai messaggi formattati in JSON, CSV o syslog, li normalizza e li mappa a UDM. Gestisce vari tipi di eventi Carbon Black, tra cui connessioni di rete, eventi di processo, modifiche ai file, modifiche al registro e corrispondenze IOC, arricchendo i dati con informazioni sulle minacce e informazioni sui dispositivi, ove disponibili.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps.
- Accesso con privilegi ad AWS IAM e S3.
- Accesso con privilegi a Carbon Black EDR cloud o on-premise.
Configura Carbon Black EDR on-premise
Configura il bucket Amazon S3 per l'ambiente on-premise
- Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket
- Salva il Nome e la Regione del bucket per utilizzarli in un secondo momento.
- Crea un utente seguendo questa guida: Creazione di un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per un utilizzo successivo.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente le norme.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Installa cb-event-forwarder sul server EDR on-premise
Installa il repository CbOpenSource se non è già presente:
cd /etc/yum.repos.d curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
Installa l'RPM utilizzando YUM:
yum install cb-event-forwarder
Se utilizzi EDR 7.1.0 o versioni successive, esegui il seguente script per impostare le autorizzazioni appropriate necessarie per EDR:
/usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
Configura cb-event-forwarder per generare log JSON
Apri il file di configurazione:
sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
Modifica i seguenti parametri:
[event_forwarder] output_format=json # Enable JSON format output_type=s3 # Send logs to AWS S3 s3_bucket_name=YOUR-S3-BUCKET-NAME s3_region=YOUR-S3-BUCKET-NAME s3_access_key_id=YOUR_AWS_ACCESS_KEY s3_secret_access_key=YOUR_AWS_SECRET_KEY s3_prefix=carbonblack/edr/logs
Salva ed esci utilizzando la tastiera:
- Ctrl + X, quindi Y e Invio.
Avvia cb-event-forwarder:
sudo systemctl enable cb-event-forwarder sudo systemctl restart cb-event-forwarder sudo systemctl status cb-event-forwarder
Configura Carbon Black Cloud Event Forwarder per S3
Crea un bucket AWS S3
- Accedi alla console di gestione AWS.
- Assicurati che la regione AWS corrisponda a quella di Event Forwarder:
- Nella pagina Console AWS, individua la regione.
- Utilizza il menu a discesa per selezionare la regione corretta del tuo Event Forwarder.
- Il seguente elenco indica la regione AWS applicabile per ogni URL Carbon Black EDR.
- "instance-alias".my.carbonblack.io - Regione: US East (N. del Nord) (us-east-1)
- "instance-alias".my.cbcloud.de - Regione: Europa (Francoforte) (eu-central-1)
- "instance-alias".my.cbcloud.sg Regione: Asia Pacifico (Singapore) (ap-southeast-1)
- Seleziona Servizi.
- Vai alla console S3.
- Fai clic su Crea bucket per aprire la procedura guidata Crea bucket.
- In Nome bucket, inserisci un nome univoco per il bucket (ad esempio, CB-EDR).
- Assicurati che la regione sia quella selezionata in precedenza.
- Aggiorna i valori predefiniti di Blocca accesso pubblico per consentire l'accesso pubblico (operazione necessaria per l'importazione dei log in Google SecOps).
- Seleziona Crea bucket.
Configura il bucket S3 per consentire a Event Forwarder di scrivere eventi
- Crea un utente seguendo questa guida utente: Creazione di un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per un utilizzo successivo.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente le norme.
- Cerca il criterio AmazonS3FullAccess.
- Seleziona la policy.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configurare l'inoltro degli eventi nella console EDR
- Accedi a VMware Carbon Black Cloud.
- Vai alla scheda Event Forwarder.
- Attiva gli eventi che vuoi che il prodotto carichi su S3.
- Vai a Output e tipo e imposta S3.
- Fornisci il nome del bucket S3 nel seguente formato
<region>:<bucket-name>
(ad esempio,us-east-1:cb-edr
). - Seleziona il file Carica credenziali AWS in formato INI.
Di seguito è riportato un esempio di profilo:
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1
Fai clic su Salva e riavvia il servizio per applicare le modifiche.
Configurare i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed
- Hub dei contenuti > Pacchetti di contenuti
Configura i feed da Impostazioni SIEM > Feed
Per configurare un feed:
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Carbon Black EDR Logs).
- Seleziona Amazon S3 come Tipo di origine.
- Seleziona Carbon Black EDR come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- Region (Regione): la regione in cui si trova il bucket Amazon S3.
- URI S3: l'URI del bucket.
s3:/BUCKET_NAME
- Sostituisci
BUCKET_NAME
con il nome effettivo del bucket.
- Sostituisci
- URI è un: seleziona URI_TYPE in base alla configurazione dello stream di log (File singolo | Directory | Directory che include sottodirectory).
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
- Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Configurare i feed dall'hub dei contenuti
Specifica i valori per i seguenti campi:
- Region (Regione): la regione in cui si trova il bucket Amazon S3.
- URI S3: l'URI del bucket.
s3:/BUCKET_NAME
- Sostituisci
BUCKET_NAME
con il nome effettivo del bucket.
- Sostituisci
- URI è un: seleziona URI_TYPE in base alla configurazione dello stream di log (File singolo | Directory | Directory che include sottodirectory).
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
- Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
Opzioni avanzate
- Nome feed: un valore precompilato che identifica il feed.
- Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
- Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
- Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
action |
security_result.detection_fields[?key == 'action'].value |
Il valore del campo action del log non elaborato. |
cb_server |
intermediary.hostname |
Il valore del campo cb_server del log non elaborato. |
cb_version |
metadata.product_version |
Il valore del campo cb_version del log non elaborato. |
child_pid |
target.process.pid (per ingress.event.childproc eventi) |
Il valore del campo child_pid del log non elaborato quando type è ingress.event.childproc . |
child_process_guid |
target.process.product_specific_process_id (per ingress.event.childproc eventi) |
"CB:" concatenato al valore del campo child_process_guid del log non elaborato quando type è ingress.event.childproc . |
child_username |
target.user.userid (per ingress.event.childproc eventi) |
Il valore del campo child_username del log non elaborato quando type è ingress.event.childproc . |
childproc_guid |
target.process.product_specific_process_id (per endpoint.event.procstart eventi) |
"CB:" concatenato al valore del campo childproc_guid del log non elaborato quando type è endpoint.event.procstart . |
childproc_hash.0 |
target.process.file.md5 (per endpoint.event.procstart eventi) |
Il primo elemento dell'array childproc_hash del log non elaborato quando type è endpoint.event.procstart . |
childproc_hash.1 |
target.process.file.sha256 (per endpoint.event.procstart eventi) |
Il secondo elemento dell'array childproc_hash del log non elaborato quando type è endpoint.event.procstart . |
childproc_name |
target.process.file.full_path (per endpoint.event.procstart eventi) |
Il valore del campo childproc_name del log non elaborato quando type è endpoint.event.procstart . |
childproc_pid |
target.process.pid (per endpoint.event.procstart eventi) |
Il valore del campo childproc_pid del log non elaborato quando type è endpoint.event.procstart . |
childproc_publisher.0.name |
security_result.detection_fields[?key == 'childproc_publisher_name'].value (per endpoint.event.procstart eventi) |
"childproc_publisher_name:" concatenato con il valore di childproc_publisher.0.name dal log non elaborato quando type è endpoint.event.procstart . |
childproc_publisher.0.state |
security_result.detection_fields[?key == 'childproc_publisher_state'].value (per endpoint.event.procstart eventi) |
"childproc_publisher_state:" concatenato al valore di childproc_publisher.0.state dal log non elaborato quando type è endpoint.event.procstart . |
childproc_reputation |
security_result.detection_fields[?key == 'childproc_reputation'].value (per endpoint.event.procstart eventi) |
Il valore del campo childproc_reputation del log non elaborato quando type è endpoint.event.procstart . |
childproc_username |
target.user.userid (per endpoint.event.procstart eventi) |
Il valore del campo childproc_username del log non elaborato quando type è endpoint.event.procstart . |
clientIp |
principal.ip , principal.asset.ip |
Il valore del campo clientIp del log non elaborato. |
cmdline |
target.process.command_line (per gli eventi feed.query.hit.process e feed.storage.hit.process ), additional.fields[?key == 'cmdline_*'].value.string_value (per gli eventi watchlist.storage.hit.process ) |
Il valore del campo cmdline del log non elaborato quando type è feed.query.hit.process o feed.storage.hit.process . Per gli eventi watchlist.storage.hit.process , viene archiviato in additional.fields con la chiave "cmdline_*". |
command_line |
target.process.command_line (per ingress.event.procstart eventi) |
Il valore del campo command_line del log non elaborato quando type è ingress.event.procstart . |
comms_ip |
intermediary.ip |
Il valore del campo comms_ip del log non elaborato. |
computer_name |
principal.hostname , principal.asset.hostname |
Il valore del campo computer_name del log non elaborato. |
crossproc_api |
additional.fields[?key == 'crossproc_api'].value.string_value (per endpoint.event.apicall eventi) |
Il valore del campo crossproc_api del log non elaborato quando type è endpoint.event.apicall . |
crossproc_guid |
additional.fields[?key == 'crossproc_guid'].value.string_value (per endpoint.event.crossproc eventi) |
Il valore del campo crossproc_guid del log non elaborato quando type è endpoint.event.crossproc . |
crossproc_hash.0 |
additional.fields[?key == 'crossproc_md5'].value.string_value (per endpoint.event.crossproc eventi) |
Il primo elemento dell'array crossproc_hash del log non elaborato quando type è endpoint.event.crossproc . |
crossproc_hash.1 |
additional.fields[?key == 'crossproc_sha256'].value.string_value (per endpoint.event.crossproc eventi) |
Il secondo elemento dell'array crossproc_hash del log non elaborato quando type è endpoint.event.crossproc . |
crossproc_name |
target.process.file.full_path (per endpoint.event.crossproc eventi) |
Il valore del campo crossproc_name del log non elaborato quando type è endpoint.event.crossproc . |
crossproc_publisher.0.name |
security_result.detection_fields[?key == 'crossproc_publisher_name'].value (per endpoint.event.crossproc eventi) |
"crossproc_publisher_name:" concatenato al valore di crossproc_publisher.0.name dal log non elaborato quando type è endpoint.event.crossproc . |
crossproc_publisher.0.state |
security_result.detection_fields[?key == 'crossproc_publisher_state'].value (per endpoint.event.crossproc eventi) |
"crossproc_publisher_state:" concatenato al valore di crossproc_publisher.0.state dal log non elaborato quando type è endpoint.event.crossproc . |
crossproc_reputation |
additional.fields[?key == 'crossproc_reputation'].value.string_value (per endpoint.event.crossproc eventi) |
Il valore del campo crossproc_reputation del log non elaborato quando type è endpoint.event.crossproc . |
crossproc_target |
additional.fields[?key == 'crossproc_target'].value.string_value (per endpoint.event.crossproc eventi) |
Il valore del campo crossproc_target del log non elaborato quando type è endpoint.event.crossproc . Convertito in una stringa "true" o "false". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.