Recolha registos do Carbon Black EDR
Este documento explica como recolher registos do Carbon Black EDR de ambientes na nuvem e no local através do AWS S3. O analisador extrai campos de mensagens formatadas em JSON, CSV ou syslog, normaliza-os e mapeia-os para o UDM. Processa vários tipos de eventos do Carbon Black, incluindo ligações de rede, eventos de processos, modificações de ficheiros, alterações de registo e resultados de IOCs, enriquecendo os dados com informações sobre ameaças e informações de dispositivos, quando disponíveis.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps.
- Acesso privilegiado ao AWS IAM e ao S3.
- Acesso privilegiado ao Carbon Black EDR na nuvem ou no local.
Configure o Carbon Black EDR no local
Configure o contentor do Amazon S3 para a solução no local
- Crie um contentor do Amazon S3 seguindo este manual do utilizador: Criar um contentor
- Guarde o Nome e a Região do contentor para utilização posterior.
- Crie um utilizador seguindo este guia do utilizador: Criar um utilizador do IAM.
- Selecione o utilizador criado.
- Selecione o separador Credenciais de segurança.
- Clique em Criar chave de acesso na secção Chaves de acesso.
- Selecione Serviço de terceiros como o Exemplo de utilização.
- Clicar em Seguinte.
- Opcional: adicione uma etiqueta de descrição.
- Clique em Criar chave de acesso.
- Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para utilização posterior.
- Clique em Concluído.
- Selecione o separador Autorizações.
- Clique em Adicionar autorizações na secção Políticas de autorizações.
- Selecione Adicionar autorizações.
- Selecione Anexar políticas diretamente.
- Pesquise e selecione a política AmazonS3FullAccess.
- Clicar em Seguinte.
- Clique em Adicionar autorizações.
Instale o cb-event-forwarder no servidor EDR no local
Instale o repositório CbOpenSource se ainda não estiver presente:
cd /etc/yum.repos.d curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
Instale o RPM através do YUM:
yum install cb-event-forwarder
Se estiver a usar o EDR 7.1.0 ou superior, execute o seguinte script para definir as autorizações adequadas necessárias para o EDR:
/usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
Configure o cb-event-forwarder para gerar registos JSON
Abra o ficheiro 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
Guardar e sair através do teclado:
- Ctrl + X e, de seguida, Y e Enter.
Start cb-event-forwarder:
sudo systemctl enable cb-event-forwarder sudo systemctl restart cb-event-forwarder sudo systemctl status cb-event-forwarder
Configure o encaminhador de eventos do Carbon Black Cloud para o S3
Crie um contentor do AWS S3
- Inicie sessão na AWS Management Console.
- Certifique-se de que a região da AWS corresponde à região do encaminhador de eventos:
- Na página AWS Console, localize a região.
- Use o menu pendente para selecionar a região correta do encaminhador de eventos.
- A lista seguinte indica a região da AWS aplicável para cada URL do Carbon Black EDR.
- "instance-alias".my.carbonblack.io – Região: US East (N. do Norte) (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.
- Aceda à consola do S3.
- Clique em Criar contentor para abrir o assistente Criar contentor.
- Em Nome do contentor, introduza um nome exclusivo para o contentor (por exemplo, CB-EDR).
- Certifique-se de que a Região é predefinida para a que selecionou anteriormente.
- Atualize as predefinições de Bloquear acesso público para permitir o acesso público (isto é necessário para carregar os registos para o Google SecOps).
- Selecione Criar contentor.
Configure o contentor S3 para permitir que o encaminhador de eventos escreva eventos
- Crie um utilizador seguindo este guia do utilizador: criar um utilizador do IAM.
- Selecione o utilizador criado.
- Selecione o separador Credenciais de segurança.
- Clique em Criar chave de acesso na secção Chaves de acesso.
- Selecione Serviço de terceiros como o Exemplo de utilização.
- Clicar em Seguinte.
- Opcional: adicione uma etiqueta de descrição.
- Clique em Criar chave de acesso.
- Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para utilização posterior.
- Clique em Concluído.
- Selecione o separador Autorizações.
- Clique em Adicionar autorizações na secção Políticas de autorizações.
- Selecione Adicionar autorizações.
- Selecione Anexar políticas diretamente.
- Pesquise a política AmazonS3FullAccess.
- Selecione a política.
- Clicar em Seguinte.
- Clique em Adicionar autorizações.
Configure o encaminhamento de eventos na consola de EDR
- Inicie sessão no VMware Carbon Black Cloud.
- Aceda ao separador Encaminhador de eventos
- Ative os eventos que quer que o produto carregue para o S3.
- Aceda a Output and Type e defina como S3.
- Indique o nome do contentor do S3 no seguinte formato:
<region>:<bucket-name>
(por exemplo,us-east-1:cb-edr
). - Selecione o ficheiro carregar credenciais da AWS no formato INI.
Segue-se um exemplo de um perfil:
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1
Clique em Guardar e reinicie o serviço para que as alterações entrem em vigor.
Configure feeds
Para configurar um feed, siga estes passos:
- Aceda a Definições do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na página seguinte, clique em Configurar um único feed.
- No campo Nome do feed, introduza um nome para o feed (por exemplo, Registos de EDR do Carbon Black).
- Selecione Amazon S3 V2 como o Tipo de origem.
- Selecione Carbon Black EDR como o Tipo de registo.
- Clicar em Seguinte.
Especifique valores para os seguintes parâmetros de entrada:
- URI do S3: o URI do contentor.
s3:/BUCKET_NAME
- Substitua
BUCKET_NAME
pelo nome real do contentor.
- Substitua
- Opções de eliminação da origem: selecione a opção de eliminação de acordo com a sua preferência.
- URI do S3: o URI do contentor.
Clicar em Seguinte.
Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
action |
security_result.detection_fields[?key == 'action'].value |
O valor do campo action do registo não processado. |
cb_server |
intermediary.hostname |
O valor do campo cb_server do registo não processado. |
cb_version |
metadata.product_version |
O valor do campo cb_version do registo não processado. |
child_pid |
target.process.pid (para ingress.event.childproc eventos) |
O valor do campo child_pid do registo não processado quando o campo type é ingress.event.childproc . |
child_process_guid |
target.process.product_specific_process_id (para ingress.event.childproc eventos) |
"CB:" concatenado com o valor do campo child_process_guid do registo não processado quando o campo type é ingress.event.childproc . |
child_username |
target.user.userid (para ingress.event.childproc eventos) |
O valor do campo child_username do registo não processado quando o campo type é ingress.event.childproc . |
childproc_guid |
target.process.product_specific_process_id (para endpoint.event.procstart eventos) |
"CB:" concatenado com o valor do campo childproc_guid do registo não processado quando o campo type é endpoint.event.procstart . |
childproc_hash.0 |
target.process.file.md5 (para endpoint.event.procstart eventos) |
O primeiro elemento da matriz childproc_hash do registo não processado quando type é endpoint.event.procstart . |
childproc_hash.1 |
target.process.file.sha256 (para endpoint.event.procstart eventos) |
O segundo elemento da matriz childproc_hash do registo não processado quando type é endpoint.event.procstart . |
childproc_name |
target.process.file.full_path (para endpoint.event.procstart eventos) |
O valor do campo childproc_name do registo não processado quando o campo type é endpoint.event.procstart . |
childproc_pid |
target.process.pid (para endpoint.event.procstart eventos) |
O valor do campo childproc_pid do registo não processado quando o campo type é endpoint.event.procstart . |
childproc_publisher.0.name |
security_result.detection_fields[?key == 'childproc_publisher_name'].value (para endpoint.event.procstart eventos) |
"childproc_publisher_name:" concatenado com o valor de childproc_publisher.0.name do registo não processado quando type é endpoint.event.procstart . |
childproc_publisher.0.state |
security_result.detection_fields[?key == 'childproc_publisher_state'].value (para endpoint.event.procstart eventos) |
"childproc_publisher_state:" concatenado com o valor de childproc_publisher.0.state do registo não processado quando type é endpoint.event.procstart . |
childproc_reputation |
security_result.detection_fields[?key == 'childproc_reputation'].value (para endpoint.event.procstart eventos) |
O valor do campo childproc_reputation do registo não processado quando o campo type é endpoint.event.procstart . |
childproc_username |
target.user.userid (para endpoint.event.procstart eventos) |
O valor do campo childproc_username do registo não processado quando o campo type é endpoint.event.procstart . |
clientIp |
principal.ip , principal.asset.ip |
O valor do campo clientIp do registo não processado. |
cmdline |
target.process.command_line (para eventos de feed.query.hit.process e feed.storage.hit.process ), additional.fields[?key == 'cmdline_*'].value.string_value (para eventos de watchlist.storage.hit.process ) |
O valor do campo cmdline do registo não processado quando o campo type é feed.query.hit.process ou feed.storage.hit.process . Para eventos watchlist.storage.hit.process , é armazenado em additional.fields com a chave "cmdline_*". |
command_line |
target.process.command_line (para ingress.event.procstart eventos) |
O valor do campo command_line do registo não processado quando o campo type é ingress.event.procstart . |
comms_ip |
intermediary.ip |
O valor do campo comms_ip do registo não processado. |
computer_name |
principal.hostname , principal.asset.hostname |
O valor do campo computer_name do registo não processado. |
crossproc_api |
additional.fields[?key == 'crossproc_api'].value.string_value (para endpoint.event.apicall eventos) |
O valor do campo crossproc_api do registo não processado quando o campo type é endpoint.event.apicall . |
crossproc_guid |
additional.fields[?key == 'crossproc_guid'].value.string_value (para endpoint.event.crossproc eventos) |
O valor do campo crossproc_guid do registo não processado quando o campo type é endpoint.event.crossproc . |
crossproc_hash.0 |
additional.fields[?key == 'crossproc_md5'].value.string_value (para endpoint.event.crossproc eventos) |
O primeiro elemento da matriz crossproc_hash do registo não processado quando type é endpoint.event.crossproc . |
crossproc_hash.1 |
additional.fields[?key == 'crossproc_sha256'].value.string_value (para endpoint.event.crossproc eventos) |
O segundo elemento da matriz crossproc_hash do registo não processado quando type é endpoint.event.crossproc . |
crossproc_name |
target.process.file.full_path (para endpoint.event.crossproc eventos) |
O valor do campo crossproc_name do registo não processado quando o campo type é endpoint.event.crossproc . |
crossproc_publisher.0.name |
security_result.detection_fields[?key == 'crossproc_publisher_name'].value (para endpoint.event.crossproc eventos) |
"crossproc_publisher_name:" concatenado com o valor de crossproc_publisher.0.name do registo não processado quando type é endpoint.event.crossproc . |
crossproc_publisher.0.state |
security_result.detection_fields[?key == 'crossproc_publisher_state'].value (para endpoint.event.crossproc eventos) |
"crossproc_publisher_state:" concatenado com o valor de crossproc_publisher.0.state do registo não processado quando type é endpoint.event.crossproc . |
crossproc_reputation |
additional.fields[?key == 'crossproc_reputation'].value.string_value (para endpoint.event.crossproc eventos) |
O valor do campo crossproc_reputation do registo não processado quando o campo type é endpoint.event.crossproc . |
crossproc_target |
additional.fields[?key == 'crossproc_target'].value.string_value (para endpoint.event.crossproc eventos) |
O valor do campo crossproc_target do registo não processado quando o campo type é endpoint.event.crossproc . Convertido numa string "true" ou "false". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.