Recolha registos do CrowdStrike Falcon Stream

Compatível com:

Este documento descreve como recolher registos do Crowdstrike Falcon Stream através do Bindplane. O analisador extrai pares de chave-valor e mapeia-os para o modelo de dados unificado (UDM), processando diferentes delimitadores e enriquecendo os dados com contexto adicional, como a gravidade e os tipos de eventos. Também realiza transformações específicas para determinados tipos de eventos e campos, como inícios de sessão de utilizadores e resultados de segurança.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google Security Operations
  • Windows 2016 ou posterior, ou um anfitrião Linux com systemd
  • Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas
  • Acesso privilegiado à consola do CrowdStrike Falcon
  • Obtenha credenciais da API para o Falcon Stream (ID de cliente e segredo do cliente)

Obtenha o ficheiro de autenticação de carregamento do Google SecOps

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. 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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. Copie e guarde o ID do cliente da secção Detalhes da organização.

Instale o agente do Bindplane

Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.

Instalação do Windows

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. 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

  1. 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).
  2. 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_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
            log_type: 'CS_STREAM'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Reinicie o agente do Bindplane para aplicar as alterações

  1. Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  2. Para reiniciar o agente do Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configure e obtenha uma chave da API CrowdStrike

  1. Inicie sessão no CrowdStrike Falcon com uma conta privilegiada.
  2. Aceda a Menu > Apoio técnico.
  3. Clique em Clientes da API > ChavesSelecionar.
  4. Clique em Adicionar novo cliente de API.
  5. Na secção Âmbitos da API, selecione Streams de eventos e, de seguida, ative a opção Ler.
  6. Clique em Adicionar.
  7. Copie e guarde o ID de cliente, o segredo do cliente e o URL base.

Instale o conetor do SIEM do Falcon

  1. Transfira o pacote do instalador RPM para o seu sistema operativo.
  2. Instalação de pacotes:

    • Sistema operativo CentOS:
    sudo rpm -Uvh <installer package>
    
    • Sistema operativo Ubuntu:
    sudo dpkg -i <installer package>
    
  3. Diretórios de instalação predefinidos:

    • Conetor do Falcon SIEM – /opt/crowdstrike/.
    • Serviço: /etc/init.d/cs.falconhoseclientd/.

Configure o conetor SIEM para encaminhar eventos para o Bindplane

  1. Inicie sessão na máquina com o SIEM Connector instalado como utilizador sudo.
  2. Aceda ao diretório /opt/crowdstrike/etc/.
  3. Mude o nome de cs.falconhoseclient.leef.cfg para cs.falconhoseclient.cfg.
    • O conetor SIEM usa a configuração cs.falconhoseclient.cfg por predefinição.
  4. Edite o ficheiro cs.falconhoseclient.cfg e modifique ou defina os seguintes parâmetros:
    • api_url: – O URL base do Crowdstrike Falcon copiado do passo anterior.
    • app_id: – Qualquer string como identificador para a ligação à API Falcon Streaming (por exemplo, defina como app_id: SECOPS-LEEF).
    • client_id: - O valor client_id copiado do passo anterior.
    • client_secret: - O valor client_secret copiado do passo anterior.
    • send_to_syslog_server: true - Ative o envio para o servidor Syslog.
    • host: - O IP ou o nome de anfitrião do agente do BindPlane.
    • port: - A porta do agente BindPlane.
  5. Guarde o ficheiro cs.falconhoseclient.cfg.
  6. Inicie o serviço do conetor SIEM:

    • Sistema operativo CentOS
    sudo service cs.falconhoseclientd start
    
    • Sistema operativo Ubuntu 16.04 ou posterior
    sudo systemctl start cs.falconhoseclientd.service
    
  7. (Opcional) Pare o serviço do conetor SIEM:

    • Sistema operativo CentOS
    sudo service cs.falconhoseclientd stop
    
    • Sistema operativo Ubuntu 16.04 ou posterior
    sudo systemctl stop cs.falconhoseclientd.service
    
  8. (Opcional): reinicie o serviço do conetor SIEM:

    • Sistema operativo CentOS
    sudo service cs.falconhoseclientd restart
    
    • Sistema operativo Ubuntu 16.04 ou posterior
    sudo systemctl restart cs.falconhoseclientd.service
    

Tabela de mapeamento do UDM

