Coletar registros do Carbon Black EDR
Este documento explica como coletar registros do Carbon Black EDR de ambientes de nuvem e locais usando o AWS S3. O analisador extrai campos de mensagens formatadas em JSON, CSV ou syslog, normaliza e mapeia para a UDM. Ele processa vários tipos de eventos do Carbon Black, incluindo conexões de rede, eventos de processo, modificações de arquivos, alterações de registro e hits de IOC, enriquecendo os dados com inteligência de ameaças e informações do dispositivo, quando disponíveis.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps.
- Acesso privilegiado ao IAM e ao S3 da AWS.
- Acesso privilegiado ao Carbon Black EDR na nuvem ou no local.
Configurar o Carbon Black EDR localmente
Configurar o bucket do Amazon S3 para o ambiente local
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket
- Salve o Nome e a Região do bucket para uso posterior.
- Crie um usuário seguindo este guia: Como criar um usuário do IAM.
- Selecione o usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como o Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para uso posterior.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione a política AmazonS3FullAccess.
- Clique em Próxima.
- Clique em Adicionar permissões
Instalar o cb-event-forwarder no servidor EDR local
Instale o repositório CbOpenSource se ele ainda não estiver presente:
cd /etc/yum.repos.d curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
Instale o RPM usando o YUM:
yum install cb-event-forwarder
Se você estiver usando o EDR 7.1.0 ou uma versão mais recente, execute o script a seguir para definir as permissões adequadas necessárias para o EDR:
/usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
Configurar o cb-event-forwarder para gerar registros JSON
Abra o arquivo de configuração:
sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
Modifique os seguintes parâmetros:
[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
Salve e saia usando o teclado:
- Ctrl + X, depois Y e Enter.
Inicie o cb-event-forwarder:
sudo systemctl enable cb-event-forwarder sudo systemctl restart cb-event-forwarder sudo systemctl status cb-event-forwarder
Configurar o encaminhador de eventos do Carbon Black Cloud para o S3
Criar um bucket do AWS S3
- Faça login no console de gerenciamento da AWS.
- Verifique se a região da AWS corresponde à região do encaminhador de eventos:
- Na página Console da AWS, localize a região.
- Use o menu suspenso para selecionar a região correta do encaminhador de eventos.
- A lista a seguir informa a região da AWS aplicável a cada URL do Carbon Black EDR.
- "instance-alias".my.carbonblack.io - Região: US East (N. Virgínia) (us-east-1)
- "instance-alias".my.cbcloud.de - Região: Europa (Frankfurt) (eu-central-1)
- "instance-alias".my.cbcloud.sg Região: Ásia-Pacífico (Singapura) (ap-southeast-1)
- Selecione Serviços.
- Acesse o console do S3.
- Clique em Criar bucket para abrir o assistente Criar bucket.
- Em Nome do bucket, insira um nome exclusivo para o bucket (por exemplo, CB-EDR).
- Verifique se a região padrão é a mesma que você selecionou antes.
- Atualize os padrões de Bloquear acesso público para permitir o acesso público. Isso é necessário para ingerir os registros no Google SecOps.
- Selecione Criar bucket.
Configure o bucket do S3 para permitir que o encaminhador de eventos grave eventos
- Crie um usuário seguindo este guia: Como criar um usuário do IAM.
- Selecione o usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como o Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para uso posterior.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise a política AmazonS3FullAccess.
- Selecione a política.
- Clique em Próxima.
- Clique em Adicionar permissões
Configurar o encaminhamento de eventos no console da EDR
- Faça login no VMware Carbon Black Cloud.
- Acesse a guia Encaminhador de eventos.
- Ative os eventos que você quer que o produto faça upload para o S3.
- Acesse Saída e tipo e defina como S3.
- Forneça o nome do bucket do S3 no seguinte formato:
<region>:<bucket-name>
(por exemplo,us-east-1:cb-edr
). - Selecione Fazer upload do arquivo de credenciais da AWS no formato INI.
Confira um exemplo de perfil:
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1
Clique em Salvar e reinicie o serviço para que as mudanças entrem em vigor.
Configurar feeds
Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:
- Configurações do SIEM > Feeds
- Central de conteúdo > Pacotes de conteúdo
Configure feeds em "Configurações do SIEM" > "Feeds".
Para configurar um feed, siga estas etapas:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do Carbon Black EDR).
- Selecione Amazon S3 como o Tipo de origem.
- Selecione Carbon Black EDR como o Tipo de registro.
- Clique em Próxima.
Especifique valores para os seguintes parâmetros de entrada:
- Região: a região em que o bucket do Amazon S3 está localizado.
- URI do S3: o URI do bucket.
s3:/BUCKET_NAME
- Substitua
BUCKET_NAME
pelo nome real do bucket.
- Substitua
- URI é um: selecione o URI_TYPE de acordo com a configuração do fluxo de registros (Arquivo único | Diretório | Diretório que inclui subdiretórios).
- Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
- ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
- Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.
Clique em Próxima.
Revise a nova configuração do feed na tela Finalizar e clique em Enviar.
Configurar feeds na Central de conteúdo
Especifique valores para os seguintes campos:
- Região: a região em que o bucket do Amazon S3 está localizado.
- URI do S3: o URI do bucket.
s3:/BUCKET_NAME
- Substitua
BUCKET_NAME
pelo nome real do bucket.
- Substitua
- URI é um: selecione o URI_TYPE de acordo com a configuração do fluxo de registros (Arquivo único | Diretório | Diretório que inclui subdiretórios).
- Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
- ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
- Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.
Opções avançadas
- Nome do feed: um valor pré-preenchido que identifica o feed.
- Tipo de origem: método usado para coletar registros no Google SecOps.
- Namespace do recurso: namespace associado ao feed.
- Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
action |
security_result.detection_fields[?key == 'action'].value |
O valor do campo action do registro bruto. |
cb_server |
intermediary.hostname |
O valor do campo cb_server do registro bruto. |
cb_version |
metadata.product_version |
O valor do campo cb_version do registro bruto. |
child_pid |
target.process.pid (para eventos ingress.event.childproc ) |
O valor do campo child_pid do registro bruto quando type é ingress.event.childproc . |
child_process_guid |
target.process.product_specific_process_id (para eventos ingress.event.childproc ) |
"CB:" concatenado com o valor do campo child_process_guid do registro bruto quando type é ingress.event.childproc . |
child_username |
target.user.userid (para eventos ingress.event.childproc ) |
O valor do campo child_username do registro bruto quando type é ingress.event.childproc . |
childproc_guid |
target.process.product_specific_process_id (para eventos endpoint.event.procstart ) |
"CB:" concatenado com o valor do campo childproc_guid do registro bruto quando type é endpoint.event.procstart . |
childproc_hash.0 |
target.process.file.md5 (para eventos endpoint.event.procstart ) |
O primeiro elemento da matriz childproc_hash do registro bruto quando type é endpoint.event.procstart . |
childproc_hash.1 |
target.process.file.sha256 (para eventos endpoint.event.procstart ) |
O segundo elemento da matriz childproc_hash do registro bruto quando type é endpoint.event.procstart . |
childproc_name |
target.process.file.full_path (para eventos endpoint.event.procstart ) |
O valor do campo childproc_name do registro bruto quando type é endpoint.event.procstart . |
childproc_pid |
target.process.pid (para eventos endpoint.event.procstart ) |
O valor do campo childproc_pid do registro bruto quando type é endpoint.event.procstart . |
childproc_publisher.0.name |
security_result.detection_fields[?key == 'childproc_publisher_name'].value (para eventos endpoint.event.procstart ) |
"childproc_publisher_name:" concatenado com o valor de childproc_publisher.0.name do registro bruto quando type é endpoint.event.procstart . |
childproc_publisher.0.state |
security_result.detection_fields[?key == 'childproc_publisher_state'].value (para eventos endpoint.event.procstart ) |
"childproc_publisher_state:" concatenado com o valor de childproc_publisher.0.state do registro bruto quando type é endpoint.event.procstart . |
childproc_reputation |
security_result.detection_fields[?key == 'childproc_reputation'].value (para eventos endpoint.event.procstart ) |
O valor do campo childproc_reputation do registro bruto quando type é endpoint.event.procstart . |
childproc_username |
target.user.userid (para eventos endpoint.event.procstart ) |
O valor do campo childproc_username do registro bruto quando type é endpoint.event.procstart . |
clientIp |
principal.ip , principal.asset.ip |
O valor do campo clientIp do registro bruto. |
cmdline |
target.process.command_line (para eventos feed.query.hit.process e feed.storage.hit.process ), additional.fields[?key == 'cmdline_*'].value.string_value (para eventos watchlist.storage.hit.process ) |
O valor do campo cmdline do registro bruto quando o type é feed.query.hit.process ou feed.storage.hit.process . Para eventos watchlist.storage.hit.process , ele é armazenado em additional.fields com a chave "cmdline_*". |
command_line |
target.process.command_line (para eventos ingress.event.procstart ) |
O valor do campo command_line do registro bruto quando type é ingress.event.procstart . |
comms_ip |
intermediary.ip |
O valor do campo comms_ip do registro bruto. |
computer_name |
principal.hostname , principal.asset.hostname |
O valor do campo computer_name do registro bruto. |
crossproc_api |
additional.fields[?key == 'crossproc_api'].value.string_value (para eventos endpoint.event.apicall ) |
O valor do campo crossproc_api do registro bruto quando type é endpoint.event.apicall . |
crossproc_guid |
additional.fields[?key == 'crossproc_guid'].value.string_value (para eventos endpoint.event.crossproc ) |
O valor do campo crossproc_guid do registro bruto quando type é endpoint.event.crossproc . |
crossproc_hash.0 |
additional.fields[?key == 'crossproc_md5'].value.string_value (para eventos endpoint.event.crossproc ) |
O primeiro elemento da matriz crossproc_hash do registro bruto quando type é endpoint.event.crossproc . |
crossproc_hash.1 |
additional.fields[?key == 'crossproc_sha256'].value.string_value (para eventos endpoint.event.crossproc ) |
O segundo elemento da matriz crossproc_hash do registro bruto quando type é endpoint.event.crossproc . |
crossproc_name |
target.process.file.full_path (para eventos endpoint.event.crossproc ) |
O valor do campo crossproc_name do registro bruto quando type é endpoint.event.crossproc . |
crossproc_publisher.0.name |
security_result.detection_fields[?key == 'crossproc_publisher_name'].value (para eventos endpoint.event.crossproc ) |
"crossproc_publisher_name:" concatenado com o valor de crossproc_publisher.0.name do registro bruto quando o type é endpoint.event.crossproc . |
crossproc_publisher.0.state |
security_result.detection_fields[?key == 'crossproc_publisher_state'].value (para eventos endpoint.event.crossproc ) |
"crossproc_publisher_state:" concatenado com o valor de crossproc_publisher.0.state do registro bruto quando type é endpoint.event.crossproc . |
crossproc_reputation |
additional.fields[?key == 'crossproc_reputation'].value.string_value (para eventos endpoint.event.crossproc ) |
O valor do campo crossproc_reputation do registro bruto quando type é endpoint.event.crossproc . |
crossproc_target |
additional.fields[?key == 'crossproc_target'].value.string_value (para eventos endpoint.event.crossproc ) |
O valor do campo crossproc_target do registro bruto quando type é endpoint.event.crossproc . Convertido para uma string "true" ou "false". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.