VMware Carbon Black Enterprise EDR

Versione integrazione: 6.0

Casi d'uso del prodotto

  1. Esegui azioni investigative: ottieni dati da CB Enterprise EDR nell'ambito di un'analisi degli avvisi in Google Security Operations.
  2. Esegui azioni di configurazione: configura i feed/gli elenchi di controllo di CB Enterprise EDR da Google SecOps.

Autorizzazione del prodotto

Concetti necessari per accedere alle API Carbon Black Enterprise EDR (ThreatHunter):

  1. Nome host del servizio
  2. Chiavi API
  3. RBAC
  4. Chiavi dell'organizzazione

Nomi host del servizio

Esistono due nomi host di Carbon Black Cloud:

  • https://defense-<environment>.conferdeploy.net/
  • https://api-<environment>.conferdeploy.net/

Inoltre, abbiamo più ambienti, ad esempio (non si tratta di un elenco completo):

  • prod02
  • prod04
  • prod05

Per l'API Carbon Black Enterprise EDR (ThreatHunter) verranno utilizzati i seguenti nomi host: https://defense-<environment>.conferdeploy.net/

Chiavi API

Le API e i servizi Carbon Black Enterprise EDR (ThreatHunter) vengono autenticati tramite chiavi API. Gli utenti possono visualizzare le impostazioni della chiave API nella console Carbon Black Cloud in Impostazioni > Chiavi API.

Le chiavi API sono composte da due parti:

  • Chiave segreta API (in precedenza chiave API).
  • ID API (in precedenza ID connettore).

L'autenticazione viene trasmessa all'API tramite l'intestazione HTTP X-Auth-Token.

  1. Per generare l'intestazione appropriata, concatena la chiave segreta API con l'ID API con una barra in mezzo.
  2. Ad esempio, se la chiave segreta API è ABCD e l'ID API è 1234, l'intestazione HTTP X-Auth-Token corrispondente sarà: X-Auth-Token: ABCD/1234

Tutte le richieste API devono essere autenticate utilizzando una chiave segreta API e un ID API. Le richieste non autenticate restituiscono un errore HTTP 401.

Come ottenere una chiave segreta API e un ID API

  1. Accedi alla tua organizzazione Carbon Black Cloud.
  2. Vai a Impostazioni > Chiavi API.
  3. Fai clic su "Aggiungi chiave API".
  4. Configurare nome, livello di accesso e così via.
  5. Ottieni la coppia di chiave segreta API e ID API.

In questo modo, un amministratore dell'organizzazione può definire una chiave API e accedere alla chiave segreta API e all'ID API necessari per autenticare la richiesta API. Inoltre, per motivi di sicurezza, gli amministratori possono limitare l'utilizzo di questa chiave API a un insieme specifico di indirizzi IP.

Livelli di accesso della chiave API

Attualmente nella pagina Chiavi API sono disponibili quattro livelli di accesso principali per le chiavi API. Ogni livello di accesso fornisce diversi livelli di accesso alle route API:

  1. Livello di accesso personalizzato alla chiave: fornisce un'autorizzazione personalizzabile.

    • Le chiavi API personalizzate sono il risultato dei nostri sforzi per controllo dell'accesso basato sui ruoli (RBAC).
    • Consente ai clienti di applicare controlli di accesso e creare chiavi API con privilegi minimi.
    • Alle chiavi API personalizzate possono essere assegnati ruoli utente o livelli di accesso.
  2. Livello di accesso con chiave API: fornisce l'accesso a tutte le API, ad eccezione dell'API Notifications e dell'API Live Response.

  3. Livello di accesso alla chiave SIEM: fornisce l'accesso all'API Notifications.

  4. Livello di accesso alla chiave di risposta in tempo reale: fornisce l'accesso a tutte le API disponibili per (1) sopra più l'API Live Response.

Correlazione tra il servizio Carbon Black Enterprise EDR (ThreatHunter) e il livello di accesso API L'API della piattaforma è in grassetto

