VMware Carbon Black Enterprise EDR

Versão da integração: 6.0

Casos de uso de produtos

  1. Realize ações de investigação: receba dados do CB Enterprise EDR como parte de uma análise de alerta nas Operações de segurança do Google.
  2. Realize ações de configuração: configure feeds/listas de observação do CB Enterprise EDR no Google SecOps.

Permissão de produto

Conceitos necessários para acessar as APIs do Carbon Black Enterprise EDR (ThreatHunter):

  1. Nome do host do serviço
  2. Chaves de API
  3. RBAC
  4. Chaves da organização

Nomes de host do serviço

Há dois nomes de host do Carbon Black Cloud:

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

Além disso, temos vários ambientes, como (não é uma lista completa):

  • prod02
  • prod04
  • prod05

Para a API Carbon Black Enterprise EDR (ThreatHunter), os seguintes nomes de host serão usados: https://defense-<environment>.conferdeploy.net/

Chaves de API

As APIs e os serviços do Carbon Black Enterprise EDR (ThreatHunter) são autenticados por chaves de API. Os usuários podem conferir as configurações de chaves de API no console do Carbon Black Cloud em Configurações > Chaves de API.

As chaves de API incluem duas partes:

  • Chave secreta da API (antes chamada de chave de API).
  • ID da API (antes ID do conector).

A autenticação é transmitida para a API pelo cabeçalho HTTP X-Auth-Token.

  1. Para gerar o cabeçalho adequado, concatene a chave secreta da API com o ID da API com uma barra entre eles.
  2. Por exemplo, se a chave secreta da API for ABCD e o ID da API for 1234, o cabeçalho HTTP X-Auth-Token correspondente será: X-Auth-Token: ABCD/1234

Todas as solicitações de API precisam ser autenticadas usando uma chave secreta e um ID da API. Solicitações não autenticadas retornam um erro HTTP 401.

Como conseguir uma chave secreta e um ID de API

  1. Faça login na sua organização do Carbon Black Cloud.
  2. Acesse Configurações > Chaves de API.
  3. Clique em Adicionar chave de API.
  4. Configure nome, nível de acesso etc.
  5. Receba o par de chave secreta e ID da API.

Isso permite que um administrador da organização defina uma chave de API e tenha acesso à chave secreta e ao ID da API, que são necessários para autenticar a solicitação de API. Além disso, os administradores podem restringir o uso dessa chave de API a um conjunto específico de endereços IP por motivos de segurança.

Níveis de acesso da chave de API

Atualmente, há quatro níveis principais de acesso para chaves de API disponíveis na página "Chaves de API". Cada nível de acesso oferece diferentes níveis de acesso às rotas da API:

  1. Nível de acesso à chave personalizada: oferece autorização personalizável.

    • As chaves de API personalizadas são resultado dos nossos esforços de controle de acesso baseado em papéis (RBAC).
    • Permite que os clientes apliquem controles de acesso e criem chaves de API com privilégios mínimos.
    • As chaves de API personalizadas podem receber papéis de usuário ou níveis de acesso.
  2. Nível de acesso da chave de API: fornece acesso a todas as APIs, exceto a API Notifications e a API Live Response.

  3. Nível de acesso à chave do SIEM: fornece acesso à API Notifications.

  4. Nível de acesso à chave de resposta em tempo real: fornece acesso a todas as APIs disponíveis para (1) acima, além da API Live Response.

Correlação entre o serviço Carbon Black Enterprise EDR (ThreatHunter) e o nível de acesso à API. A API da plataforma está em negrito.

