Coletar registros de fluxo do CrowdStrike Falcon

Compatível com:

Este documento explica como coletar registros do CrowdStrike Falcon Stream usando o Bindplane. O analisador extrai pares de chave-valor e os mapeia para o Modelo de dados unificado (UDM, na sigla em inglês), processando delimitadores diferentes e enriquecendo os dados com mais contexto, como gravidade e tipos de evento. Ele também realiza transformações específicas para determinados tipos de evento e campos, como logins de usuários e resultados de segurança.

Antes de começar

  • Verifique se você tem uma instância do Google Security Operations.
  • Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
  • Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
  • Confira se você tem acesso privilegiado ao console do CrowdStrike Falcon.
  • Receba as credenciais da API para o Falcon Stream (ID e chave secreta do cliente).

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o BindPlane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este 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 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

Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    • Localize o arquivo config.yaml. Normalmente, ele está 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 Notepad).
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
        tcplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:54525"
    
    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: SYSLOG
                namespace: cs_stream
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    

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 Services ou digite o seguinte comando:

    net stop BindplaneAgent && net start BindplaneAgent
    

Configurar e receber uma chave de API do CrowdStrike

  1. Faça login no CrowdStrike Falcon com uma conta privilegiada.
  2. Acesse Menu > Suporte.
  3. Clique em Clientes de API > Selecionar chaves.
  4. Clique em Adicionar novo cliente de API.
  5. Na seção Escopos da API, selecione Fluxos de eventos e ative a opção Ler.
  6. Clique em Adicionar.
  7. Copie e salve o ID do cliente, a chave secreta do cliente e o URL de base.

Instalar o conector do SIEM do Falcon

  1. Faça o download do pacote de instalação do RPM para seu sistema operacional.
  2. Instalação do pacote:

    • Sistema operacional CentOS:

      sudo rpm -Uvh <installer package>
      
    • Sistema operacional Ubuntu:

      sudo dpkg -i <installer package>
      
  3. Diretórios de instalação padrão:

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

Configurar o conector SIEM para encaminhar eventos ao Bindplane

  1. Faça login na máquina com o conector SIEM instalado como usuário sudo.
  2. Acesse o diretório /opt/crowdstrike/etc/.
  3. cs.falconhoseclient.leef.cfg foi renomeado como cs.falconhoseclient.cfg.
    • O conector SIEM usa a configuração cs.falconhoseclient.cfg por padrão.
  4. Edite o arquivo cs.falconhoseclient.cfg e modifique ou defina os seguintes parâmetros:
    • api_url:: o URL base do CrowdStrike Falcon copiado da etapa anterior.
    • app_id:: qualquer string como identificador para conexão com a API Falcon Streaming. Por exemplo, defina como app_id: SECOPS-LEEF.
    • client_id:: o valor client_id copiado da etapa anterior.
    • client_secret:: o valor de client_secret copiado da etapa anterior.
    • send_to_syslog_server: true: ativar o push para o servidor Syslog.
    • host:: o IP ou o nome do host do agente do Bindplane.
    • port:: a porta do agente do BindPlane.
  5. Salve o arquivo cs.falconhoseclient.cfg.
  6. Inicie o serviço do conector do SIEM:

    • Sistema operacional CentOS:

      sudo service cs.falconhoseclientd start
      
    • Sistema operacional Ubuntu 16.04 ou mais recente:

      sudo systemctl start cs.falconhoseclientd.service
      
  7. Opcional: pare o serviço do conector do SIEM:

    • Sistema operacional CentOS:

      sudo service cs.falconhoseclientd stop
      
    • Sistema operacional Ubuntu 16.04 ou mais recente:

      sudo systemctl stop cs.falconhoseclientd.service
      
  8. Opcional: reinicie o serviço do conector do SIEM:

    • Sistema operacional CentOS:

      sudo service cs.falconhoseclientd restart
      
    • Sistema operacional Ubuntu 16.04 ou mais recente:

      sudo systemctl restart cs.falconhoseclientd.service
      

Tabela de mapeamento do UDM