Categoria API/servizio Livelli di accesso alla chiave API consentiti
PSC /appservices/* Personalizzato (con le autorizzazioni appropriate)
CB-TH /threathunter/* API personalizzata (con le autorizzazioni appropriate)
CB-LO /livequery/* Personalizzato (con le autorizzazioni appropriate)
CB-D /integrationServices/v3/notification/ SIEM
CB-D /integrationServices/* APILive Response

Chiavi dell'organizzazione

Oltre alle chiavi API, molte API o servizi Carbon Black Cloud richiedono una org_key nel percorso della richiesta API. per assistere i clienti che gestiscono più organizzazioni.

Puoi trovare la tua org_key nella console Carbon Black Cloud in Impostazioni > Chiavi API.

Configura l'accesso API per l'integrazione di Google SecOps di Carbon Black Enterprise EDR (ThreatHunter)

Per configurare l'accesso API per l'integrazione di Google SecOps di Carbon Black Enterprise EDR (ThreatHunter), devono essere eseguiti i seguenti passaggi:

  1. Accedi alla console Carbon Black Cloud, vai a Impostazioni > Accesso API.
  2. Nella pagina Accesso API, vai a Livelli di accesso.
  3. Nella pagina Livelli di accesso, fai clic su + Aggiungi livello di accesso.
  4. Nella finestra aperta, fornisci un nome e una descrizione per il nuovo livello di accesso e seleziona le autorizzazioni come nello screenshot di seguito:

    Elenco delle autorizzazioni
richieste

  5. Torna alla scheda Accesso API.

  6. Fai clic su "+ Aggiungi chiave API" per creare una nuova chiave API.

  7. Nella scheda aperta, compila il campo obbligatorio e seleziona il livello di accesso che hai configurato al passaggio 4:

    Modifica le impostazioni
della chiave API

  8. Dopo aver fatto clic su Salva, verranno visualizzati l'ID API e la chiave segreta API. Salva questi valori, perché verranno mostrati una sola volta.

  9. Una volta salvati l'ID API e la chiave segreta API, l'accesso API in Carbon Black Enterprise EDR (ThreatHunter) è completato.

Configurare l'integrazione di VMware Carbon Black Enterprise EDR (Threat Hunter) in Google SecOps

Per istruzioni dettagliate su come configurare un'integrazione in Google SecOps, vedi Configurare le integrazioni.

Parametri di integrazione

Utilizza i seguenti parametri per configurare l'integrazione:

Nome visualizzato del parametro Tipo Valore predefinito È obbligatorio Descrizione
Nome istanza Stringa N/D No Nome dell'istanza per cui intendi configurare l'integrazione.
Descrizione Stringa N/D No Descrizione dell'istanza.
Root API Stringa N/D URL radice dell'API VMware Carbon Black Cloud.
Chiave dell'organizzazione Stringa N/D Chiave dell'organizzazione VMware Carbon Black Cloud.
ID API Stringa N/D ID API VMware Carbon Black Cloud (ID chiave API personalizzata).
Chiave segreta API Stringa N/D Chiave segreta API VMware Carbon Black Cloud (chiave segreta API personalizzata).
Esegui da remoto Casella di controllo N/D No Seleziona il campo per eseguire l'integrazione configurata da remoto. Una volta selezionata, viene visualizzata l'opzione per selezionare l'utente remoto (agente).

Azioni

Dindin

Descrizione

Verifica la connettività a VMware Carbon Black Enterprise EDR con i parametri forniti nella pagina di configurazione dell'integrazione nella scheda Google Security Operations Marketplace.

Parametri

N/D

Esempi di casi d'uso del playbook

L'azione viene utilizzata per testare la connettività nella pagina di configurazione dell'integrazione nella scheda Google Security Operations Marketplace e può essere eseguita come azione manuale, non utilizzata nei playbook.

Run On

Questa azione non viene eseguita sulle entità e non ha parametri di input obbligatori.

Risultati dell'azione

Risultato script
Nome risultato script Opzioni di valore Esempio
is_success Vero/Falso is_success:False
Bacheca casi
Tipo di risultato Valore/Descrizione Tipo
Messaggio di output*

L'azione non deve non riuscire né interrompere l'esecuzione di un playbook:

  • In caso di esito positivo, stampa "Connessione riuscita al server VMware Carbon Black Enterprise EDR con i parametri di connessione forniti."

L'azione deve non riuscire e interrompere l'esecuzione di un playbook:

  • Se non va a buon fine: stampa "Failed to connect to the VMware Carbon Black Enterprise EDR server! Error is {0}".format(exception.stacktrace)
Generale

Descrizione

Cerca informazioni sull'attività del processo sull'host con il sensore CB in base ai parametri di ricerca forniti. L'azione accetta le entità Google SecOps host.

Parametri

Nome visualizzato del parametro Tipo Valore predefinito È obbligatorio Descrizione
Query Stringa N/D No Query da eseguire nella ricerca dei processi. Ad esempio, process_name:svchost.exe per eseguire la ricerca in base al nome del processo, process_hash:9520a99e77d6196d0d09833146424113 per eseguire la ricerca in base all'hash del processo.
Intervallo di tempo Numero intero 4 No Specifica un periodo di tempo in ore per il recupero degli avvisi.
Limite di record Numero intero 20 Specifica quanti record possono essere restituiti dall'azione.
Ordina per Stringa N/D No Specifica un parametro per ordinare i dati.
Ordinamento DDL CRESC No Ordinamento.

Esempi di casi d'uso del playbook

Cerca eventi causati da processi in base ai parametri di ricerca forniti.

Durante l'analisi di un avviso relativo a un host specifico gestito dalla piattaforma CB, l'utente vuole esaminare l'host, cercare eventi particolari causati da processi in esecuzione in base ai parametri di ricerca forniti. Gli utenti possono eseguire questa azione per l'attività di ricerca delle minacce, ovvero cercare in modo proattivo se sono presenti processi/eventi sospetti sull'host in questione.

Run On

Questa azione viene eseguita sull'entità Host.

Risultati dell'azione

Risultato script
Nome risultato script Opzioni di valore Esempio
is_success Vero/Falso is_success:False
Risultato JSON
{
"results": [
    {
        "alert_id": [
            "null/WSD2CQMT"
        ],
        "backend_timestamp": "2020-03-04T21:42:45.080Z",
        "device_id": 3078944,
        "device_name": "qaam\\manticorewin864",
        "device_policy_id": 6525,
        "device_timestamp": "2020-03-04T21:39:33.180Z",
        "enriched": true,
        "enriched_event_type": "CREATE_PROCESS",
        "event_description": "The script \"<share><link hash=\"74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9\">C:\\programdata\\wmirepair.bat</link></share>\" invoked the application \"<share><link hash=\"7eadc73f8aa77148ca289d5ce5c2632f3a157d313079583454c0421bb97d5646\">C:\\windows\\syswow64\\regsvr32.exe</link></share>\". ",
        "event_id": "ecc6954f5e6011eaa0de89cc027330db",
        "event_type": "childproc",
        "ingress_time": 1583358118950,
        "legacy": true,
        "org_id": "7DESJ9GN",
        "parent_guid": "7DESJ9GN-002efb20-00001604-00000000-1d5f26cab1067fe",
        "parent_pid": 5636,
        "process_guid": "7DESJ9GN-002efb20-00000d58-00000000-1d5f26d6615c568",
        "process_hash": [
            "629ae017d28848b68485bd2aeede9129",
            "74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9"
        ],
        "process_name": "c:\\programdata\\wmirepair.bat",
        "process_pid": [
            3416
        ],
        "process_username": [
            "NT AUTHORITY\\SYSTEM"
        ]
    },
    ...
]  }
Bacheca casi
Tipo di risultato Valore / Descrizione Tipo
Messaggio di output*

L'azione non deve non riuscire né interrompere l'esecuzione di un playbook:

  • Se l'operazione riesce: stampa "Found process information for the following entities:\n {0}".format( entity.Identifiers list)
  • Se is_success=False per tutte le entità fornite, stampa "Nessun risultato di ricerca restituito".
  • Se is_success=False per alcune delle entità fornite perché non è possibile trovare risultati per i parametri di ricerca specificati: stampa "Action was not able to find process information for the following entities:\n {0}".format(entity.Identifiers list)
  • Se is_success=False per alcune delle entità fornite perché si è verificato un errore durante l'esecuzione della ricerca (ad esempio timeout): stampa "Failed to get results because of the errors running search for the following entities:/n {0}".format(entity.identifiers list)

L'azione deve non riuscire e interrompere l'esecuzione di un playbook:

  • Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server, altro: stampa "Failed to execute action! Error is {0}".format(exception.stacktrace)
Entrambi
Tabella

Nome tabella:elabora i risultati di ricerca per {entityIdentifier}

Colonne:

  • ID evento (event_id)
  • Tipo di evento ("enriched_event_type")
  • Nome processo (process_name)
  • GUID processo (process_guid)
  • PID processo (process_pid)
  • GUID processo padre (parent_guid)
  • PID processo padre (parent_pid)
  • Hash del file di processo (process_hash)
  • Process Run As ("process_username")
  • Data/ora creazione ("device_timestamp")
  • Descrizione dell'evento (event_description)
  • Indirizzo IPv4 locale (event_network_local_ipv4)
  • Protocollo di rete (event_network_protocol)
  • Indirizzo IPv4 remoto (event_network_remote_ipv4)
  • Porta remota (event_network_remote_port)
Entità

Recupera gli eventi associati al processo in base al GUID del processo

Descrizione

Visualizza gli eventi associati a processi specifici in base alle informazioni di VMware Carbon Black Enterprise EDR. Questa azione può fornire risultati più dettagliati sull'attività di un processo specifico rispetto all'azione "Ricerca processi". Nota: affinché l'azione funzioni, l'artefatto elaborato da Google SecOps passato all'azione deve essere un tipo di GUID di processo.

Parametri

Nome visualizzato del parametro Tipo Valore predefinito È obbligatorio Descrizione
Criteri di ricerca Stringa N/D No Specifica un criterio di ricerca per la richiesta. Al momento, come criteri di ricerca vengono accettati solo i valori "event_type", ad esempio netconn. Sono accettati più valori come stringa separata da virgole.
Query Cerca N/D Query da eseguire nella ricerca dei processi.Ad esempio, "netconn_action:ACTION_CONNECTION_CREATE OR netconn_action:ACTION_CONNECTION_ESTABLISHED"
Intervallo di tempo Numero intero 4 No Specifica un periodo di tempo in ore per il recupero degli avvisi.
Limite di record Numero intero 20 No Specifica quanti record possono essere restituiti dall'azione.
Ordina per Stringa N/D No Specifica un parametro per ordinare i dati.
Ordinamento DDL CRESC No Ordinamento

Esempi di casi d'uso del playbook

Analizza l'attività di un processo specifico.

Durante l'analisi di un avviso relativo a un host specifico gestito dalla piattaforma CB, è stato scoperto che l'host esegue un processo sospetto. L'utente Google SecOps ha bisogno di un'azione che utilizzi la funzionalità CB Enterprise EDR per ottenere eventi associati a un determinato processo da Google SecOps.

Run On

Questa azione non viene eseguita sulle entità.

Risultati dell'azione

Risultato script
Nome risultato script Opzioni di valore Esempio
is_success Vero/Falso is_success:False
Risultato JSON
{
    "results": [
        {
            "backend_timestamp": "2020-04-26T18:38:50.128Z",
            "created_timestamp": "2020-05-19T03:56:53.483Z",
            "event_guid": "ufzid3pPQs-yrRlPBe8-ww",
            "event_hash": "ce6a949bcd3879897c9eac258ec6a091",
            "event_timestamp": "2020-04-26T18:34:16.258Z",
            "event_type": "netconn",
            "legacy": false,
            "netconn_action": "ACTION_CONNECTION_CREATE",
            "netconn_inbound": true,
            "netconn_local_ipv6": "FF020000000000000000000000010003",
            "netconn_local_port": 5355,
            "netconn_protocol": "PROTO_UDP",
            "netconn_remote_ipv6": "FE800000000000000000000000000000",
            "netconn_remote_port": 58994,
            "process_guid": "7DESJ9GN-002efb20-000003ec-00000000-1d5fb6d63ba535c",
            "process_pid": 1004
        },
        ...
    ]
}
Bacheca casi
Tipo di risultato Valore / Descrizione Tipo
Messaggio di output*

L'azione non deve non riuscire né interrompere l'esecuzione di un playbook:

  • In caso di esito positivo: stampa "Found events for the following process guids:\n {0}".format( process guid list)
  • Se is_success=False per tutti i GUID di processo forniti: stampa "Nessun risultato di ricerca è stato restituito".
  • Se is_success=False per alcune delle entità fornite perché non è possibile trovare il GUID del processo specificato, stampa "Action was not able to find information for the following processes:\n {0}".format(process guids list).
  • Se is_success=False per alcune delle entità fornite perché si è verificato un errore durante l'esecuzione della ricerca (ad esempio timeout): stampa "Failed to get results because of errors running search for the following process guids:/n {0}".format(entity.identifiers list)

L'azione deve non riuscire e interrompere l'esecuzione di un playbook:

  • Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server, altro: stampa "Failed to execute action! Error is {0}".format(exception.stacktrace)
Generale
Tabella

Nome tabella: eventi trovati per il processo {process artifact identifier}

Colonne:devono essere generate automaticamente in base ai risultati restituiti.

Entità

Arricchisci hash

Descrizione

Arricchisci l'entità Hash file di Google SecOps in base alle informazioni di VMware Carbon Black Enterprise EDR.

Esempi di casi d'uso del playbook

Arricchisci l'entità hash file di Google SecOps con informazioni provenienti da CB Enterprise EDR.

Durante l'elaborazione di un possibile avviso di infezione da malware associato a un host con sensore della piattaforma CB, l'utente deve disporre di dati di arricchimento da CB Enterprise EDR (parte della piattaforma) su particolari hash di file associati all'avviso in questione per motivi investigativi. Ad esempio, nell'ambito dell'arricchimento, l'utente può ottenere i metadati hash file correlati, quando questo hash file è stato rilevato per la prima volta nell'organizzazione e su quale host.

Run On

Questa azione viene eseguita sull'entità Filehash nel formato Sha256.

Risultati dell'azione

Arricchimento delle entità
Nome campo di arricchimento Origine (chiave JSON) Logica - Quando applicarla
CB_ENT_EDR.sha256 sha256 sempre
CB_ENT_EDR.md5 md5 sempre
CB_ENT_EDR.architecture architettura sempre
CB_ENT_EDR.available_file_size available_file_size sempre
CB_ENT_EDR.charset_id charset_id sempre
CB_ENT_EDR.comments commenti Se non è null
CB_ENT_EDR.company_name company_name sempre
CB_ENT_EDR.copyright copyright sempre
CB_ENT_EDR.file_available file_available sempre
CB_ENT_EDR.file_description file_description sempre
CB_ENT_EDR.file_size file_size sempre
CB_ENT_EDR.file_version file_version sempre
CB_ENT_EDR.internal_name internal_name sempre
CB_ENT_EDR.lang_id lang_id Se non è null
CB_ENT_EDR.original_filename original_filename sempre
CB_ENT_EDR.os_type os_type sempre
CB_ENT_EDR.private_build private_build Se non è null
CB_ENT_EDR.product_description product_description Se non è null
CB_ENT_EDR.product_name product_name sempre
CB_ENT_EDR.product_version product_version sempre
CB_ENT_EDR.special_build special_build Se non è null
CB_ENT_EDR.trademark trademark Se non è null
CB_ENT_EDR.found_times num_devices sempre
CB_ENT_EDR.first_seen_device_timestamp first_seen_device_timestamp sempre
CB_ENT_EDR.first_seen_device_id first_seen_device_id sempre
CB_ENT_EDR.first_seen_device_name first_seen_device_name sempre
CB_ENT_EDR.last_seen_device_timestamp last_seen_device_timestamp sempre
CB_ENT_EDR.last_seen_device_id last_seen_device_id sempre
CB_ENT_EDR.last_seen_device_name last_seen_device_name sempre
Risultato script
Nome risultato script Opzioni di valore Esempio
is_success Vero/Falso is_success:False
Risultato JSON
{
    "sha256": "e24dd278cec867486b68418c9066ffa9bd4f394dac3ba94125d58415f677f0f4",
    "architecture": [
        "amd64"
    ],
    "available_file_size": 207800,
    "charset_id": 1200,
    "comments": null,
    "company_name": "Example Organization",
    "copyright": "Copyright  © 2019",
    "file_available": true,
    "file_description": "OpenJDK Platform binary",
    "file_size": 207800,
    "file_version": "8.0.2320.9",
    "internal_name": "java",
    "lang_id": null,
    "md5": "afede6f64ed8878bc0cac57e1831a3bc",
    "original_filename": "java.exe",
    "os_type": "WINDOWS",
    "private_build": null,
    "product_description": null,
    "product_name": "OpenJDK Platform 8",
    "product_version": "8.0.2320.9",
    "special_build": null,
    "trademark": null
}
Bacheca casi
Tipo di risultato Valore / Descrizione Tipo
Messaggio di output*

L'azione non deve non riuscire né interrompere l'esecuzione di un playbook:

  • Se l'operazione va a buon fine e almeno una delle entità fornite è stata arricchita, stampa "Entità arricchite correttamente: {0}".format([entity.Identifier]).
  • Se non riesci ad arricchire tutte le entità fornite, stampa "Nessuna entità è stata arricchita".
  • Se non riesci a trovare i dati in VMware Carbon Black Enterprise EDR per arricchire entità specifiche: stampa "L'azione non è riuscita a trovare le informazioni di VMware Carbon Black Enterprise EDR per arricchire le seguenti entità: {0}".format([entity.identifier])
  • Se non riesci a eseguire una delle query di arricchimento, ad esempio l'errore 500 durante la ricezione di una risposta, ma l'altra è corretta, is_success deve essere False, ma l'azione deve arricchire con i dati ottenuti dall'altra risposta e stampare: "Le seguenti entità sono state arricchite parzialmente a causa degli errori durante il recupero dei dati dell'entità:/n {0}".format(entityIdentifier list)

L'azione deve non riuscire e interrompere l'esecuzione di un playbook:

  • Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server o altro, stampa "Failed to execute Enrich Entities action! Error is {0}".format(exception.stacktrace)
Generale