Raccogliere i log EDR di Carbon Black

Supportato in:

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 in formato JSON, CSV o syslog, li normalizza e li mappa all'UDM. Gestisce vari tipi di eventi Carbon Black, tra cui connessioni di rete, eventi di processo, modifiche ai file, modifiche al registro e hit IOC, arricchendo i dati con informazioni sulla minaccia e sul dispositivo, se disponibili.

Prima di iniziare

Assicurati di avere:

  • Un'istanza Google SecOps configurata.
  • Accesso con privilegi ad AWS IAM e S3.
  • Accesso con privilegi a Carbon Black EDR on-prem o su cloud.

Configurare Carbon Black EDR on-prem

Configura il bucket Amazon S3 per l'on-premise

  1. Crea un bucket Amazon S3 seguendo questa guida dell'utente: Creare un bucket
  2. Salva Nome e Regione del bucket per utilizzarli in un secondo momento.
  3. Crea un utente seguendo questa guida dell'utente: Creare un utente IAM.
  4. Seleziona l'utente creato.
  5. Seleziona la scheda Credenziali di sicurezza.
  6. Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
  7. Seleziona Servizio di terze parti come Caso d'uso.
  8. Fai clic su Avanti.
  9. (Facoltativo) Aggiungi un tag di descrizione.
  10. Fai clic su Crea chiave di accesso.
  11. Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per utilizzarle in un secondo momento.
  12. Fai clic su Fine.
  13. Seleziona la scheda Autorizzazioni.
  14. Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
  15. Seleziona Aggiungi autorizzazioni.
  16. Seleziona Collega direttamente i criteri.
  17. Cerca e seleziona il criterio AmazonS3FullAccess.
  18. Fai clic su Avanti.
  19. Fai clic su Aggiungi autorizzazioni.

Installa cb-event-forwarder sul server EDR on-premise

  1. Installa il repository CbOpenSource se non è già presente:

    cd /etc/yum.repos.d
    curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
    
  2. Installa l'RPM utilizzando YUM:

    yum install cb-event-forwarder
    
  3. 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

  1. Apri il file di configurazione:

    sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
    
  2. 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
    
  3. Salva ed esci utilizzando la tastiera:

    • Ctrl + X, quindi Y e Invio.
  4. Avvia cb-event-forwarder:

    sudo systemctl enable cb-event-forwarder
    sudo systemctl restart cb-event-forwarder
    sudo systemctl status cb-event-forwarder
    

Configurare Carbon Black Cloud Event Forwarder per S3

Crea un bucket AWS S3

  1. Accedi alla Console di gestione AWS.
  2. Assicurati che la regione AWS corrisponda a quella di Event Forwarder:
    1. Nella pagina Console AWS, individua la regione.
    2. Utilizza il menu a discesa per selezionare la regione corretta del tuo Event Forwarder.
    3. Il seguente elenco indica la regione AWS applicabile per ogni URL di 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)
      • Regione "instance-alias".my.cbcloud.sg: Asia Pacifico (Singapore) (ap-southeast-1)
  3. Seleziona Servizi.
  4. Vai alla console S3.
  5. Fai clic su Crea bucket per aprire la procedura guidata Crea bucket.
    1. In Nome bucket, inserisci un nome univoco per il bucket (ad esempio CB-EDR).
    2. Assicurati che il valore predefinito di Regione sia quello selezionato in precedenza.
    3. Aggiorna i valori predefiniti di Blocca accesso pubblico in modo da consentire l'accesso pubblico (questo è necessario per l'importazione dei log in Google SecOps).
    4. Seleziona Crea bucket.

Configura il bucket S3 per consentire a Event Forwarder di scrivere eventi

  1. Crea un utente seguendo questa guida dell'utente: Creare un utente IAM.
  2. Seleziona l'utente creato.
  3. Seleziona la scheda Credenziali di sicurezza.
  4. Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
  5. Seleziona Servizio di terze parti come Caso d'uso.
  6. Fai clic su Avanti.
  7. (Facoltativo) Aggiungi un tag di descrizione.
  8. Fai clic su Crea chiave di accesso.
  9. Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per utilizzarle in un secondo momento.
  10. Fai clic su Fine.
  11. Seleziona la scheda Autorizzazioni.
  12. Fai clic su Aggiungi autorizzazioni nella sezione Norme relative alle autorizzazioni.
  13. Seleziona Aggiungi autorizzazioni.
  14. Seleziona Collega direttamente i criteri.
  15. Cerca il criterio AmazonS3FullAccess.
  16. Seleziona il criterio.
  17. Fai clic su Avanti.
  18. Fai clic su Aggiungi autorizzazioni.