Campo de registro Mapeamento do 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 será mapeado para security_result.summary. Caso contrário, ele é 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 a chave em security_result.detection_fields 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 a chave em security_result.detection_fields com cs3.
cs4 security_result.about.url Se cs4Label for "falconHostLink", o valor de cs4 será mapeado para security_result.about.url. Caso contrário, ele é 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 É usada como a 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, incidentDescription, msg ou serviceName serão usados.
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 será analisado e mapeado para o campo metadata.event_timestamp.
domain principal.administrative_domain Extraídos do campo userName usando uma expressão regular e mapeados para principal.administrative_domain.
duser principal.user.userid Se presente, o valor de duser substitui o campo usrName e é usado para preencher os campos do usuário.
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 será 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 será 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 substituto para metadata.description.
severityName security_result.severity O valor do campo severityName é mapeado para o campo security_result.severity depois de ser convertido em letras 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 depois que os hifens são substituídos 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 será definido como "ALLOW". Se success for "false", security_result.action será definido como "BLOCK".
userName principal.user.userid Se usrName não estiver presente, o valor do campo userName será usado para preencher os campos do usuário. O domínio é extraído, se estiver presente.
usrName principal.user.userid / target.user.userid Se presente, o valor do campo usrName é mapeado para principal.user.userid ou target.user.userid, dependendo do eventType. Se for um endereço de e-mail, ele também será adicionado ao respectivo campo email_addresses.
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.
(Parser Logic) extensions.auth.mechanism Defina como "USERNAME_PASSWORD" se eventType for "saml2Assert" ou "twoFactorAuthenticate".
(Parser Logic) extensions.auth.type Defina como "AUTHTYPE_UNSPECIFIED" se eventType for "assert" ou "userAuthenticate".
(Parser Logic) metadata.event_timestamp O carimbo de data/hora do campo collection_time ou timestamp do registro bruto é usado como o carimbo de data/hora do evento.
(Parser Logic) metadata.event_type Determinado com base no eventType e em outros campos. O padrão é "GENERIC_EVENT" e pode ser alterado para "USER_LOGIN", "GROUP_MODIFICATION", "GROUP_DELETION", "SERVICE_STOP", "SERVICE_START" ou "USER_UNCATEGORIZED".
(Parser Logic) target.resource.type Defina como "GROUP" se eventType for "remove_group", "update_group" ou "delete_group".

Alterações

2025-01-10

Melhoria:

  • Quando "OperationBlocked" é "true", "security_result.action" é mapeado para "BLOCK".
  • Quando "OperationBlocked" é "false", "security_result.action" é mapeado para "ALLOW".
  • Quando "event_type" é "IdentityProtectionEvent", "event_data.IncidentDescription" é mapeado para "security_result.summary".
  • Quando "event_type" é "IdentityProtectionEvent", "event_data.SeverityName" é mapeado para "security_result.severity".

2025-01-09

Melhoria:

  • "event_data.Technique" foi associado a "security_result.rule_name".
  • "event_data.CommandLine" foi associado a "target.process.command_line".
  • Se "event_data.IOCType" for "ipv4", mapeie "event_data.IOCValue" para "target.ip" e "target.asset.ip".
  • Se "event_data.IOCType" for "hash_sha256", mapeie "event_data.IOCValue" para "target.file.sha256".

2024-12-12

Melhoria:

  • "event.SeverityName" foi mapeado para "security_result.severity".
  • "event.Description" foi associado a "security_result.summary".
  • "security_result.action" mapeado com base em "event.PatternDispositionFlags.OperationBlocked".

2024-10-29

Melhoria:

  • Adição de suporte ao formato JSON de registros.
  • "request" foi mapeado para "network.http.referral_url".
  • "networkDetectionType" foi mapeado para "security_result.detection_fields".

2022-07-18

Melhoria:

  • Adicionamos o seguinte mapeamento para os registros de formato LEEF:
  • O campo "version" mapeado para "metadata.product_version".
  • O campo "usrName" e "userName" para "principal.user.email_addresses", se for um e-mail, ou mapeado para "principal.user.userid".
  • O campo "severityName" é mapeado para "security_result.severity".
  • O campo "cat" é mapeado para "security_result.category_details".
  • O campo "incidentType" mapeado para "security_result.summary".
  • O campo "falconHostLink" foi mapeado para "security_result.about.url".
  • O campo "numberOfCompromisedEntities" é mapeado para "security_result.detection_fields[n]".
  • O campo "identityProtectionIncidentId" foi mapeado para "security_result.detection_fields[n]".
  • O campo "numbersOfAlerts" é mapeado para "security_result.detection_fields[n]".
  • O campo "state" é mapeado para "security_result.detection_fields[n]".
  • Adicionamos o seguinte mapeamento para os registros de formato CEF:
  • O campo "version" mapeado para "metadata.product_version".
  • O campo "deviceCustomDate1" foi mapeado para "metadata.event_type".
  • O campo "msg" é mapeado para "metadata.description".
  • O campo "cs1" é mapeado para "security_result.summary" se o valor de "cs1Label" for "incidentType". Caso contrário, ele é mapeado para "security_result.detection_fields[n]".
  • O campo "cs2" foi mapeado para "security_result.detection_fields[n]".
  • O campo "cs3" foi mapeado para "security_result.detection_fields[n]".
  • O campo "cs1" é mapeado para "security_result.about.url" se o valor de "cs4Label" for "falconHostLink". Caso contrário, ele é mapeado para "security_result.detection_fields[n]".
  • O campo "cn1" foi mapeado para "security_result.detection_fields[n]".
  • O campo "cn2" foi mapeado para "security_result.detection_fields[n]".
  • O campo "cn3" é mapeado para "security_result.detection_fields[n]".
  • O campo "duser" para "principal.user.email_addresses" se for um e-mail, ou mapeado para "principal.user.userid".

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