Coletar registros do Hyper-V do Windows

Compatível com:

Este documento explica como ingerir registros do Hyper-V do Windows no Google Security Operations usando o Bindplane.

O Hyper-V do Windows é um hipervisor da Microsoft que gera registros de eventos de ciclo de vida, rede, armazenamento e segurança de VMs. O agente do Bindplane coleta arquivos de registro de eventos do Hyper-V exportados diretamente do sistema de arquivos local.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Uma instância do Google SecOps
  • Windows Server 2016 ou mais recente com suporte ao serviço observiq-otel-collector
  • Se estiver executando em um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente do Bindplane
  • Acesso privilegiado ao host do Hyper-V do Windows com permissões de administrador

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. Baixe o arquivo de autenticação de ingestão. 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

Instale o agente do Bindplane no sistema operacional Windows de acordo com as instruções a seguir.

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
    
  3. Aguarde a conclusão da instalação.

  4. Execute o seguinte comando para confirmar a instalação:

    sc query observiq-otel-collector
    

O serviço vai aparecer como EM EXECUÇÃO.

Recursos de instalação adicionais

Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.

Configurar o agente do Bindplane para ingerir registros e enviar ao Google SecOps

Localizar o arquivo de configuração

  • Windows :

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Editar o arquivo de configuração

  • Substitua todo o conteúdo de config.yaml pela seguinte configuração:

    receivers:
        filelog:
            include:
                - C:\HyperVLogs\*.evtx
            start_at: beginning
    
    exporters:
        chronicle/windows_hyperv:
            compression: gzip
            creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: WINDOWS_HYPERV
            raw_log_field: body
            ingestion_labels:
                env: production
    
    service:
        pipelines:
            logs/hyperv_to_chronicle:
                receivers:
                    - filelog
                exporters:
                    - chronicle/windows_hyperv
    

Parâmetros de configuração

Substitua os seguintes marcadores de posição:

  • Configuração do receptor :

    • filelog: o tipo de receptor para coletar arquivos de registro do disco
    • include: lista de caminhos de arquivo a serem monitorados. Defina esse valor para o local em que você exporta os registros de eventos do Hyper-V (por exemplo, C:\HyperVLogs\*.evtx)
    • start_at: defina como beginning para ler os registros atuais ou end para ler apenas novas entradas
  • Configuração do exportador :

    • windows_hyperv: nome descritivo do exportador
    • creds_file_path: caminho completo para o arquivo de autenticação de ingestão:
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: ID do cliente da etapa anterior
    • endpoint: URL do endpoint regional:
      • EUA: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Ásia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Consulte Endpoints regionais para conferir a lista completa
    • WINDOWS_HYPERV: tipo de registro exatamente como aparece no Chronicle
    • ingestion_labels: rótulos opcionais no formato YAML (por exemplo, env: production)
  • Configuração do pipeline :

    • hyperv_to_chronicle: nome descritivo do pipeline

Salvar o arquivo de configuração

  • Depois de editar, salve o arquivo:
    • Windows: clique em Arquivo > Salvar

Reiniciar o agente do Bindplane para aplicar as mudanças

Para reiniciar o agente do Bindplane no Windows:

  1. Escolha uma das seguintes opções:

    • Prompt de comando ou PowerShell como administrador:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Console de serviços:
      1. Pressione Win+R, digite services.msc e pressione Enter.
      2. Localize o observIQ OpenTelemetry Collector.
      3. Clique com o botão direito do mouse e selecione Reiniciar.
  2. Verifique se o serviço está sendo executado:

    sc query observiq-otel-collector
    
  3. Verifique se há erros nos registros:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Configurar a exportação de registros do Hyper-V do Windows