Categoria de API/serviço Níveis de acesso permitidos da chave de API
PSC /appservices/* Personalizado (com as permissões adequadas)
CB-TH /threathunter/* API personalizada (com as permissões adequadas)
CB-LO /livequery/* Personalizado (com as permissões adequadas)
CB-D /integrationServices/v3/notification/ SIEM
CB-D /integrationServices/* Resposta da APILive

Chaves da organização

Além das chaves de API, muitas APIs ou serviços do Carbon Black Cloud exigem uma org_key no caminho da solicitação de API. Isso é para oferecer suporte a clientes que gerenciam várias organizações.

Você encontra a org_key no console do Carbon Black Cloud em "Settings" > "API Keys".

Configurar o acesso à API para a integração do Carbon Black Enterprise EDR (ThreatHunter) com o Google SecOps

Para configurar o acesso à API para a integração do Carbon Black Enterprise EDR (ThreatHunter) com o Google SecOps, siga estas etapas:

  1. Faça login no console do Carbon Black Cloud, acesse Configurações > Acesso à API.
  2. Na página "Acesso à API", acesse "Níveis de acesso".
  3. Na página "Níveis de acesso", clique em + Adicionar nível de acesso.
  4. Na janela aberta, forneça um nome e uma descrição para o novo nível de acesso e selecione permissões como na captura de tela abaixo:

    Lista de permissões obrigatórias

  5. Volte para a guia "Acesso à API".

  6. Clique em + Adicionar chave de API para criar uma.

  7. Na guia aberta, preencha o campo obrigatório e selecione o nível de acesso que você configurou na etapa 4:

    Editar configurações da chave de API

  8. Depois de clicar em Salvar, o ID e a chave secreta da API vão aparecer. Salve esses valores, porque eles serão mostrados apenas uma vez.

  9. Depois que o ID e a chave secreta da API forem salvos, o acesso à API no Carbon Black Enterprise EDR (ThreatHunter) será concluído.

Configurar a integração do VMware Carbon Black Enterprise EDR (Threat Hunter) no Google SecOps

Para instruções detalhadas sobre como configurar uma integração no Google SecOps, consulte Configurar integrações.

Parâmetros de integração

Use os seguintes parâmetros para configurar a integração:

Nome de exibição do parâmetro Tipo Valor padrão É obrigatório Descrição
Nome da instância String N/A Não Nome da instância em que você pretende configurar a integração.
Dexcription String N/A Não Descrição da instância.
Raiz da API String N/A Sim URL raiz da API do Vmware Carbon Black Cloud.
Chave da organização String N/A Sim Chave da organização do Vmware Carbon Black Cloud.
ID da API String N/A Sim ID da API do VMware Carbon Black Cloud (ID da chave de API personalizada).
Chave secreta da API String N/A Sim Chave secreta da API do VMware Carbon Black Cloud (chave secreta da API personalizada).
Executar remotamente Caixa de seleção N/A Não Marque a caixa para executar a integração configurada remotamente. Depois de marcada, a opção aparece para selecionar o usuário remoto (agente).

Ações

Ping

Descrição

Teste a conectividade com o VMware Carbon Black Enterprise EDR usando os parâmetros fornecidos na página de configuração da integração na guia "Marketplace" do Google Security Operations.

Parâmetros

N/A

Exemplos de casos de uso de playbook

A ação é usada para testar a conectividade na página de configuração da integração na guia "Marketplace" do Google Security Operations. Ela pode ser executada como uma ação manual, não usada em playbooks.

Executar em

Essa ação não é executada em entidades nem tem parâmetros de entrada obrigatórios.

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False
Painel de casos
Tipo de resultado Valor/descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:

  • Se a conexão for bem-sucedida, imprima "Conexão com o servidor VMware Carbon Black Enterprise EDR concluída com sucesso usando os parâmetros de conexão fornecidos!"

A ação precisa falhar e interromper a execução de um playbook:

  • Se não funcionar, imprima "Failed to connect to the VMware Carbon Black Enterprise EDR server! O erro é {0}".format(exception.stacktrace)
Geral

Descrição

Pesquise informações sobre a atividade do processo no host com o sensor do CB com base nos parâmetros de pesquisa fornecidos. A ação aceita entidades do Host Google SecOps.

Parâmetros

Nome de exibição do parâmetro Tipo Valor padrão É obrigatório Descrição
Consulta String N/A Não Consulta a ser executada na pesquisa de processos. Por exemplo, process_name:svchost.exe para pesquisar com base no nome do processo ou process_hash:9520a99e77d6196d0d09833146424113 para pesquisar com base no hash do processo.
Período Número inteiro 4 Não Especifique um período em horas para buscar alertas.
Limite de registros Número inteiro 20 Sim Especifique quantos registros podem ser retornados pela ação.
Ordenar por String N/A Não Especifique um parâmetro para classificar os dados.
Ordem de classificação DDL ASC Não Ordem de classificação.

Exemplos de casos de uso de playbook

Pesquise eventos causados por processos com base nos parâmetros de pesquisa fornecidos.

Durante a análise de um alerta relacionado a um host específico gerenciado pela plataforma do CB, o usuário quer investigar o host e pesquisar eventos específicos causados por processos em execução com base nos parâmetros de pesquisa fornecidos. Os usuários podem executar essa ação para atividades de busca de ameaças, pesquisando proativamente se há processos/eventos suspeitos no host em questão.

Executar em

Essa ação é executada na entidade "Host".

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False
Resultado do 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"
        ]
    },
    ...
]  }
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:

  • Se der tudo certo: imprima "Encontrei informações de processo para as seguintes entidades:\n {0}".format( entity.Identifiers list)
  • Se is_success=False para todas as entidades fornecidas: imprima "Nenhum resultado de pesquisa foi retornado".
  • Se is_success=False para algumas das entidades fornecidas porque não é possível encontrar resultados para os parâmetros de pesquisa especificados: imprima "Não foi possível encontrar informações de processo para as seguintes entidades:\n {0}".format(lista entity.Identifiers)
  • Se is_success=False para algumas das entidades fornecidas porque houve um erro ao executar a pesquisa (por exemplo, tempo limite), imprima "Não foi possível receber resultados devido a erros ao executar a pesquisa para as seguintes entidades:/n {0}".format(entity.identifiers list)

A ação precisa falhar e interromper a execução de um playbook:

  • Se houver um erro fatal, como credenciais incorretas, sem conexão com o servidor, etc., imprima "Falha ao executar a ação! O erro é {0}".format(exception.stacktrace)
Ambos
Tabela

Nome da tabela:processar resultados da pesquisa para {entityIdentifier}

Colunas:

  • ID do evento (event_id)
  • Tipo de evento ("enriched_event_type")
  • Nome do processo (process_name)
  • GUID do processo (process_guid)
  • PID do processo (process_pid)
  • GUID do processo pai (parent_guid)
  • PID do processo pai (parent_pid)
  • Processar hash de arquivo (process_hash)
  • Processar como ("process_username")
  • Hora da criação ("device_timestamp")
  • Descrição do evento (event_description)
  • Endereço IPv4 local (event_network_local_ipv4)
  • Protocolo de rede (event_network_protocol)
  • Endereço IPv4 remoto (event_network_remote_ipv4)
  • Porta remota (event_network_remote_port)
Entidade

Receber eventos associados ao processo por GUID do processo

Descrição

Receba eventos associados a processos específicos com base nas informações do VMware Carbon Black Enterprise EDR. Essa ação pode gerar resultados mais detalhados sobre a atividade de um processo específico do que a ação "Pesquisa de processos". Para que a ação funcione, o artefato processado pelo Google SecOps transmitido a ela precisa ser um tipo de GUID de processo.

Parâmetros

Nome de exibição do parâmetro Tipo Valor padrão É obrigatório Descrição
Critérios de pesquisa String N/A Não Especifique um critério de pesquisa para a solicitação. No momento, apenas os valores de "event_type" são aceitos como critérios de pesquisa, por exemplo, netconn. Vários valores são aceitos como uma string separada por vírgulas.
Consulta Pesquisar N/A Sim Consulta a ser executada na pesquisa de processos.Por exemplo, "netconn_action:ACTION_CONNECTION_CREATE OR netconn_action:ACTION_CONNECTION_ESTABLISHED"
Período Número inteiro 4 Não Especifique um período em horas para buscar alertas.
Limite de registros Número inteiro 20 Não Especifique quantos registros podem ser retornados pela ação.
Ordenar por String N/A Não Especifique um parâmetro para classificar os dados.
Ordem de classificação DDL ASC Não Ordem de classificação

Exemplos de casos de uso de playbook

Investigue a atividade de um processo específico.

Durante a análise de um alerta relacionado a um host específico gerenciado pela plataforma CB, foi descoberto que o host tem um processo suspeito em execução. O usuário do Google SecOps precisa de uma ação que use a funcionalidade do CB Enterprise EDR para receber eventos associados a um determinado processo do Google SecOps.

Executar em

Essa ação não é executada em entidades.

Resultados da ação

Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False
Resultado do 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
        },
        ...
    ]
}
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:

  • Se for bem-sucedido: imprima "Encontrou eventos para os seguintes GUIDs de processo:\n {0}".format( lista de GUIDs de processo)
  • Se is_success=False para todos os guids de processo fornecidos: imprima "Nenhum resultado de pesquisa foi retornado".
  • Se is_success=False para algumas das entidades fornecidas porque não é possível encontrar o GUID do processo especificado, imprima "Não foi possível encontrar informações para os seguintes processos:\n {0}".format(lista de GUIDs de processo).
  • Se is_success=False para algumas das entidades fornecidas porque houve um erro ao executar a pesquisa (por exemplo, tempo limite): print "Failed to get results because of errors running search for the following process guids:/n {0}".format(entity.identifiers list)

A ação precisa falhar e interromper a execução de um playbook:

  • Se houver um erro fatal, como credenciais incorretas, sem conexão com o servidor, etc., imprima "Falha ao executar a ação! O erro é {0}".format(exception.stacktrace)
Geral
Tabela

Nome da tabela:eventos encontrados para o processo {process artifact identifier}

Colunas:são geradas automaticamente com base nos resultados retornados.

Entidade

Enriquecer hash

Descrição

Enriquece a entidade de hash de arquivo do Google SecOps com base nas informações do VMware Carbon Black Enterprise EDR.

Exemplos de casos de uso de playbook

Aprimore a entidade de hash de arquivo do Google SecOps com informações do CB Enterprise EDR.

Durante o processamento de um possível alerta de infecção por malware associado a um host com sensor da plataforma CB, o usuário precisa ter dados de enriquecimento do CB Enterprise EDR (parte da plataforma) sobre hashs de arquivo específicos associados ao alerta em questão por motivos de investigação. Por exemplo, como parte do enriquecimento, o usuário pode receber metadados relacionados ao hash do arquivo, quando esse hash foi detectado pela primeira vez na organização e em qual host.

Executar em

Essa ação é executada na entidade "Filehash" no formato Sha256.

Resultados da ação

Enriquecimento de entidades
Nome do campo de enriquecimento Origem (chave JSON) Lógica: quando aplicar
CB_ENT_EDR.sha256 sha256 sempre
CB_ENT_EDR.md5 md5 sempre
CB_ENT_EDR.architecture arquitetura sempre
CB_ENT_EDR.available_file_size available_file_size sempre
CB_ENT_EDR.charset_id charset_id sempre
CB_ENT_EDR.comments comentários Se não for nulo
CB_ENT_EDR.company_name company_name sempre
CB_ENT_EDR.copyright direitos autorais 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 não for nulo
CB_ENT_EDR.original_filename original_filename sempre
CB_ENT_EDR.os_type os_type sempre
CB_ENT_EDR.private_build private_build Se não for nulo
CB_ENT_EDR.product_description product_description Se não for nulo
CB_ENT_EDR.product_name product_name sempre
CB_ENT_EDR.product_version product_version sempre
CB_ENT_EDR.special_build special_build Se não for nulo
CB_ENT_EDR.trademark trademark Se não for nulo
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
Resultado do script
Nome do resultado do script Opções de valor Exemplo
is_success Verdadeiro/Falso is_success:False
Resultado do 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
}
Painel de casos
Tipo de resultado Valor / Descrição Tipo
Mensagem de saída*

A ação não pode falhar nem interromper a execução de um playbook:

  • Se a operação for bem-sucedida e pelo menos uma das entidades fornecidas for enriquecida, imprima "Entidades enriquecidas com sucesso: {0}".format([entity.Identifier]).
  • Se não for possível enriquecer todas as entidades fornecidas, imprima "Nenhuma entidade foi enriquecida".
  • Se não for possível encontrar dados no VMware Carbon Black Enterprise EDR para enriquecer entidades específicas, imprima "Não foi possível encontrar informações do VMware Carbon Black Enterprise EDR para enriquecer as seguintes entidades: {0}".format([entity.identifier])
  • Se não for possível executar uma das consultas de enriquecimento, por exemplo, erro 500 ao receber uma resposta, mas a outra estiver ok, "is_success" será "False", mas a ação vai enriquecer com os dados da outra resposta e imprimir: "As seguintes entidades foram parcialmente enriquecidas devido a erros ao receber dados de entidade:/n {0}".format(lista de identificadores de entidade)

A ação precisa falhar e interromper a execução de um playbook:

  • Se houver um erro fatal, como credenciais incorretas, sem conexão com o servidor, entre outros, imprima "Falha ao executar a ação "Enriquecer entidades"! O erro é {0}".format(exception.stacktrace)
Geral