Coletar registros do Cylance PROTECT
Este documento explica como ingerir registros do Cylance PROTECT no Google Security Operations usando o Bindplane. O código do analisador do Logstash transforma mensagens syslog do Cylance PROTECT em um modelo de dados unificado (UDM). Ele extrai campos da mensagem syslog, normaliza e mapeia para campos UDM, além de enriquecer os dados com informações de gravidade e categoria da ameaça.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Instância do Google SecOps
- Windows 2016 ou mais recente ou um host Linux com
systemd - Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
- Acesso privilegiado ao Cylance PROTECT
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 de forma segura no sistema em que o Bindplane será instalado.
Receber o ID do 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 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.sh
Outros recursos de instalação
Para mais opções de instalação, consulte o guia de instalação.
Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps
- Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml. Normalmente, ele fica 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,viou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yamlda seguinte forma:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/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: 'CYLANCE_PROTECT' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsSubstitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>pelo ID do cliente real.Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho em que o arquivo de autenticação foi salvo na seção Receber 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-agentPara reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Syslog no Cylance Protect
- Faça login no console de gerenciamento do Cylance.
- Acesse Configurações > Aplicativo.
- Marque a caixa de seleção Syslog/SIEM.
- Selecione todos os eventos.
- Informe os seguintes detalhes de configuração:
- SIEM: selecione Syslog.
- Protocolo: selecione UDP.
- Marque a caixa de seleção Permitir mensagens com mais de 2 KB.
- IP/Domínio: insira o endereço IP do agente do Bindplane.
- Porta: insira o número da porta do agente Bindplane (por exemplo,
514para UDP). - Facilidade: selecione o tipo de registro de aplicativo.
- Clique em Testar conexão.
- Clique em Salvar.
Tabela de mapeamento da UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| Versão do agente | metadata.product_version | Valor extraído de Agent Version: <value> |
| Pontuação do Cylance | security_result.severity_details | Valor extraído de Cylance Score: <value> |
| security_result.severity | Mapeado com base na seguinte lógica: - ALTA: se a pontuação do Cylance for > 67 - MÉDIA: se a pontuação do Cylance for > 33 - BAIXA: se a pontuação do Cylance for <= 33 |
|
| Detectado por | security_result.detection_fields.value | Valor extraído de Detected By: <value> |
| ID do dispositivo | principal.asset_id | Valor extraído de Device Id: <value> e precedido por Cylance: |
| IDs de dispositivos | principal.asset_id | Valor extraído de Device Ids: <value> e adicionado com Cylance:, usado quando Device Id não está presente. |
| Nome do dispositivo | principal.hostname | Valor extraído de Device Name: <value> |
| Nome do dispositivo | target.hostname | Valor extraído de Device Name: <value>, usado para tipos de eventos específicos, como ScriptControl. |
| Nomes dos dispositivos | principal.hostname | Valor extraído de Device Names: <value>, usado quando Device Name não está presente |
| Descrição | security_result.summary | Valor extraído de Description: <value>, usado para tipos de eventos específicos, como OpticsCaeNetworkEvent. |
| IP de destino | target.ip | Valor extraído de Destination IP: <value> |
| Porta de destino | target.port | Valor extraído de Destination Port: <value> |
| Código do evento | metadata.product_log_id | Valor extraído de Event Id: <value> |
| Nome do evento | Usado para determinar subtipos de eventos específicos e aplicar a lógica correspondente. | |
| Tipo de evento | metadata.product_event_type | Valor extraído de Event Type: <value> |
| metadata.event_type | Mapeado com base nos campos Event Type e Event Name. O valor padrão é GENERIC_EVENT. |
|
| Nome do arquivo | principal.process.file.full_path | Valor extraído de File Name: <value> e combinado com Path: <value> para formar o caminho completo |
| Caminho do arquivo | target.file.full_path | Valor extraído de File Path: <value> |
| Instigating Process ImageFileSha256 | principal.process.file.sha256 | Valor extraído de Instigating Process ImageFileSha256: <value> |
| Nome do processo instigador | principal.process.file.full_path | Valor extraído de Instigating Process Name: <value> |
| Proprietário do processo de instigação | principal.user.userid | Valor extraído de Instigating Process Owner: <value>. O nome de usuário é extraído após a divisão por //, se presente. |
| Proprietário do processo de instigação | principal.administrative_domain | Nome de domínio extraído de Instigating Process Owner: <value> dividindo por //, se presente |
| Endereço IP | principal.ip | Endereços IP extraídos de IP Address: (<value>) |
| Intérprete | security_result.rule_labels.value | Valor extraído de Interpreter: <value> |
| Versão do intérprete | security_result.rule_labels.value | Valor extraído de Interpreter Version: <value> |
| Usuários conectados | about.user.userid | Nomes de usuário extraídos de Logged On Users: (<value>) |
| Endereço MAC | principal.mac | Endereço MAC extraído de MAC Address: (<value>) e formatado com dois-pontos |
| MD5 | principal.process.file.md5 | Valor extraído de MD5: <value> |
| Mensagem | Usado para extrair dados de tipos de eventos específicos, como AuditLog. |
|
| SO | principal.platform | Mapeado para WINDOWS se o campo OS contiver Windows |
| Caminho | principal.process.file.full_path | Valor extraído de Path: <value> e combinado com File Name: <value> para formar o caminho completo |
| Nome da política | security_result.rule_name | Valor extraído de Policy Name: <value> |
| ID do processo | principal.process.pid | Valor extraído de Process ID: <value> |
| Nome do processo | principal.process.file.full_path | Valor extraído de Process Name: <value> |
| Endereço resolvido | network.dns.answers.name | Valor extraído de Resolved Address: <value> |
| SHA256 | principal.process.file.sha256 | Valor extraído de SHA256: <value> |
| IP de origem | principal.ip | Valor extraído de Source IP: <value>, usado para tipos de evento específicos. |
| Status | security_result.action | Mapeado para ações específicas do UDM com base no valor: - Quarantined: QUARANTINE - Cleared: ALLOW_WITH_MODIFICATION |
| Nome do domínio de destino | network.dns.questions.name | Valor extraído de Target Domain Name: <value> |
| Target Process ImageFileSha256 | target.process.file.sha256 | Valor extraído de Target Process ImageFileSha256: <value> |
| Nome do processo de destino | target.process.file.full_path | Valor extraído de Target Process Name: <value> |
| Proprietário do processo de destino | target.user.userid | Valor extraído de Target Process Owner: <value>. O nome de usuário é extraído após a divisão por //, se presente. |
| Proprietário do processo de destino | target.administrative_domain | Nome de domínio extraído de Target Process Owner: <value> dividindo por //, se presente |
| Target Registry KeyPath | target.registry.registry_key | Valor extraído de Target Registry KeyPath: <value> |
| Classificação de ameaças | security_result.threat_name | Valor extraído de Threat Classification: <value> |
| Usuário | principal.user.userid | Nome de usuário extraído de User: <value>, se presente, usado quando User Name não está presente |
| Usuário | principal.user.email_addresses | Endereço de e-mail extraído de User: <value>, se presente, usado quando User Name não está presente |
| Nome do usuário | principal.user.userid | Valor extraído de User Name: <value> |
| Tipo de violação | security_result.summary | Valor extraído de Violation Type: <value> e precedido por ExploitAttempt: |
| Tipo de violação | security_result.threat_name | Valor extraído de Violation Type: <value> |
| Nomes das zonas | security_result.description | Valor extraído de Zone Names: (<value>) e precedido por Zone_Names: |
| metadata.vendor_name | Fixado no código para Cylance |
|
| metadata.product_name | Valor extraído da mensagem de registro, PROTECT ou OPTICS. |
|
| metadata.log_type | Fixado no código para CYLANCE_PROTECT |
|
| network.ip_protocol | Codificado como TCP para eventos de OpticsCaeNetworkEvent |
|
| network.application_protocol | Codificado como DNS para eventos de OpticsCaeDnsEvent |
|
| security_result.rule_labels.key | Defina como Interpreter ou Interpreter Version com base no campo disponível |
|
| security_result.detection_fields.key | Fixado no código para Detected By |
|
| security_result.category | Mapeado com base no tipo de evento. Os valores possíveis incluem: - SOFTWARE_SUSPICIOUS - AUTH_VIOLOATION - POLICY_VIOLATION - NETWORK_SUSPICIOUS - EXPLOIT - SOFTWARE_MALICIOUS |
|
| security_result.action | Mapeado com base no tipo de evento e em condições específicas. Os valores possíveis incluem: - ALLOW - BLOCK - QUARANTINE - ALLOW_WITH_MODIFICATION |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.