Coletar registros do Carbon Black App Control
Este documento explica como coletar registros do Carbon Black App Control. O analisador oferece suporte aos formatos CEF e JSON. Primeiro, ele tenta analisar a entrada como JSON. Se isso falhar, ele vai tratar a entrada como CEF, realizar substituições de texto, extrair campos CEF, mapeá-los para o UDM e definir o tipo de evento como "GENERIC_EVENT". Caso contrário, ele usa um arquivo de inclusão de mapeamento UDM específico do JSON.
Antes de começar
- Verifique se você tem uma instância do Google Security Operations.
- Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com
systemd
. - Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
- Servidor Carbon Black App Control (CB Protection) (recomendado: versão 8.x ou mais recente).
- Verifique se você tem acesso privilegiado ao Carbon Black App Control.
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o BindPlane será instalado.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do Bindplane
Instalação do Windows
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este 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 este comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Outros recursos de instalação
- Para mais opções de instalação, consulte este guia de instalação.
Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele está no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o arquivo usando um editor de texto (por exemplo,
nano
,vi
ou Notepad).
- Localize o arquivo
Edite o arquivo
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 real do cliente.Atualize
/path/to/ingestion-authentication-file.json
para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de ingestão do Google SecOps.
Reinicie o agente do Bindplane para aplicar as mudanças.
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente do Bindplane no Windows, use o console Services ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Controle de app do CB para enviar registros do Syslog
- Faça login no console do CB App Control com uma conta de administrador.
- Acesse Administrador > Configuração do sistema > Registro externo.
- Na seção "Registro de eventos externos":
- Ativar o registro de syslog: marque a caixa de seleção Syslog ativado.
- Endereço do servidor:
<Bindplane Server IP>
. - Porta:
<Bindplane Server PORT>
. - Protocolo: selecione TCP.
- Formato de Syslog: selecione JSON.
- Em Opções de registro de eventos, selecione os tipos de registros a serem enviados:
- Violações da política
- Eventos de monitoramento de integridade de arquivos (FIM)
- Eventos de autenticação do usuário
- Dados de inteligência contra ameaças
- Clique em Salvar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
ABId |
principal.asset.asset_id |
O ABId do registro 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 de 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 colchetes (por exemplo, "[5] - Discovery"). |
EventTypeId |
metadata.product_event_type |
Usada com EventType para preencher metadata.product_event_type . |
EventSubType |
metadata.description |
Adicionado ao campo metadata.description . |
EventSubTypeId |
metadata.description |
Não é mapeado explicitamente, mas pode contribuir 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 extra. Também usado como parte das informações do arquivo em metadata.description para alguns eventos. |
FilePath |
about.file.full_path |
Mapeado diretamente. |
FileThreat |
additional.fields (com a chave "fileThreat") |
Adicionado como um campo extra. |
FileTrust |
additional.fields (com a chave "fileTrust") |
Adicionado como um campo extra. |
HostId |
principal.asset.asset_id |
Usado para construir o URL de volta ao 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 de enumeração WINDOWS . |
Policy |
additional.fields (com a chave "Política") |
Adicionado como um campo extra. |
PolicyId |
additional.fields (com a chave "PolicyId") |
Adicionado como um campo extra. |
ProcessKey |
additional.fields (com a chave "ProcessKey") |
Adicionado como um campo extra. |
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 extra. |
ProcessTrust |
additional.fields (com a chave "ProcessTrust") |
Adicionado como um campo extra. |
RuleName |
additional.fields (com a chave "ruleName") |
Adicionado como um campo extra. |
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 um rótulo 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 registros JSON. Para registros do CEF, extraídos da mensagem do CEF. |
cat |
security_result.category_details |
Mapeado diretamente. |
cs1 |
additional.fields (com a chave "rootHash" ou outro cs1Label) |
Adicionado como um campo extra com a chave definida por cs1Label . |
cs1Label |
additional.fields |
Usado como a chave do campo extra preenchido por cs1 . |
cs2 |
additional.fields (com a chave "installerFilename" ou outro cs2Label) |
Adicionado como um campo extra com a chave definida por cs2Label . |
cs2Label |
additional.fields |
Usado como a chave do campo extra preenchido por cs2 . |
cs3 |
additional.fields (com a chave "Policy" ou outro cs3Label) |
Adicionado como um campo extra com a chave definida por cs3Label . |
cs3Label |
additional.fields |
Usado como a chave do campo extra preenchido por cs3 . |
cs5 |
additional.fields (com a chave "ruleName" ou outro cs5Label) |
Adicionado como um campo extra com a chave definida por cs5Label . |
cs5Label |
additional.fields |
Usado como a chave do campo extra preenchido por cs5 . |
cfp1 |
additional.fields (com a chave "fileTrust" ou outro cfp1Label) |
Adicionado como um campo extra com a chave definida por cfp1Label . |
cfp1Label |
additional.fields |
Usado como a chave do campo extra preenchido por cfp1 . |
cfp2 |
additional.fields (com a chave "processTrust" ou outro cfp2Label) |
Adicionado como um campo extra com a chave definida por cfp2Label . |
cfp2Label |
additional.fields |
Usado como a chave do campo extra 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 extra. |
fileHash |
about.file.sha256 |
Mapeado diretamente. |
flexString1 |
additional.fields (com a chave "fileThreat" ou outro flexString1Label) |
Adicionado como um campo extra com a chave definida por flexString1Label . |
flexString1Label |
additional.fields |
Usado como a chave do campo extra preenchido por flexString1 . |
flexString2 |
additional.fields (com a chave "processThreat" ou outro flexString2Label) |
Adicionado como um campo extra com a chave definida por flexString2Label . |
flexString2Label |
additional.fields |
Usado como a chave do campo extra preenchido por flexString2 . |
fname |
additional.fields (com a chave "fname") |
Adicionado como um campo extra. Também usado como parte das informações do arquivo 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 ("ID do host: {host.hostname}"). Também mapeado para target.hostname . |
host.id |
target.asset.asset_id |
Usado como parte do ID do recurso de destino ("ID do host: {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 |
Adicionado ao target.platform_patch_level . |
host.os.platform |
target.platform |
Mapeado para o valor de enumeração WINDOWS . |
host.os.type |
target.platform |
Mapeado para o valor de enumeração WINDOWS . |
host.os.version |
target.platform_version |
Mapeado diretamente. |
log.file.path |
target.file.full_path |
Mapeado diretamente. |
metadata.event_type |
metadata.event_type |
Defina como "GENERIC_EVENT" para registros CEF e "SYSTEM_AUDIT_LOG_UNCATEGORIZED" para registros JSON. |
metadata.log_type |
metadata.log_type |
Defina como "CB_EDR". |
metadata.product_log_id |
metadata.product_log_id |
Mapeado de externalId para registros do CEF. Não se aplica a registros JSON. |
metadata.product_name |
metadata.product_name |
Defina como "Controle de app" para registros CEF e "CB_APP_CONTROL" para registros JSON. |
metadata.product_version |
metadata.product_version |
Extraídos da mensagem CEF para registros CEF. Mapeado de agent.version para registros JSON. |
metadata.vendor_name |
metadata.vendor_name |
Defina como "Carbon Black". |
msg |
metadata.description , additional.fields |
Usado para preencher metadata.description e possivelmente outros campos 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 usando os campos Bit9Server e HostId para registros JSON. Não aplicável a registros do CEF. |
security_result.severity |
security_result.severity |
Defina como MEDIUM . |
timestamp |
events.timestamp |
Mapeado diretamente para registros JSON. Para registros do CEF, a lógica do analisador determina o carimbo de data/hora com base no campo rt do registro bruto, se disponível, ou no collection_time se rt não estiver presente. |
Alterações
2022-07-01
- Melhoria
- O campo "agent.type" foi associado a "observer.application".
- Mapeou o campo "agent.name" para "observer.user.userid".
- O campo "host.name" foi mapeado para "observer.hostname".
- Os campos "agent.type" e "agent.name" foram mapeados para "observer.asset_id".
- O campo "agent.ephemeral_id" foi associado a "observer.labels".
- O campo "host.os.platform" foi mapeado para "target.platform".
- O campo "host.os.version" foi mapeado para "target.platform_version".
- O campo "host.os.kernel" foi mapeado para "target.platform_patch_level".
- O campo "cloud.instance.id" foi mapeado para "principal.resource.product_object_id".
- Mapeou o campo "cloud.instance.name" para "principal.resource.name".
- O campo "host.mac" foi mapeado para "target.mac".
- O campo "host.ip" foi mapeado para "target.asset.ip".
- O campo "host.id" foi mapeado para "target.asset.asset_id".
- O campo "host.architecture" foi mapeado para "target.asset.hardware".
- O campo "message.UserSID" foi mapeado para "principal.user.userid".
- O campo "message.ProcessPath" foi mapeado para "about.process.command_line".
- Mapeou os campos "cloud.machine.type" e "cloud.provider" para "principal.resource.attribute.labels".
- Foram adicionadas verificações condicionais para "message.Bit9Server" e "message.HostId" mapeadas para "metadata.url_back_to_product".
2022-06-22
- Correção de bugs
- hostId mapeado para principal.asset_id
- A combinação mapeada de Bit9Server e HostId para metadata.url_back_to_product
2022-05-19
- Correção de bugs
- analisou os registros solicitados no bug
- Registros de falhas de API analisados
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.