Configurare il forwarding degli eventi nella console EDR

  1. Accedi a VMware Carbon Black Cloud.
  2. Vai alla scheda Inoltro eventi
  3. Attiva gli eventi che vuoi che il prodotto carichi su S3.
  4. Vai a Output e tipo e imposta S3.
  5. Fornisci il nome del bucket S3 nel seguente formato <region>:<bucket-name> (ad esempio us-east-1:cb-edr).
  6. Seleziona il file carica credenziali AWS in formato INI.
  7. 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
    
  8. Fai clic su Salva e riavvia il servizio per applicare le modifiche.

Configura un feed in Google SecOps per importare i log EDR di Carbon Black

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log EDR di Carbon Black).
  4. Seleziona Amazon S3 come Tipo di origine.
  5. Seleziona Carbon Black EDR come Tipo di log.
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:

    • 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.
    • L'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.
    • Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
  8. Fai clic su Avanti.

  9. Rivedi la configurazione del nuovo feed nella schermata Concludi e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
action security_result.detection_fields[?key == 'action'].value Il valore del campo action dal log non elaborato.
cb_server intermediary.hostname Il valore del campo cb_server dal log non elaborato.
cb_version metadata.product_version Il valore del campo cb_version dal log non elaborato.
child_pid target.process.pid (per eventi ingress.event.childproc) Il valore del campo child_pid dal log non elaborato quando type è ingress.event.childproc.
child_process_guid target.process.product_specific_process_id (per eventi ingress.event.childproc) "CB:" concatenato con il valore del campo child_process_guid del log non elaborato quando type è ingress.event.childproc.
child_username target.user.userid (per eventi ingress.event.childproc) Il valore del campo child_username dal log non elaborato quando type è ingress.event.childproc.
childproc_guid target.process.product_specific_process_id (per eventi endpoint.event.procstart) "CB:" concatenato con il valore del campo childproc_guid del log non elaborato quando type è endpoint.event.procstart.
childproc_hash.0 target.process.file.md5 (per eventi endpoint.event.procstart) Il primo elemento dell'array childproc_hash dal log non elaborato quando type è endpoint.event.procstart.
childproc_hash.1 target.process.file.sha256 (per eventi endpoint.event.procstart) Il secondo elemento dell'array childproc_hash del log non elaborato quando type è endpoint.event.procstart.
childproc_name target.process.file.full_path (per eventi endpoint.event.procstart) Il valore del campo childproc_name dal log non elaborato quando type è endpoint.event.procstart.
childproc_pid target.process.pid (per eventi endpoint.event.procstart) Il valore del campo childproc_pid dal log non elaborato quando type è endpoint.event.procstart.
childproc_publisher.0.name security_result.detection_fields[?key == 'childproc_publisher_name'].value (per eventi endpoint.event.procstart) "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 eventi endpoint.event.procstart) "childproc_publisher_state:" concatenato con il 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 eventi endpoint.event.procstart) Il valore del campo childproc_reputation dal log non elaborato quando type è endpoint.event.procstart.
childproc_username target.user.userid (per eventi endpoint.event.procstart) Il valore del campo childproc_username dal log non elaborato quando type è endpoint.event.procstart.
clientIp principal.ip, principal.asset.ip Il valore del campo clientIp dal 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 dal 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 eventi ingress.event.procstart) Il valore del campo command_line dal log non elaborato quando type è ingress.event.procstart.
comms_ip intermediary.ip Il valore del campo comms_ip dal log non elaborato.
computer_name principal.hostname, principal.asset.hostname Il valore del campo computer_name dal log non elaborato.
crossproc_api additional.fields[?key == 'crossproc_api'].value.string_value (per eventi endpoint.event.apicall) Il valore del campo crossproc_api dal log non elaborato quando type è endpoint.event.apicall.
crossproc_guid additional.fields[?key == 'crossproc_guid'].value.string_value (per eventi endpoint.event.crossproc) Il valore del campo crossproc_guid dal log non elaborato quando type è endpoint.event.crossproc.
crossproc_hash.0 additional.fields[?key == 'crossproc_md5'].value.string_value (per eventi endpoint.event.crossproc) Il primo elemento dell'array crossproc_hash dal log non elaborato quando type è endpoint.event.crossproc.
crossproc_hash.1 additional.fields[?key == 'crossproc_sha256'].value.string_value (per eventi endpoint.event.crossproc) Il secondo elemento dell'array crossproc_hash del log non elaborato quando type è endpoint.event.crossproc.
crossproc_name target.process.file.full_path (per eventi endpoint.event.crossproc) Il valore del campo crossproc_name dal log non elaborato quando type è endpoint.event.crossproc.
crossproc_publisher.0.name security_result.detection_fields[?key == 'crossproc_publisher_name'].value (per eventi endpoint.event.crossproc) "crossproc_publisher_name:" concatenato con il 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 eventi endpoint.event.crossproc) "crossproc_publisher_state:" concatenato con il 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 eventi endpoint.event.crossproc) Il valore del campo crossproc_reputation dal log non elaborato quando type è endpoint.event.crossproc.
crossproc_target additional.fields[?key == 'crossproc_target'].value.string_value (per eventi endpoint.event.crossproc) Il valore del campo crossproc_target dal log non elaborato quando type è endpoint.event.crossproc. Convertito in una stringa "true" o "false".