Os registros do Hyper-V do Windows são armazenados como entradas do registro de eventos do Windows. É necessário exportar esses registros para arquivos no disco para que o agente do Bindplane possa coletá-los.

  1. Crie um diretório para armazenar os arquivos de registro exportados:

    mkdir C:\HyperVLogs
    
  2. Exporte os registros de eventos do Hyper-V usando wevtutil:

    wevtutil epl Microsoft-Windows-Hyper-V-VMMS-Admin C:\HyperVLogs\hyperv-vmms-admin.evtx
    wevtutil epl Microsoft-Windows-Hyper-V-Worker-Admin C:\HyperVLogs\hyperv-worker-admin.evtx
    

    É possível exportar outros canais de eventos do Hyper-V conforme necessário. Os canais disponíveis incluem:

    • Microsoft-Windows-Hyper-V-VMMS-Admin (serviço de gerenciamento de máquinas virtuais)
    • Microsoft-Windows-Hyper-V-Worker-Admin (processos de trabalho de VM)
    • Microsoft-Windows-Hyper-V-Hypervisor-Admin (eventos do hipervisor)
    • Microsoft-Windows-Hyper-V-Config-Admin (eventos de configuração)
  3. (Opcional) Programe exportações regulares usando o PowerShell:

    $action = New-ScheduledTaskAction -Execute "cmd.exe" -Argument '/c wevtutil epl Microsoft-Windows-Hyper-V-VMMS-Admin C:\HyperVLogs\hyperv-vmms-admin.evtx /ow:true && wevtutil epl Microsoft-Windows-Hyper-V-Worker-Admin C:\HyperVLogs\hyperv-worker-admin.evtx /ow:true'
    $trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Hours 1) -Once -At (Get-Date)
    Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "ExportHyperVLogs" -Description "Export Hyper-V logs for Bindplane agent"
    
  4. Verifique se os arquivos de registro exportados estão sendo criados em `C:\HyperVLogs`.

  5. Verifique se o caminho include do agente do Bindplane em config.yaml corresponde ao diretório de exportação.

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
channel, event_data.data, event_id.id, event_id.qualifiers, keywords, task, SeverityValue, OpcodeValue, EventID, ProviderGuid, ActivityId, Version, RecordNumber, ProcessID, ThreadID, Channel, AccountName, UserID, AccountType, Opcode, SourceModuleName, SourceModuleType additional.fields Mesclado com rótulos criados com base nesses campos
system_time, EventReceivedTime metadata.collected_timestamp Analisado de system_time com formatos ou de EventReceivedTime como UNIX ou UNIX_MS
Mensagem metadata.description Valor copiado diretamente
EventTime, EventReceivedTime metadata.event_timestamp Analisado de EventTime como UNIX ou UNIX_MS ou de EventReceivedTime como UNIX ou UNIX_MS
metadata.event_type Definido como "PROCESS_LAUNCH" se has_principal e has_target_process, caso contrário, "USER_LOGIN" se has_principal e has_target e não has_target_process, caso contrário, "STATUS_UPDATE" se has_principal e não has_target, caso contrário, "USER_RESOURCE_ACCESS" se has_target, caso contrário, "GENERIC_EVENT"
provider.event_source metadata.product_event_type Valor copiado diretamente
record_id, RecordNumber metadata.product_log_id Convertido em string de record_id se não estiver vazio ou de RecordNumber se não estiver vazio
provider.name, SourceName metadata.product_name Valor de provider.name se não estiver vazio, caso contrário, SourceName se não estiver vazio, caso contrário, "Microsoft-Windows-Hyper-V"
Versão metadata.product_version Convertido em string
mensagem network.session_duration.nanos Extraído da mensagem usando o padrão grok, convertido em número inteiro
Domínio principal.administrative_domain Valor copiado diretamente
computador principal.asset.hostname Valor copiado diretamente
computador, nome do host principal.hostname Valor do computador se não estiver vazio, caso contrário, do nome do host se não estiver vazio
AccountName principal.user.role_description Valor copiado diretamente
AccountType principal.user.role_name Valor copiado diretamente
event_data.name principal.user.user_display_name Valor copiado diretamente
security.user_id, UserID principal.user.userid Valor de security.user_id se não estiver vazio, caso contrário, de UserID se não estiver vazio
mensagem security_result.description Extraído da mensagem usando o padrão grok
mensagem, ActivityId security_result.detection_fields Mesclado com o rótulo de nt_status extraído da mensagem usando grok e de ActivityId
nível, gravidade security_result.severity Definido com base no valor do nível (1 a 3 INFORMATIONAL, 4 ERROR, 5 CRITICAL, caso contrário, UNKNOWN_SEVERITY) ou com base na gravidade (INFO INFORMATIONAL, WARN MEDIUM, ERROR ERROR)
EventType security_result.severity_details Valor copiado diretamente
execution.process_id, ProcessID target.process.pid Convertido em string de execution.process_id se não estiver vazio ou de ProcessID se não estiver vazio
execution.thread_id, ThreadID target.process.product_specific_process_id Definido como "ThreadID: " de execution.thread_id se não estiver vazio ou de ThreadID se não estiver vazio
provider.guid, ProviderGuid target.resource.id Valor de provider.guid após remover { }, ou de ProviderGuid após remover { }
mensagem target.resource.product_object_id Extraído da mensagem usando o padrão grok
provider.guid target.resource.type Definido como "Hyper-V VmSwitch" se não estiver vazio

Registro de alterações

Consulte o registro de alterações desse analisador

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