Recolha registos do BOTsink da Attivo Networks
Este documento explica como carregar registos do BOTsink da Attivo Networks para o Google Security Operations através do Bindplane. O analisador tenta primeiro analisar as mensagens de registo recebidas como JSON. Se isso falhar, usa uma série de padrões Grok para extrair campos de mensagens formatadas no formato de evento comum (CEF), processando vários formatos e potenciais erros. Por último, mapeia os campos extraídos para o esquema do modelo de dados unificado (UDM), enriquecendo os dados com contexto adicional e padronizando a saída.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
- Acesso privilegiado às redes Attivo
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 o 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: 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 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 do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog no BOTsink da Attivo Networks
- Inicie sessão na IU Web da Attiva Networks.
- Aceda a Administração > Gestão > Syslog.
- Clique em Adicionar para criar um novo perfil Syslog.
- Indique um nome descritivo para o perfil.
- Em Encaminhamento de eventos, selecione Ativado.
- Forneça a configuração das normas do BOTsink:
- Muito baixo: selecione Informativo.
- Baixo: selecione Aviso.
- Meio: selecione Alerta.
- Elevada: selecione Crítico.
- Muito elevado: selecione Emergência.
- Para Formato da mensagem: selecione CEF.
- Selecione Adicionar nova associação na secção do perfil.
- Indique os seguintes detalhes de configuração:
- Nome do servidor: introduza um nome descritivo que ajude a identificar o Google SecOps.
- Nome do perfil: selecione o perfil syslog CEF que criou anteriormente.
- Endereço IP: introduza o endereço IP do agente Bindplane.
- Porta: introduza o número da porta do agente do Bindplane (por exemplo, introduza
514
para UDP). - Protocolo: selecione UDP.
- Clique em Testar ligação e verifique se recebe os dados de teste no agente Bindplane e no Google SecOps.
- Clique em OK.
Tabela de mapeamento do UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
alertID | read_only_udm.metadata.product_log_id | O valor é retirado do campo alertID . |
gato | read_only_udm.security_result.action_details | O valor é retirado do campo cat . |
CEFDeviceProduct | read_only_udm.metadata.product_name | O valor é retirado do campo CEFDeviceProduct . |
CEFDeviceVendor | read_only_udm.metadata.vendor_name | O valor é retirado do campo CEFDeviceVendor . |
CEFDeviceVersion | read_only_udm.metadata.product_version | O valor é retirado do campo CEFDeviceVersion . |
CEFName | Usado para extrair os campos operation , result , module e descrip . |
|
CEFSeverity | read_only_udm.security_result.severity | Mapeado a partir 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 é retirado do campo CEFSignatureID . |
cef_version | read_only_udm.additional.fields.value.string_value | O valor é retirado do campo cef_version . |
read_only_udm.additional.fields.key | Valor estático: CEFVersion |
|
descrip | read_only_udm.metadata.description | O valor é retirado do campo descrip . |
dest_domain | read_only_udm.target.domain.name | O valor é retirado do campo dest_domain . |
dhost | read_only_udm.target.hostname | O valor é retirado do campo dhost se service for NETBIOS . |
dIPDomain | read_only_udm.target.domain.name | O valor é retirado do campo dIPDomain se dest_domain estiver vazio. |
dst | read_only_udm.target.ip | O valor é retirado do campo dst . |
dst_os | read_only_udm.target.asset.platform_software.platform_version | O valor é retirado do campo dst_os . |
dpt | read_only_udm.target.port | O valor é retirado do campo dpt e convertido num 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 . Pode ser mapeado para o nome de anfitrião principal, o IP de destino ou o nome de anfitrião intermediário com base na disponibilidade e no formato destes campos. |
intf | read_only_udm.additional.fields.value.string_value | O valor é retirado do campo intf e convertido numa string. |
read_only_udm.additional.fields.key | Valor estático: intf |
|
mitreTacticName | read_only_udm.security_result.rule_name | O valor é retirado do campo mitreTacticName . |
mitreTechniqueId | read_only_udm.security_result.detection_fields.value | O valor é retirado 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 é retirado do campo mitreTechniqueName . |
read_only_udm.security_result.detection_fields.key | Valor estático: Technique name |
|
módulo | read_only_udm.additional.fields.value.string_value | O valor é retirado do campo module . |
read_only_udm.additional.fields.key | Valor estático: module |
|
msg | read_only_udm.metadata.description | O valor é retirado do campo msg após a extração do campo protocol . |
operação | read_only_udm.additional.fields.value.string_value | O valor é retirado do campo operation . |
read_only_udm.additional.fields.key | Valor estático: operation |
|
protocolo | read_only_udm.network.ip_protocol | O valor é retirado do campo protocol se for TCP ou UDP . |
result | read_only_udm.security_result.action | Mapeado a partir 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 é retirado do campo rt e analisado como uma data/hora UNIX em milissegundos. |
shost | read_only_udm.principal.hostname | O valor é retirado 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 . Pode ser mapeado para o nome de anfitrião principal ou o IP com base na disponibilidade e no formato destes campos. |
smac | read_only_udm.principal.mac | O valor é retirado do campo smac . |
fonte | read_only_udm.principal.hostname | O valor é retirado do campo source . |
source_domain | read_only_udm.principal.domain.name | O valor é retirado do campo source_domain . |
src | read_only_udm.principal.ip | O valor é retirado do campo src . |
subscriberName | read_only_udm.additional.fields.value.string_value | O valor é retirado 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 é retirado do campo suser após a extração do nome de utilizador. |
limite | read_only_udm.additional.fields.value.string_value | O valor é retirado 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 é retirado do campo usrname se não estiver vazio ou for N/A . |
vlan | read_only_udm.principal.labels.value | O valor é retirado 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: SCAN_NETWORK , NETWORK_CONNECTION , NETWORK_UNCATEGORIZED , STATUS_UPDATE ou GENERIC_EVENT . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.