Modifiche

2024-05-13

  • Il campo "alert_url" è stato mappato al campo UDM "metadata.url_back_to_product".

2024-01-19

  • È stato aggiunto un controllo null per "filemod_hash.0" e "filemod_hash.1" prima della mappatura.

2023-12-27

  • "filemod_hash.0" e "filemod_hash.1" sono stati inizializzati a null per analizzare i log non analizzati.

2023-10-26

  • È stata aggiunta la funzione "gsub" per analizzare i campi non analizzati.

2023-10-13

  • Sono stati gestiti i nuovi log JSON aggiungendo un blocco JSON.
  • È stato rimosso il codice ridondante per i campi "computer_name", "parent_name", "process_name", "pid", "process_path", "md5", "sha256", "process_guid", "parent_pid", "docs.0.process_pid", "cb_version", "process_hash.0", "process_hash.1", "parent_hash.0" e "parent_hash.1".

2023-07-21

  • Sono stati aggiunti dettagli sulle tattiche e sulle tecniche MITRE ATT&CK a "security_result.attack_details".

2023-03-24

  • Il campo "protocol" è stato mappato a "network.ip_protocol".
  • È stato aggiunto il controllo condizionale null per i campi "child_username", "child_pid", "child_command_line".
  • "metadata.event_type" è stato modificato da "GENERIC_EVENT" in "STATUS_UPDATE" quando "principal.hostname" o "principal.ip" non è nullo.

2023-03-14

  • Correzione di bug:
  • Sono stati mappati i seguenti campi quando il campo "type" è null:
  • È stato mappato il campo "process_guid" a "principal.process.product_specific_process_id".
  • È stato mappato il campo "device_external_ip" a "target.ip".
  • Il campo "device_os" è stato mappato a "principal.platform".
  • È stato mappato il campo "device_group" a "principal.group.group_display_name".
  • È stato mappato il campo "process_pid" a "principal.process.pid".
  • È stato mappato il campo "process_path" a "principal.process.file.full_path".
  • Il campo "process_cmdline" è stato mappato a "principal.process.command_line".
  • È stato mappato il campo "process_hash.0" a "principal.process.file.md5".
  • È stato mappato il campo "principal.1" a "principal.process.file.sha256".
  • Il campo "process_username" è stato mappato a "principal.user.userid".
  • Il campo "clientIp" è stato mappato a "principal.ip".
  • È stato mappato il campo "description" a "metadata.description".
  • È stato mappato il campo "orgName" a "principal.administrative_domain".
  • Sono stati mappati i seguenti campi quando il campo "ruleName" contiene "CYDERES":
  • È stato mappato il campo "deviceInfo.internalIpAddress" a "principal.ip".
  • È stato mappato il campo "deviceInfo.externalIpAddress" a "target.ip".
  • Il campo "ruleName" è stato mappato a "security_result.rule_name".
  • È stato mappato il campo "deviceInfo.deviceType" a "principal.asset.platform_software.platform".
  • Il campo "domain" è stato mappato a "principal.administrative_domain".
  • È stato mappato il campo "deviceInfo.groupName" a "principal.group.group_display_name".
  • È stato mappato il campo "deviceInfo.deviceVersion" a "principal.asset.platform_software.platform_version".
  • È stato mappato il campo "deviceInfo.deviceId" a "principal.asset.asset_id".
  • Il campo "eventId" è stato mappato a "additional.fields".
  • "metadata.event_type" è stato modificato da "GENERIC_EVENT" in "NETWORK_CONNECTION" quando "principal.ip" e "target.ip" non sono null.
  • "metadata.event_type" è stato modificato da "GENERIC_EVENT" in "STATUS_UPDATE" quando "principal.ip" non è nullo.

2023-02-03

  • Correzione di bug: mappa "filemod_hash" a "target.file" anziché a "target.process.file".

2023-01-20

  • Correzione di bug: è stata interrotta la compilazione e la mappatura di product_specific_process_id per gli ID processo vuoti.

2022-11-25

  • È stato mappato "remote_ip" a "principal.ip" e "local_ip" a "target.ip" per gli eventi TCP/UDP "In entrata".
  • È stata mappata "remote_port" a "principal.port" e "local_port" a "target.port" per gli eventi TCP/UDP "In entrata".

2022-10-06

  • È stata eseguita la migrazione di tutti gli analizzatori sintattici specifici del cliente all'analizzatore sintattico predefinito.

2022-07-10

  • Mappatura aggiornata di "event_type" a "PROCESS_LAUNCH" per i log di tipo "endpoint.event.'."

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