Coletar registros do BOTsink da Attivo Networks
Este documento explica como ingerir registros do BOTsink da Attivo Networks no Google Security Operations usando o Bindplane. O analisador primeiro tenta analisar mensagens de registro recebidas como JSON. Se isso falhar, ele usará uma série de padrões do Grok para extrair campos de mensagens formatadas no formato de evento comum (CEF), processando vários formatos e possíveis erros. Por fim, ele mapeia os campos extraídos para o esquema do modelo de dados unificado (UDM, na sigla em inglês), enriquecendo os dados com contexto adicional e padronizando a saída.
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 à Attivo Networks
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
,vi
ou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yaml
da 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: '/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: 'ATTIVO' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Substitua 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.json
para 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-agent
Para 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 BOTsink da Attivo Networks
- Faça login na UI da Web da Attiva Networks.
- Acesse Administração > Gerenciamento > Syslog.
- Clique em Adicionar para criar um perfil do Syslog.
- Dê um nome descritivo para o perfil.
- Em Encaminhamento de eventos, selecione Ativado.
- Forneça a configuração dos padrões do BOTsink:
- Muito baixa: selecione Informativo.
- Baixa: selecione Aviso.
- Mídia: selecione Alerta.
- Alto: selecione Crítico.
- Muito alta: selecione Emergência.
- Em Formato da mensagem, selecione CEF.
- Selecione Adicionar nova conexão na seção do perfil.
- Informe os seguintes detalhes de configuração:
- Nome do servidor: insira um nome descritivo que ajude a identificar o Google SecOps.
- Nome do perfil: selecione o perfil de syslog CEF que você criou anteriormente.
- Endereço IP: insira o endereço IP do agente do Bindplane.
- Porta: insira o número da porta do agente Bindplane (por exemplo, digite
514
para UDP). - Protocolo: selecione UDP.
- Clique em Testar conexão e verifique se você recebe os dados de teste no agente do Bindplane e no Google SecOps.
- Clique em OK.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
alertID | read_only_udm.metadata.product_log_id | O valor é extraído do campo alertID . |
gato | read_only_udm.security_result.action_details | O valor é extraído do campo cat . |
CEFDeviceProduct | read_only_udm.metadata.product_name | O valor é extraído do campo CEFDeviceProduct . |
CEFDeviceVendor | read_only_udm.metadata.vendor_name | O valor é extraído do campo CEFDeviceVendor . |
CEFDeviceVersion | read_only_udm.metadata.product_version | O valor é extraído do campo CEFDeviceVersion . |
CEFName | Usado para extrair os campos operation , result , module e descrip . |
|
CEFSeverity | read_only_udm.security_result.severity | Mapeado do campo CEFSeverity com base nestas regras:- error ou warning : HIGH - (?i)critical : CRITICAL - (?i)notice ou (?i)MEDIUM : MEDIUM - information , info , Very-Low ou Low : LOW |
CEFSignatureID | read_only_udm.security_result.rule_id | O valor é extraído do campo CEFSignatureID . |
cef_version | read_only_udm.additional.fields.value.string_value | O valor é extraído do campo cef_version . |
read_only_udm.additional.fields.key | Valor estático: CEFVersion |
|
descrip | read_only_udm.metadata.description | O valor é extraído do campo descrip . |
dest_domain | read_only_udm.target.domain.name | O valor é extraído do campo dest_domain . |
dhost | read_only_udm.target.hostname | O valor é extraído do campo dhost se service for NETBIOS . |
dIPDomain | read_only_udm.target.domain.name | O valor é extraído do campo dIPDomain se dest_domain estiver vazio. |
dst | read_only_udm.target.ip | O valor é extraído do campo dst . |
dst_os | read_only_udm.target.asset.platform_software.platform_version | O valor é extraído do campo dst_os . |
dpt | read_only_udm.target.port | O valor é extraído do campo dpt e convertido em um número inteiro. |
dvc | read_only_udm.principal.hostname, read_only_udm.target.ip, read_only_udm.intermediary.hostname | A lógica depende dos valores dos campos dvc , src e sip . Ele pode ser mapeado para o nome do host principal, o IP de destino ou o nome do host intermediário com base na disponibilidade e no formato desses campos. |
intf | read_only_udm.additional.fields.value.string_value | O valor é extraído do campo intf e convertido em uma string. |
read_only_udm.additional.fields.key | Valor estático: intf |
|
mitreTacticName | read_only_udm.security_result.rule_name | O valor é extraído do campo mitreTacticName . |
mitreTechniqueId | read_only_udm.security_result.detection_fields.value | O valor é extraído do campo mitreTechniqueId . |
read_only_udm.security_result.detection_fields.key | Valor estático: Technique name |
|
mitreTechniqueName | read_only_udm.security_result.detection_fields.value | O valor é extraído do campo mitreTechniqueName . |
read_only_udm.security_result.detection_fields.key | Valor estático: Technique name |
|
module | read_only_udm.additional.fields.value.string_value | O valor é extraído do campo module . |
read_only_udm.additional.fields.key | Valor estático: module |
|
msg | read_only_udm.metadata.description | O valor é extraído do campo msg depois da extração do campo protocol . |
operação | read_only_udm.additional.fields.value.string_value | O valor é extraído do campo operation . |
read_only_udm.additional.fields.key | Valor estático: operation |
|
protocolo | read_only_udm.network.ip_protocol | O valor é extraído do campo protocol se for TCP ou UDP . |
result | read_only_udm.security_result.action | Mapeado do campo result com base nestas regras:- (?i)SUCCESS ou (?i)ALLOW : ALLOW - CHALLENGE : CHALLENGE - FAILURE , DENY , SKIPPED ou RATE_LIMIT : BLOCK |
rt | read_only_udm.metadata.event_timestamp | O valor é extraído do campo rt e analisado como um carimbo de data/hora UNIX em milissegundos. |
shost | read_only_udm.principal.hostname | O valor é extraído do campo shost . |
sip | read_only_udm.principal.hostname, read_only_udm.principal.ip | A lógica depende dos valores dos campos dvc e sip . Ele pode ser mapeado para o nome do host principal ou IP com base na disponibilidade e no formato desses campos. |
smac | read_only_udm.principal.mac | O valor é extraído do campo smac . |
source | read_only_udm.principal.hostname | O valor é extraído do campo source . |
source_domain | read_only_udm.principal.domain.name | O valor é extraído do campo source_domain . |
src | read_only_udm.principal.ip | O valor é extraído do campo src . |
subscriberName | read_only_udm.additional.fields.value.string_value | O valor é extraído do campo subscriberName . |
read_only_udm.additional.fields.key | Valor estático: Subscriber Name |
|
suser | read_only_udm.principal.user.userid, read_only_udm.principal.user.user_display_name | O valor é extraído do campo suser depois de extrair o nome de usuário. |
threshold | read_only_udm.additional.fields.value.string_value | O valor é extraído do campo threshold . |
read_only_udm.additional.fields.key | Valor estático: arp-scan-threshold |
|
usrname | read_only_udm.principal.user.email_addresses | O valor é extraído do campo usrname se ele não estiver vazio ou for N/A . |
vlan | read_only_udm.principal.labels.value | O valor é extraído do campo vlan . |
read_only_udm.principal.labels.key | Valor estático: vlan |
|
read_only_udm.metadata.event_type | Determinado com base nos valores dos campos src , smac , shost , dst , protocol , dvc e service . Pode ser um dos seguintes valores: SCAN_NETWORK , NETWORK_CONNECTION , NETWORK_UNCATEGORIZED , STATUS_UPDATE ou GENERIC_EVENT . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.