Coletar registros do Cybereason EDR
Este documento explica como ingerir registros do Cybereason EDR no Google Security Operations usando o agente Bindplane.
O EDR (detecção e resposta de endpoints) da Cybereason é uma plataforma de cibersegurança que detecta e responde a ameaças avançadas em endpoints. Ele identifica Malops (operações maliciosas), que são cadeias de ataques correlacionadas que unem atividades suspeitas em narrativas completas de ataques, e oferece aos analistas de segurança visibilidade da progressão de ameaças, máquinas afetadas, usuários comprometidos e conexões de rede.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Windows Server 2016 ou mais recente ou host Linux com
systemd - Conectividade de rede entre o agente do Bindplane e o servidor de detecção do Cybereason
- Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane.
- Acesso ao console de gerenciamento do Cybereason com a função de administrador do sistema
- Plataforma Cybereason versão 20.1 ou mais recente
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.
Baixe o arquivo de autenticação de ingestão. Salve o arquivo com segurança no sistema em que o agente do 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
Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.
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" /quietAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sc query observiq-otel-collectorO status do serviço deve ser EM EXECUÇÃO.
Instalação do Linux
- Abra um terminal com privilégios de root ou sudo.
Execute este comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sudo systemctl status observiq-otel-collectorO status do serviço precisa ser active (running).
Outros recursos de instalação
Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.
Configurar o agente do Bindplane para ingerir o syslog e enviá-lo ao Google SecOps
Localizar o arquivo de configuração
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Editar o arquivo de configuração
Substitua todo o conteúdo de
config.yamlpela seguinte configuração:receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/cybereason: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'your-customer-id' endpoint: malachiteingestion-pa.googleapis.com log_type: CYBEREASON_EDR raw_log_field: body service: pipelines: logs/cybereason_to_chronicle: receivers: - tcplog exporters: - chronicle/cybereasonSubstitua os seguintes marcadores de posição:
Configuração do receptor:
listen_address: endereço IP e porta a serem detectados:0.0.0.0:514para detectar em todas as interfaces na porta 514 (requer root no Linux)0.0.0.0:1514para detectar uma porta sem privilégios (recomendado para Linux não root)
Opções de tipo de receptor:
tcplogpara syslog TCP (necessário para o encaminhamento de syslog do Cybereason)
Configuração do exportador:
creds_file_path: caminho completo para o arquivo de autenticação de ingestão do Google SecOps:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: ID do cliente do Google SecOpsendpoint: URL do endpoint regional:- EUA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Ásia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulte a lista completa em Endpoints regionais.
- EUA:
Salve o arquivo de configuração.
Depois de editar, salve o arquivo:
- Linux: pressione
Ctrl+O,EntereCtrl+X. - Windows: clique em Arquivo > Salvar.
Reinicie o agente do Bindplane para aplicar as mudanças
Para reiniciar o agente do Bindplane no Linux:
Execute este comando:
sudo systemctl restart observiq-otel-collectorVerifique se o serviço está sendo executado:
sudo systemctl status observiq-otel-collectorVerifique se há erros nos registros:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar o agente do Bindplane em Windows:
Escolha uma das seguintes opções:
Prompt de comando ou PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorConsole de serviços:
- Pressione
Win+R, digiteservices.msce pressione Enter. - Localize o Coletor do OpenTelemetry da observIQ.
- Clique com o botão direito do mouse e selecione Reiniciar.
- Pressione
Verifique se o serviço está sendo executado:
sc query observiq-otel-collectorVerifique se há erros nos registros:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configurar o encaminhamento de syslog do Cybereason EDR
A Cybereason envia eventos de MalOp e de auditoria do usuário em CEF (Common Event Format) via syslog. A configuração de encaminhamento de syslog requer uma solicitação ao suporte técnico da Cybereason.
Solicitar o encaminhamento de syslog do suporte técnico da Cybereason
- Faça login no console de gerenciamento do Cybereason.
- Entre em contato com o suporte técnico da Cybereason pelo portal de suporte da empresa.
- Envie uma solicitação de configuração de encaminhamento de syslog com as seguintes informações:
- Endereço IP do servidor Syslog: o endereço IP do host do agente Bindplane (por exemplo,
192.168.1.100). - Porta do servidor Syslog: a porta que corresponde ao agente do Bindplane
listen_address(por exemplo,514). - Protocolo: TCP (syslog TCP não criptografado).
- Tipos de registro: solicite o encaminhamento dos seguintes tipos de registro:
- Syslog de MalOp: alertas de segurança e eventos de operações maliciosas
- Syslog de auditoria do usuário: atividade do usuário e ações administrativas
- Endereço IP do servidor Syslog: o endereço IP do host do agente Bindplane (por exemplo,
Aguarde o suporte técnico da Cybereason confirmar a configuração de encaminhamento de syslog.
Configurar regras de firewall
Verifique se as seguintes regras de firewall estão em vigor:
Direção Protocolo Porta Origem Destino Saída TCP 514 Servidor de detecção da Cybereason Host do agente do Bindplane
Alternativa: encaminhador CEF da Cybereason
Se o suporte técnico da Cybereason não conseguir configurar o encaminhamento direto de syslog, use a ferramenta Cybereason CEF Forwarder:
- Faça o download da imagem do Docker do encaminhador CEF da Cybereason no suporte técnico da empresa.
- Crie ou edite o arquivo de configuração em
cybereason-forwarders/config/config.json. Defina as configurações a seguir:
{ "host": "<BINDPLANE_AGENT_IP>", "port": 514 }Substitua
<BINDPLANE_AGENT_IP>pelo endereço IP do host do agente do Bindplane.Crie e execute o contêiner do Docker:
docker build -t cybereason-cef-forwarder . docker run -d --name cybereason-forwarder cybereason-cef-forwarder
Tipos de eventos do Syslog
O Cybereason gera mensagens syslog CEF para as seguintes categorias de eventos:
| Categoria do evento | Descrição |
|---|---|
| MalOp criada | Nova operação maliciosa detectada |
| MalOp atualizado | O status ou os detalhes de uma MalOp mudaram |
| MalOp fechada | MalOp resolvida ou fechada por um analista |
| Malware detectado | Malware identificado em um endpoint |
| Processo suspeito | Atividade de processo suspeita detectada |
| Conexão de rede | Conexão de rede suspeita identificada |
| Login do usuário | Eventos de autenticação do usuário |
| Isolamento de máquinas | Endpoint isolado ou reconectado à rede |
| Mudanças na política | Modificações na política de segurança |
Verificar o encaminhamento de syslog
- Depois que o suporte técnico da Cybereason confirmar a configuração do syslog, execute uma ação de teste no console da Cybereason. Por exemplo, veja uma MalOp ou isole uma máquina de teste.
- Verifique os registros do agente do Bindplane para mensagens syslog recebidas:
- Linux:
sudo journalctl -u observiq-otel-collector -f - Windows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Linux:
Verifique se as mensagens formatadas em CEF aparecem nos registros. Por exemplo:
CEF:0|Cybereason|Cybereason|2.0|MalOp|MalOp Created|8|cs1=MALOP_ID_HERE dvchost=server01.company.com suser=admin@company.com
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| detectionName_label | additional.fields | Mapeado como par de chave-valor |
| sensorId_label | additional.fields | Mapeado como par de chave-valor |
| status | metadata.description | Se o valor não estiver vazio |
| log_description | metadata.description | Substituição se o status estiver vazio |
| (formato CEF) | metadata.event_type | Definido como GENERIC_EVENT para registros CEF. |
| event_type | metadata.event_type | Definido como PROCESS_OPEN se o valor for "PROCESS_OPEN", NETWORK_CONNECTION se o valor for "NETWORK_CONNECTION", SCAN_HOST se o valor for "MALWARE" |
| has_principal, has_target | metadata.event_type | Definido como SCAN_FILE se has_principal e has_target forem verdadeiros |
| has_principal | metadata.event_type | Definido como STATUS_UPDATE se apenas "has_principal" for verdadeiro |
| has_user | metadata.event_type | Definido como USER_UNCATEGORIZED se has_user for verdadeiro no contexto de malop |
| (padrão) | metadata.event_type | Caso contrário, defina como GENERIC_EVENT. |
| LogType | metadata.product_event_type | Se o valor não estiver vazio |
| malop_data.simpleValues.elementDisplayName.values.0 | metadata.product_event_type | Substituição se LogType estiver vazio |
| tipo | metadata.product_event_type | Fallback |
| prod_event, prod_event2 | metadata.product_event_type | Concatenado como prod_event - prod_event2 |
| malop_process.guidString | metadata.product_log_id | Para o tipo de evento PROCESS_OPEN |
| malop_connection.guidString | metadata.product_log_id | Para o tipo de evento NETWORK_CONNECTION |
| guid | metadata.product_log_id | Para tipos de evento MALWARE ou Malop |
| (estático) | metadata.product_version | Definido como "2.0" inicialmente |
| Sensor.version | metadata.product_version | Substitui "2.0" se presente |
| malop_url | metadata.url_back_to_product | Mapeado diretamente |
| (estático) | metadata.vendor_name | Definido como "Cybereason" |
| direção | network.direction | Mapeado diretamente |
| malop_connection.simpleValues.transportProtocol.values.0 | network.ip_protocol | Mapeado diretamente |
| malop_connection.simpleValues.receivedBytesCount.values.0 | network.received_bytes | Convertido para número inteiro sem sinal |
| malop_connection.simpleValues.transmittedBytesCount.values.0 | network.sent_bytes | Convertido para número inteiro sem sinal |
| Sensor.fqdn | principal.administrative_domain | Mapeado diretamente |
| malop_process.elementValues.ownerMachine.elementValues.0.guid | principal.asset.asset_id | Prefixo "Cybereason:" |
| malop_data.elementValues.affectedMachines.elementValues.0.guid | principal.asset.asset_id | Prefixo "Cybereason:", fallback |
| malop_process.elementValues.ownerMachine.elementValues.0.name | principal.asset.hostname | Mapeado diretamente |
| malop_data.elementValues.affectedMachines.elementValues.0.name | principal.asset.hostname | Fallback |
| machineName | principal.asset.hostname | Fallback |
| host | principal.asset.hostname | Fallback |
| dvchost | principal.asset.hostname | Fallback |
| Sensor.fqdn | principal.asset.hostname | Fallback |
| client.ip | principal.asset.ip | Mapeado diretamente |
| Sensor.externalIpAddress | principal.asset.ip | Fallback |
| malop_process.elementValues.ownerMachine.elementValues.0.name | principal.hostname | Mapeado diretamente |
| malop_data.elementValues.affectedMachines.elementValues.0.name | principal.hostname | Fallback |
| machineName | principal.hostname | Fallback |
| host | principal.hostname | Fallback |
| dvchost | principal.hostname | Fallback |
| Sensor.fqdn | principal.hostname | Fallback |
| client.ip | principal.ip | Mapeado diretamente |
| Sensor.externalIpAddress | principal.ip | Fallback |
| Sensor.internalIpAddress | principal.nat_ip | Mapeado diretamente |
| Sensor.privateServerIp | principal.nat_ip | Fallback |
| Sensor.osType | principal.platform | Defina como WINDOWS se o valor for "WINDOWS", LINUX se for "LINUX" e MAC se for "MAC". |
| Sensor.osVersionType | principal.platform_version | Mapeado diretamente |
| malop_connection.simpleValues.localPort.values.0 | principal.port | Convertido para número inteiro |
| malop_process.simpleValues.commandLine.values.0 | principal.process.command_line | Mapeado diretamente |
| malwareDataModel.filePath | principal.process.command_line | Fallback |
| malop_process.simpleValues.calculatedName.values.0 | principal.process.file.full_path | Mapeado diretamente |
| nome | principal.process.file.full_path | Fallback |
| malop_process.elementValues.parentProcess.elementValues.0.guid | principal.process.parent_process.product_specific_process_id | Prefixo "Cybereason:" |
| malop_process.elementValues.self.elementValues.0.guid | principal.process.pid | Mapeado diretamente |
| malop_process.elementValues.self.elementValues.0.guid | principal.process.product_specific_process_id | Prefixo "Cybereason:" |
| malop_connection.elementValues.ownerProcess.elementValues.0.guid | principal.process.product_specific_process_id | Prefixo "Cybereason:", fallback |
| companyName | principal.user.company_name | Mapeado diretamente |
| malop_process.elementValues.calculatedUser.elementValues.0.name | principal.user.user_display_name | Mapeado diretamente |
| malop_data.elementValues.affectedUsers.elementValues.0.name | principal.user.user_display_name | Fallback |
| malop_connection.elementValues.ownerProcess.user.elementValues.0.name | principal.user.user_display_name | Fallback |
| malop_process.elementValues.calculatedUser.elementValues.0.guid | principal.user.userid | Mapeado diretamente |
| malop_data.elementValues.affectedUsers.elementValues.0.guid | principal.user.userid | Fallback |
| malop_connection.elementValues.ownerProcess.user.elementValues.0.guid | principal.user.userid | Fallback |
| security_result_action | security_result.action | Definido como ALLOW, BLOCK ou QUARANTINE com base no status |
| is_alert | security_result.alert_state | Definido como "ALERTING" se o valor for "True" |
| sr_category | security_result.category | Definido como SOFTWARE_MALICIOUS ou NETWORK_MALICIOUS |
| query_details | security_result.detection_fields | Mapeado como par de chave-valor |
| affected_machine_count | security_result.detection_fields | Mapeado como par de chave-valor |
| link_to_malop | security_result.detection_fields | Mapeado como par de chave-valor |
| context_label | security_result.detection_fields | Mapeado como par de chave-valor |
| old_state_label | security_result.detection_fields | Mapeado como par de chave-valor |
| new_state_label | security_result.detection_fields | Mapeado como par de chave-valor |
| investigation_label | security_result.detection_fields | Mapeado como par de chave-valor |
| event_id_label | security_result.detection_fields | Mapeado como par de chave-valor |
| malop_activity_type_label | security_result.detection_fields | Mapeado como par de chave-valor |
| malop_suspect_label | security_result.detection_fields | Mapeado como par de chave-valor |
| malop_key_suspicion_label | security_result.detection_fields | Mapeado como par de chave-valor |
| device_custom_date_label | security_result.detection_fields | Mapeado como par de chave-valor |
| device_custom_date2_label | security_result.detection_fields | Mapeado como par de chave-valor |
| device_custom_date3_label | security_result.detection_fields | Mapeado como par de chave-valor |
| guid_label | security_result.detection_fields | Mapeado como par de chave-valor |
| displayName_label | security_result.detection_fields | Mapeado como par de chave-valor |
| pylumId_label | security_result.detection_fields | Mapeado como par de chave-valor |
| connected_label | security_result.detection_fields | Mapeado como par de chave-valor |
| isolated_label | security_result.detection_fields | Mapeado como par de chave-valor |
| osType_label | security_result.detection_fields | Mapeado como par de chave-valor |
| admin_label | security_result.detection_fields | Mapeado como par de chave-valor |
| domainUser_label | security_result.detection_fields | Mapeado como par de chave-valor |
| localSystem_label | security_result.detection_fields | Mapeado como par de chave-valor |
| descrição | security_result.description | Concatenado com decision_feature, malop_status, privileges, passwordAgeDays, elementType, status, score, detectionValue, detectionValueType, detectionEngine |
| decision_feature | security_result.description | Concatenado na descrição |
| malop_status | security_result.description | Concatenado na descrição |
| privilégios | security_result.description | Concatenado na descrição |
| passwordAgeDays | security_result.description | Concatenado na descrição |
| elementType | security_result.description | Concatenado na descrição |
| status | security_result.description | Concatenado na descrição |
| score | security_result.description | Concatenado na descrição |
| detectionValue | security_result.description | Concatenado na descrição |
| detectionValueType | security_result.description | Concatenado na descrição |
| detectionEngine | security_result.description | Concatenado na descrição |
| malop_data.malopPriority | security_result.priority | Mapeado diretamente |
| malop_severity | security_result.severity | Mapeado diretamente |
| security_severity | security_result.severity | Definido como CRÍTICO se o valor for > 8, ALTO se > 6, MÉDIO se > 4 e BAIXO se > 1 |
| gravidade, | security_result.severity | Definido como "INFORMATIONAL" se "Info", "ERROR" se "Error" ou "High", "MEDIUM" se "Warning" ou "Medium", "CRITICAL" se "Critical", "LOW" se "Low" e "UNKNOWN" caso contrário. |
| descrição | security_result.summary | Mapeado diretamente |
| tipo | security_result.summary | Fallback |
| malopId | security_result.threat_id | Mapeado diretamente |
| malop_data.simpleValues.detectionType.values.0 | security_result.threat_name | Mapeado diretamente |
| virusName | security_result.threat_name | Fallback |
| status | security_result.threat_status | Definido como ACTIVE se o valor for "Active", caso contrário, FALSE_POSITIVE |
| malop_url | security_result.url_back_to_product | Mapeado diretamente |
| machineName | target.asset.hostname | Mapeado diretamente |
| affectedMachine | target.asset.hostname | Fallback |
| dvchost | target.asset.hostname | Fallback |
| Sensor.serverName | target.asset.hostname | Fallback |
| server.ip | target.asset.ip | Mapeado diretamente |
| Sensor.serverIp | target.asset.ip | Fallback |
| malop_process.simpleValues.calculatedName.values.0 | target.file.full_path | Mapeado diretamente |
| malop_connection.elementValues.ownerProcess.elementValues.0.name | target.file.full_path | Fallback |
| nome | target.file.full_path | Fallback |
| malwareDataModel_filePath | target.file.full_path | Fallback |
| malop_process.simpleValues.imageFile.md5String.values.0 | target.file.md5 | Mapeado diretamente |
| nome | target.file.names | Mapeado diretamente |
| machineName | target.hostname | Mapeado diretamente |
| affectedMachine | target.hostname | Fallback |
| dvchost | target.hostname | Fallback |
| Sensor.serverName | target.hostname | Fallback |
| server.ip | target.ip | Mapeado diretamente |
| Sensor.serverIp | target.ip | Fallback |
| malop_connection.simpleValues.remoteAddressCountryName.values.0 | target.location.country_or_region | Mapeado diretamente |
| Sensor.privateServerIp | target.nat_ip | Mapeado diretamente |
| malop_connection.simpleValues.remotePort.values.0 | target.port | Convertido para número inteiro |
| malop_process.simpleValues.calculatedName.values.0 | target.process.file.full_path | Mapeado diretamente |
| malop_process.elementValues.self.elementValues.0.guid | target.process.pid | Mapeado diretamente |
| malop_url | target.url | Mapeado diretamente |
| (estático) | metadata.product_name | Definido como "Cybereason" |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.