Campo de registo Mapeamento de UDM Lógica
cat security_result.category_details O valor do campo cat é mapeado diretamente para o campo security_result.category_details.
commandLine target.process.command_line O valor do campo commandLine é mapeado diretamente para o campo target.process.command_line.
cs1 security_result.summary Se cs1Label for "incidentType", o valor de cs1 é mapeado para security_result.summary. Caso contrário, é mapeado como um par de chave-valor em security_result.detection_fields com a chave de cs1Label e o valor de cs1.
cs1Label security_result.detection_fields.key Usado como a chave em security_result.detection_fields quando cs1 não é um tipo de incidente.
cs2 security_result.detection_fields.value Mapeado como um par de chave-valor em security_result.detection_fields com a chave de cs2Label e o valor de cs2.
cs2Label security_result.detection_fields.key Usado como chave em security_result.detection_fields juntamente com cs2.
cs3 security_result.detection_fields.value Mapeado como um par de chave-valor em security_result.detection_fields com a chave de cs3Label e o valor de cs3.
cs3Label security_result.detection_fields.key Usado como chave em security_result.detection_fields juntamente com cs3.
cs4 security_result.about.url Se cs4Label for "falconHostLink", o valor de cs4 é mapeado para security_result.about.url. Caso contrário, é mapeado como um par de chave-valor em security_result.detection_fields com a chave de cs4Label e o valor de cs4.
cs4Label security_result.detection_fields.key Usado como chave em security_result.detection_fields quando cs4 não é um falconHostLink.
description metadata.description O valor do campo description é mapeado diretamente para o campo metadata.description. Se estiver vazio, são usados incidentDescription, msg ou serviceName.
devTime metadata.event_timestamp O valor do campo devTime é analisado e mapeado para o campo metadata.event_timestamp.
deviceCustomDate1 metadata.event_timestamp Se devTime não estiver presente, o valor do campo deviceCustomDate1 é analisado e mapeado para o campo metadata.event_timestamp.
domain principal.administrative_domain Extraído do campo userName através de uma expressão regular e mapeado para principal.administrative_domain.
duser principal.user.userid Se estiver presente, o valor de duser substitui o campo usrName e é usado para preencher os campos do utilizador.
endpointName security_result.detection_fields.value Mapeado como um par de chave-valor em security_result.detection_fields com a chave "endpointName".
eventType metadata.product_event_type O valor do campo eventType é mapeado diretamente para o campo metadata.product_event_type.
falconHostLink security_result.about.url O valor do campo falconHostLink é mapeado diretamente para o campo security_result.about.url.
filePath target.process.file.full_path O valor do campo filePath é mapeado diretamente para o campo target.process.file.full_path.
identityProtectionIncidentId security_result.detection_fields.value Mapeado como um par de chave-valor em security_result.detection_fields com a chave "identityProtectionIncidentId".
incidentDescription metadata.description Se description estiver vazio, o valor do campo incidentDescription é mapeado para o campo metadata.description.
incidentType security_result.summary O valor do campo incidentType é mapeado diretamente para o campo security_result.summary.
log_type metadata.log_type O valor do campo log_type é mapeado diretamente para o campo metadata.log_type.
msg metadata.description Se description e incidentDescription estiverem vazios, o valor do campo msg é mapeado para o campo metadata.description.
numbersOfAlerts security_result.detection_fields.value Mapeado como um par de chave-valor em security_result.detection_fields com a chave "numbersOfAlerts".
numberOfCompromisedEntities security_result.detection_fields.value Mapeado como um par de chave-valor em security_result.detection_fields com a chave "numberOfCompromisedEntities".
product metadata.product_name O valor do campo product é mapeado diretamente para o campo metadata.product_name.
resource target.resource.name O valor do campo resource é mapeado diretamente para o campo target.resource.name.
serviceName target.application O valor do campo serviceName é mapeado diretamente para o campo target.application. Também é usado como alternativa para o metadata.description.
severityName security_result.severity O valor do campo severityName é mapeado para o campo security_result.severity depois de ser convertido em maiúsculas. A lógica de mapeamento inclui conversões específicas para diferentes nomes de gravidade.
sha256 target.file.sha256 O valor do campo sha256 é mapeado diretamente para o campo target.file.sha256.
src principal.ip O valor do campo src é mapeado diretamente para o campo principal.ip.
srcMAC principal.mac O valor do campo srcMAC é mapeado diretamente para o campo principal.mac após a substituição dos hífens por dois pontos.
state security_result.detection_fields.value Mapeado como um par de chave-valor em security_result.detection_fields com a chave "state".
success security_result.action Se success for "true", security_result.action é definido como "ALLOW". Se success for "false", security_result.action é definido como "BLOCK".
userName principal.user.userid Se usrName não estiver presente, o valor do campo userName é usado para preencher os campos do utilizador. O domínio é extraído, se estiver presente.
usrName principal.user.userid/target.user.userid Se estiver presente, o valor do campo usrName é mapeado para principal.user.userid ou target.user.userid, consoante o eventType. Se for um endereço de email, também é adicionado ao campo email_addresses respetivo.
vendor metadata.vendor_name O valor do campo vendor é mapeado diretamente para o campo metadata.vendor_name.
version metadata.product_version O valor do campo version é mapeado diretamente para o campo metadata.product_version.
(Lógica do analisador) extensions.auth.mechanism Definido como "USERNAME_PASSWORD" se eventType for "saml2Assert" ou "twoFactorAuthenticate".
(Lógica do analisador) extensions.auth.type Defina como "AUTHTYPE_UNSPECIFIED" se eventType for "assert" ou "userAuthenticate".
(Lógica do analisador) metadata.event_timestamp A data/hora do campo collection_time ou timestamp do registo não processado é usada como a data/hora do evento.
(Lógica do analisador) metadata.event_type Determinado com base no eventType e noutros campos. A predefinição é "GENERIC_EVENT" e pode ser alterada para "USER_LOGIN", "GROUP_MODIFICATION", "GROUP_DELETION", "SERVICE_STOP", "SERVICE_START" ou "USER_UNCATEGORIZED".
(Lógica do analisador) target.resource.type Definido como "GROUP" se eventType for "remove_group", "update_group" ou "delete_group".

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.