Recolha registos do Carbon Black App Control
Este documento explica como recolher registos do Carbon Black App Control. O analisador suporta os formatos CEF e JSON. Primeiro, tenta analisar a entrada como JSON. Se falhar, trata a entrada como CEF, faz substituições de texto, extrai campos CEF, mapeia-os para UDM e define o tipo de evento como GENERIC_EVENT
. Caso contrário, usa um ficheiro de inclusão de mapeamento da UDM específico de JSON separado.
Antes de começar
- Certifique-se de que tem uma instância do Google Security Operations.
- Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
. - Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
- Servidor do Carbon Black App Control (CB Protection) (recomendada a versão 8.x ou posterior).
- Certifique-se de que tem acesso privilegiado ao Carbon Black App Control.
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
- Para ver opções de instalação adicionais, consulte este guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml
. Normalmente, encontra-se no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yaml
da seguinte forma:receivers: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:11592" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: JSON namespace: cb_app_control raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>
pelo ID de cliente real.Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente do Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o controlo de apps do CB para enviar registos Syslog
- Inicie sessão na consola CB App Control com uma conta de administrador.
- Aceda a Administração > Configuração do sistema > Registo externo
- Na secção Registo de eventos externos:
- Ativar registo Syslog: selecione a caixa de verificação Syslog ativado.
- Endereço do servidor:
<Bindplane Server IP>
. - Porta:
<Bindplane Server PORT>
. - Protocolo: selecione TCP.
- Formato Syslog: selecione JSON.
- Em Opções de registo de eventos, selecione os tipos de registos a enviar:
- Violações de políticas
- Eventos de monitorização da integridade de ficheiros (FIM)
- Eventos de autenticação de utilizadores
- Dados de informações sobre ameaças
- Clique em Guardar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
ABId |
principal.asset.asset_id |
O ABId do registo JSON é usado como parte do ID do recurso no formato PRODUCT_SPECIFIC_ID:{ABId}-{Bit9Server} . |
Bit9Server |
principal.asset.asset_id |
Usado como parte do ID do recurso do principal, combinado com ABId . Também usado para construir o campo metadata.url_back_to_product . |
CommandLine |
about.process.command_line |
Mapeado diretamente. |
EventType |
metadata.product_event_type |
Mapeado com o EventTypeId correspondente entre parênteses retos (por exemplo, [5] - Discovery ). |
EventTypeId |
metadata.product_event_type |
Usado com EventType para preencher metadata.product_event_type . |
EventSubType |
metadata.description |
Anexado ao campo metadata.description . |
EventSubTypeId |
metadata.description |
Não mapeado explicitamente, mas contribui potencialmente para a descrição com base na lógica interna do analisador. |
externalId |
metadata.product_log_id |
Mapeado diretamente. |
FileHash |
about.file.sha256 |
Mapeado diretamente. |
FileName |
additional.fields (com a chave FileName ) |
Adicionado como um campo adicional. Também usado como parte das informações de ficheiros em metadata.description para alguns eventos. |
FilePath |
about.file.full_path |
Mapeado diretamente. |
FileThreat |
additional.fields (com a chave fileThreat ) |
Adicionado como um campo adicional. |
FileTrust |
additional.fields (com a chave fileTrust ) |
Adicionado como um campo adicional. |
HostId |
principal.asset.asset_id |
Usado para criar o URL de volta para o produto em metadata.url_back_to_product . |
HostName |
target.hostname |
Mapeado diretamente. |
HostIP |
target.ip |
Mapeado diretamente. |
Message |
metadata.description |
Mapeado diretamente. |
PathName |
about.file.full_path |
Mapeado diretamente. |
Platform |
target.platform |
Mapeado para o valor enum WINDOWS . |
Policy |
additional.fields (com a chave Policy ) |
Adicionado como um campo adicional. |
PolicyId |
additional.fields (com a chave PolicyId ) |
Adicionado como um campo adicional. |
ProcessKey |
additional.fields (com a chave ProcessKey ) |
Adicionado como um campo adicional. |
ProcessPath |
about.process.command_line |
Mapeado diretamente. |
ProcessPathName |
about.process.command_line |
Mapeado diretamente. |
ProcessThreat |
additional.fields (com a chave ProcessThreat ) |
Adicionado como um campo adicional. |
ProcessTrust |
additional.fields (com a chave ProcessTrust ) |
Adicionado como um campo adicional. |
RuleName |
additional.fields (com a chave ruleName ) |
Adicionado como um campo adicional. |
Timestamp |
metadata.event_timestamp |
Mapeado diretamente. |
UserName |
target.user.user_display_name |
Mapeado diretamente. |
UserSid |
principal.user.userid |
Mapeado diretamente. |
agent.ephemeral_id |
observer.labels (com a chave ephemeral_id ) |
Adicionado como etiqueta de observador. |
agent.name |
principal.hostname , observer.hostname , observer.user.userid |
Mapeado para vários campos. |
agent.type |
observer.application |
Mapeado diretamente. |
agent.version |
metadata.product_version |
Mapeado diretamente para registos JSON. Para registos CEF, extraídos da mensagem CEF. |
cat |
security_result.category_details |
Mapeado diretamente. |
cs1 |
additional.fields (com a chave rootHash ou outra cs1Label) |
Adicionado como um campo adicional com a chave definida por cs1Label . |
cs1Label |
additional.fields |
Usado como chave para o campo adicional preenchido por cs1 . |
cs2 |
additional.fields (com a chave installerFilename ou outra cs2Label) |
Adicionado como um campo adicional com a chave definida por cs2Label . |
cs2Label |
additional.fields |
Usado como chave para o campo adicional preenchido por cs2 . |
cs3 |
additional.fields (com a chave Policy ou outra cs3Label) |
Adicionado como um campo adicional com a chave definida por cs3Label . |
cs3Label |
additional.fields |
Usado como chave para o campo adicional preenchido por cs3 . |
cs5 |
additional.fields (com a chave ruleName ou outra cs5Label) |
Adicionado como um campo adicional com a chave definida por cs5Label . |
cs5Label |
additional.fields |
Usado como chave para o campo adicional preenchido por cs5 . |
cfp1 |
additional.fields (com a chave fileTrust ou outra cfp1Label) |
Adicionado como um campo adicional com a chave definida por cfp1Label . |
cfp1Label |
additional.fields |
Usado como chave para o campo adicional preenchido por cfp1 . |
cfp2 |
additional.fields (com a chave processTrust ou outra cfp2Label) |
Adicionado como um campo adicional com a chave definida por cfp2Label . |
cfp2Label |
additional.fields |
Usado como chave para o campo adicional preenchido por cfp2 . |
deviceProcessName |
about.process.command_line |
Mapeado diretamente. |
dhost |
target.hostname |
Mapeado diretamente. |
dst |
target.ip |
Mapeado diretamente. |
duser |
target.user.user_display_name |
Mapeado diretamente. |
dvchost |
about.hostname |
Mapeado diretamente. |
eventId |
additional.fields (com a chave eventId ) |
Adicionado como um campo adicional. |
fileHash |
about.file.sha256 |
Mapeado diretamente. |
flexString1 |
additional.fields (com a chave fileThreat ou outra flexString1Label) |
Adicionado como um campo adicional com a chave definida por flexString1Label . |
flexString1Label |
additional.fields |
Usado como chave para o campo adicional preenchido por flexString1 . |
flexString2 |
additional.fields (com a chave processThreat ou outra flexString2Label) |
Adicionado como um campo adicional com a chave definida por flexString2Label . |
flexString2Label |
additional.fields |
Usado como chave para o campo adicional preenchido por flexString2 . |
fname |
additional.fields (com a chave fname ) |
Adicionado como um campo adicional. Também usado como parte das informações de ficheiros em metadata.description para alguns eventos. |
host.architecture |
target.asset.hardware.cpu_platform |
Mapeado diretamente. |
host.hostname |
target.asset.asset_id |
Usado como parte do ID do recurso de destino (Host Id: {host.hostname} ). Também mapeado para target.hostname . |
host.id |
target.asset.asset_id |
Usado como parte do ID do recurso de destino (Host Id: {host.id} ). |
host.ip |
target.asset.ip |
Mapeado diretamente. |
host.mac |
target.mac |
Mapeado diretamente. |
host.name |
target.hostname |
Mapeado diretamente. |
host.os.build |
target.platform_patch_level |
Mapeado diretamente. |
host.os.kernel |
target.platform_patch_level |
Anexado ao target.platform_patch_level . |
host.os.platform |
target.platform |
Mapeado para o valor enum WINDOWS . |
host.os.type |
target.platform |
Mapeado para o valor enum WINDOWS . |
host.os.version |
target.platform_version |
Mapeado diretamente. |
log.file.path |
target.file.full_path |
Mapeado diretamente. |
metadata.event_type |
metadata.event_type |
Definido como GENERIC_EVENT para registos CEF e SYSTEM_AUDIT_LOG_UNCATEGORIZED para registos JSON. |
metadata.log_type |
metadata.log_type |
Definido como CB_EDR . |
metadata.product_log_id |
metadata.product_log_id |
Mapeado a partir de externalId para registos CEF. Não aplicável a registos JSON. |
metadata.product_name |
metadata.product_name |
Definido como App Control para registos CEF e CB_APP_CONTROL para registos JSON. |
metadata.product_version |
metadata.product_version |
Extraído da mensagem CEF para registos CEF. Mapeado de agent.version para registos JSON. |
metadata.vendor_name |
metadata.vendor_name |
Definido como Carbon Black . |
msg |
metadata.description , additional.fields |
Usado para preencher metadata.description e, potencialmente, campos adicionais com base na lógica do analisador. |
sproc |
principal.process.command_line |
Mapeado diretamente. |
metadata.url_back_to_product |
metadata.url_back_to_product |
Construído com os campos Bit9Server e HostId para registos JSON. Não aplicável a registos CEF. |
security_result.severity |
security_result.severity |
Definido como MEDIUM . |
timestamp |
events.timestamp |
Mapeado diretamente para registos JSON. Para registos CEF, a lógica do analisador determina a data/hora com base no campo rt do registo não processado, se disponível, ou no campo collection_time , se rt não estiver presente. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.