Raccogli i log EDR di Cybereason

Supportato in:

Questo documento spiega come importare i log Cybereason EDR in Google Security Operations utilizzando l'agente Bindplane.

Cybereason EDR (Endpoint Detection and Response) è una piattaforma di cybersecurity che rileva e risponde alle minacce avanzate sugli endpoint. Identifica le operazioni dannose (Malops), ovvero catene di attacchi correlate che collegano attività sospette in scenari di attacco completi, e fornisce agli analisti della sicurezza visibilità sulla progressione delle minacce, sulle macchine interessate, sugli utenti compromessi e sulle connessioni di rete.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive oppure host Linux con systemd
  • Connettività di rete tra l'agente Bindplane e il server di rilevamento Cybereason
  • Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane.
  • Accesso alla console di gestione Cybereason con il ruolo di Amministratore di sistema
  • Piattaforma Cybereason versione 20.1 o successive

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 l'agente 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

Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri 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
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sc query observiq-otel-collector
    

    Lo stato del servizio deve essere RUNNING.

Installazione di Linux

  1. Apri un terminale con privilegi 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
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sudo systemctl status observiq-otel-collector
    

    Lo stato del servizio deve essere attivo (in esecuzione).

Risorse aggiuntive per l'installazione

Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la Guida all'installazione dell'agente Bindplane.

Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps

Individua il file di configurazione

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifica il file di configurazione

  1. Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    receivers:
      tcplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/cybereason:
        compression: gzip
        creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
        customer_id: 'your-customer-id'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CYBEREASON_EDR
        raw_log_field: body
    
    service:
      pipelines:
        logs/cybereason_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/cybereason
    
  2. Sostituisci i seguenti segnaposto:

    • Configurazione del ricevitore:

      • listen_address: Indirizzo IP e porta su cui ascoltare:

        • 0.0.0.0:514 per ascoltare su tutte le interfacce sulla porta 514 (richiede l'accesso come amministratore su Linux)
        • 0.0.0.0:1514 per l'ascolto su una porta senza privilegi (consigliato per Linux non root)
      • Opzioni del tipo di ricevitore:

        • tcplog per syslog TCP (obbligatorio per l'inoltro di syslog Cybereason)
    • Configurazione dell'esportatore:

      • creds_file_path: il percorso completo del file di autenticazione dell'importazione di Google SecOps:

        • Linux: /etc/bindplane-agent/ingestion-auth.json
        • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • customer_id: ID cliente Google SecOps

      • endpoint: URL endpoint regionale:

        • Stati Uniti: malachiteingestion-pa.googleapis.com
        • Europa: europe-malachiteingestion-pa.googleapis.com
        • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
        • Per l'elenco completo, vedi Endpoint regionali.

Salvare il file di configurazione

Dopo la modifica, salva il file:

  • Linux: premi Ctrl+O, poi Enter e infine Ctrl+X.
  • Windows: fai clic su File > Salva.

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux:

    1. Esegui questo comando:

      sudo systemctl restart observiq-otel-collector
      
    2. Verifica che il servizio sia in esecuzione:

      sudo systemctl status observiq-otel-collector
      
    3. Controlla la presenza di errori nei log:

      sudo journalctl -u observiq-otel-collector -f
      
  • Per riavviare l'agente Bindplane in Windows:

    1. Scegli una delle seguenti opzioni:

      • Prompt dei comandi o PowerShell come amministratore:

        net stop observiq-otel-collector && net start observiq-otel-collector
        
      • Console Services:

        1. Premi Win+R, digita services.msc e premi Invio.
        2. Individua observIQ OpenTelemetry Collector.
        3. Fai clic con il tasto destro del mouse e seleziona Riavvia.
    2. Verifica che il servizio sia in esecuzione:

      sc query observiq-otel-collector
      
    3. Controlla la presenza di errori nei log:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Configurare l'inoltro di syslog di Cybereason EDR

Cybereason invia eventi MalOp e di controllo utente in formato CEF (Common Event Format) tramite syslog. La configurazione dell'inoltro di Syslog richiede una richiesta all'assistenza tecnica di Cybereason.

Richiedere l'inoltro di syslog all'assistenza tecnica di Cybereason

  1. Accedi alla console di gestione Cybereason.
  2. Contatta l'assistenza tecnica di Cybereason tramite il portale di assistenza Cybereason.
  3. Invia una richiesta di configurazione dell'inoltro di syslog con le seguenti informazioni:
    • Indirizzo IP del server syslog: l'indirizzo IP dell'host dell'agente Bindplane (ad esempio, 192.168.1.100).
    • Porta del server Syslog: la porta corrispondente all'agente Bindplane listen_address (ad esempio, 514).
    • Protocollo: TCP (syslog TCP non criptato).
    • Tipi di log: richiedi l'inoltro dei seguenti tipi di log:
    • Syslog MalOp: avvisi di sicurezza ed eventi di operazioni dannose
    • Syslog di controllo utente: attività utente e azioni amministrative
  4. Attendi che l'assistenza tecnica di Cybereason confermi la configurazione dell'inoltro di syslog.

Configura le regole firewall

  • Assicurati che siano presenti le seguenti regole firewall:

    Direzione Protocollo Porta Origine Destinazione
    In uscita TCP 514 Server di rilevamento Cybereason Host dell'agente Bindplane

Alternativa: Cybereason CEF Forwarder

Se l'assistenza tecnica di Cybereason non è in grado di configurare l'inoltro diretto di syslog, puoi utilizzare lo strumento Cybereason CEF Forwarder:

  1. Scarica l'immagine Docker di Cybereason CEF Forwarder dall'assistenza tecnica di Cybereason.
  2. Crea o modifica il file di configurazione in cybereason-forwarders/config/config.json.
  3. Configura le seguenti impostazioni:

    {
      "host": "<BINDPLANE_AGENT_IP>",
      "port": 514
    }
    
  4. Sostituisci <BINDPLANE_AGENT_IP> con l'indirizzo IP dell'host dell'agente Bindplane.

  5. Crea ed esegui il container Docker:

    docker build -t cybereason-cef-forwarder .
    docker run -d --name cybereason-forwarder cybereason-cef-forwarder
    

Tipi di eventi Syslog

Cybereason genera messaggi syslog CEF per le seguenti categorie di eventi:

Categoria evento Descrizione
MalOp creato Nuova operazione dannosa rilevata
MalOp aggiornato Stato o dettagli di MalOp esistenti modificati
MalOp closed MalOp risolto o chiuso dall'analista
Malware rilevato Malware identificato su un endpoint
Procedura sospetta Rilevata attività sospetta del processo
Connessione di rete È stata identificata una connessione di rete sospetta
Accesso utente Eventi di autenticazione utente
Isolamento della macchina Endpoint isolato dalla rete o riconnesso alla rete
Modifiche alle norme Modifiche alle norme sulla sicurezza

Verificare l'inoltro di Syslog

  1. Dopo che l'assistenza tecnica di Cybereason ha confermato la configurazione di syslog, esegui un'azione di test nella console Cybereason (ad esempio, visualizza un MalOp o isola una macchina di test).
  2. Controlla i log dell'agente Bindplane per i messaggi syslog in entrata:
    • Linux: sudo journalctl -u observiq-otel-collector -f
    • Windows: type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
  3. Verifica che nei log vengano visualizzati messaggi formattati in CEF, ad esempio:

    CEF:0|Cybereason|Cybereason|2.0|MalOp|MalOp Created|8|cs1=MALOP_ID_HERE dvchost=server01.company.com suser=admin@company.com
    

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
detectionName_label additional.fields Mappato come coppia chiave-valore
sensorId_label additional.fields Mappato come coppia chiave-valore
stato metadata.description Se il valore non è vuoto
log_description metadata.description Fallback se lo stato è vuoto
(formato CEF) metadata.event_type Imposta GENERIC_EVENT per i log CEF
event_type metadata.event_type Imposta su PROCESS_OPEN se il valore è "PROCESS_OPEN", NETWORK_CONNECTION se il valore è "NETWORK_CONNECTION", SCAN_HOST se il valore è "MALWARE".
has_principal, has_target metadata.event_type Impostato su SCAN_FILE se has_principal e has_target sono entrambi true
has_principal metadata.event_type Impostato su STATUS_UPDATE se solo has_principal è true
has_user metadata.event_type Impostato su USER_UNCATEGORIZED se has_user è true nel contesto Malop
(predefinito) metadata.event_type In caso contrario, impostalo su GENERIC_EVENT
LogType metadata.product_event_type Se il valore non è vuoto
malop_data.simpleValues.elementDisplayName.values.0 metadata.product_event_type Fallback se LogType è vuoto
tipo metadata.product_event_type Fallback
prod_event, prod_event2 metadata.product_event_type Concatenato come prod_event - prod_event2
malop_process.guidString metadata.product_log_id Per il tipo di evento PROCESS_OPEN
malop_connection.guidString metadata.product_log_id Per il tipo di evento NETWORK_CONNECTION
guid metadata.product_log_id Per i tipi di evento MALWARE o Malop
(statico) metadata.product_version Imposta inizialmente il valore "2.0"
Sensor.version metadata.product_version Sovrascrive "2.0" se presente
malop_url metadata.url_back_to_product Mappato direttamente
(statico) metadata.vendor_name Impostato su "Cybereason"
direction network.direction Mappato direttamente
malop_connection.simpleValues.transportProtocol.values.0 network.ip_protocol Mappato direttamente
malop_connection.simpleValues.receivedBytesCount.values.0 network.received_bytes Convertito in numero intero senza segno
malop_connection.simpleValues.transmittedBytesCount.values.0 network.sent_bytes Convertito in numero intero senza segno
Sensor.fqdn principal.administrative_domain Mappato direttamente
malop_process.elementValues.ownerMachine.elementValues.0.guid principal.asset.asset_id Prefisso "Cybereason:"
malop_data.elementValues.affectedMachines.elementValues.0.guid principal.asset.asset_id Prefisso "Cybereason:", fallback
malop_process.elementValues.ownerMachine.elementValues.0.name principal.asset.hostname Mappato direttamente
malop_data.elementValues.affectedMachines.elementValues.0.name principal.asset.hostname Fallback
machineName principal.asset.hostname Fallback
host principal.asset.hostname Fallback
dvchost principal.asset.hostname Fallback
Sensor.fqdn principal.asset.hostname Fallback
client.ip principal.asset.ip Mappato direttamente
Sensor.externalIpAddress principal.asset.ip Fallback
malop_process.elementValues.ownerMachine.elementValues.0.name principal.hostname Mappato direttamente
malop_data.elementValues.affectedMachines.elementValues.0.name principal.hostname Fallback
machineName principal.hostname Fallback
host principal.hostname Fallback
dvchost principal.hostname Fallback
Sensor.fqdn principal.hostname Fallback
client.ip principal.ip Mappato direttamente
Sensor.externalIpAddress principal.ip Fallback
Sensor.internalIpAddress principal.nat_ip Mappato direttamente
Sensor.privateServerIp principal.nat_ip Fallback
Sensor.osType principal.platform Imposta WINDOWS se il valore è "WINDOWS", LINUX se "LINUX", MAC se "MAC"
Sensor.osVersionType principal.platform_version Mappato direttamente
malop_connection.simpleValues.localPort.values.0 principal.port Convertito in numero intero
malop_process.simpleValues.commandLine.values.0 principal.process.command_line Mappato direttamente
malwareDataModel.filePath principal.process.command_line Fallback
malop_process.simpleValues.calculatedName.values.0 principal.process.file.full_path Mappato direttamente
nome principal.process.file.full_path Fallback
malop_process.elementValues.parentProcess.elementValues.0.guid principal.process.parent_process.product_specific_process_id Prefisso "Cybereason:"
malop_process.elementValues.self.elementValues.0.guid principal.process.pid Mappato direttamente
malop_process.elementValues.self.elementValues.0.guid principal.process.product_specific_process_id Prefisso "Cybereason:"
malop_connection.elementValues.ownerProcess.elementValues.0.guid principal.process.product_specific_process_id Prefisso "Cybereason:", fallback
companyName principal.user.company_name Mappato direttamente
malop_process.elementValues.calculatedUser.elementValues.0.name principal.user.user_display_name Mappato direttamente
malop_data.elementValues.affectedUsers.elementValues.0.name principal.user.user_display_name Fallback
malop_connection.elementValues.ownerProcess.user.elementValues.0.name principal.user.user_display_name Fallback
malop_process.elementValues.calculatedUser.elementValues.0.guid principal.user.userid Mappato direttamente
malop_data.elementValues.affectedUsers.elementValues.0.guid principal.user.userid Fallback
malop_connection.elementValues.ownerProcess.user.elementValues.0.guid principal.user.userid Fallback
security_result_action security_result.action Imposta su ALLOW, BLOCK o QUARANTINE in base allo stato
is_alert security_result.alert_state Impostato su ALERTING se il valore è True
sr_category security_result.category Impostato su SOFTWARE_MALICIOUS o NETWORK_MALICIOUS
query_details security_result.detection_fields Mappato come coppia chiave-valore
affected_machine_count security_result.detection_fields Mappato come coppia chiave-valore
link_to_malop security_result.detection_fields Mappato come coppia chiave-valore
context_label security_result.detection_fields Mappato come coppia chiave-valore
old_state_label security_result.detection_fields Mappato come coppia chiave-valore
new_state_label security_result.detection_fields Mappato come coppia chiave-valore
investigation_label security_result.detection_fields Mappato come coppia chiave-valore
event_id_label security_result.detection_fields Mappato come coppia chiave-valore
malop_activity_type_label security_result.detection_fields Mappato come coppia chiave-valore
malop_suspect_label security_result.detection_fields Mappato come coppia chiave-valore
malop_key_suspicion_label security_result.detection_fields Mappato come coppia chiave-valore
device_custom_date_label security_result.detection_fields Mappato come coppia chiave-valore
device_custom_date2_label security_result.detection_fields Mappato come coppia chiave-valore
device_custom_date3_label security_result.detection_fields Mappato come coppia chiave-valore
guid_label security_result.detection_fields Mappato come coppia chiave-valore
displayName_label security_result.detection_fields Mappato come coppia chiave-valore
pylumId_label security_result.detection_fields Mappato come coppia chiave-valore
connected_label security_result.detection_fields Mappato come coppia chiave-valore
isolated_label security_result.detection_fields Mappato come coppia chiave-valore
osType_label security_result.detection_fields Mappato come coppia chiave-valore
admin_label security_result.detection_fields Mappato come coppia chiave-valore
domainUser_label security_result.detection_fields Mappato come coppia chiave-valore
localSystem_label security_result.detection_fields Mappato come coppia chiave-valore
descrizione security_result.description Concatenato con decision_feature, malop_status, privileges, passwordAgeDays, elementType, status, score, detectionValue, detectionValueType, detectionEngine
decision_feature security_result.description Concatenato nella descrizione
malop_status security_result.description Concatenato nella descrizione
privilegi security_result.description Concatenato nella descrizione
passwordAgeDays security_result.description Concatenato nella descrizione
elementType security_result.description Concatenato nella descrizione
stato security_result.description Concatenato nella descrizione
punteggio security_result.description Concatenato nella descrizione
detectionValue security_result.description Concatenato nella descrizione
detectionValueType security_result.description Concatenato nella descrizione
detectionEngine security_result.description Concatenato nella descrizione
malop_data.malopPriority security_result.priority Mappato direttamente
malop_severity security_result.severity Mappato direttamente
security_severity security_result.severity Imposta CRITICAL se il valore è > 8, HIGH se è > 6, MEDIUM se è > 4, LOW se è > 1
gravità security_result.severity Impostato su INFORMATIONAL se "Info", ERROR se "Error" o "High", MEDIUM se "Warning" o "Medium", CRITICAL se "Critical", LOW se "Low", UNKNOWN altrimenti
descrizione security_result.summary Mappato direttamente
tipo security_result.summary Fallback
malopId security_result.threat_id Mappato direttamente
malop_data.simpleValues.detectionType.values.0 security_result.threat_name Mappato direttamente
virusName security_result.threat_name Fallback
stato security_result.threat_status Impostato su ACTIVE se il valore è "Active", altrimenti FALSE_POSITIVE
malop_url security_result.url_back_to_product Mappato direttamente
machineName target.asset.hostname Mappato direttamente
affectedMachine target.asset.hostname Fallback
dvchost target.asset.hostname Fallback
Sensor.serverName target.asset.hostname Fallback
server.ip target.asset.ip Mappato direttamente
Sensor.serverIp target.asset.ip Fallback
malop_process.simpleValues.calculatedName.values.0 target.file.full_path Mappato direttamente
malop_connection.elementValues.ownerProcess.elementValues.0.name target.file.full_path Fallback
nome target.file.full_path Fallback
malwareDataModel_filePath target.file.full_path Fallback
malop_process.simpleValues.imageFile.md5String.values.0 target.file.md5 Mappato direttamente
nome target.file.names Mappato direttamente
machineName target.hostname Mappato direttamente
affectedMachine target.hostname Fallback
dvchost target.hostname Fallback
Sensor.serverName target.hostname Fallback
server.ip target.ip Mappato direttamente
Sensor.serverIp target.ip Fallback
malop_connection.simpleValues.remoteAddressCountryName.values.0 target.location.country_or_region Mappato direttamente
Sensor.privateServerIp target.nat_ip Mappato direttamente
malop_connection.simpleValues.remotePort.values.0 target.port Convertito in numero intero
malop_process.simpleValues.calculatedName.values.0 target.process.file.full_path Mappato direttamente
malop_process.elementValues.self.elementValues.0.guid target.process.pid Mappato direttamente
malop_url target.url Mappato direttamente
(statico) metadata.product_name Impostato su "Cybereason"

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