Windows Hyper-V-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Windows Hyper-V-Logs mit Bindplane in Google Security Operations aufnehmen.

Windows Hyper-V ist ein Microsoft-Hypervisor, der Protokolle für VM-Lebenszyklus-, Netzwerk-, Speicher- und Sicherheitsereignisse generiert. Der BindPlane-Agent erfasst exportierte Hyper-V-Ereignisprotokolldateien direkt aus dem lokalen Dateisystem.

Hinweis

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Eine Google SecOps-Instanz
  • Windows Server 2016 oder höher mit Unterstützung für den observiq-otel-collector-Dienst
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Privilegierter Zugriff auf den Windows Hyper-V-Host mit Administratorberechtigungen

Authentifizierungsdatei für die Google SecOps-Datenaufnahme abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Datei für die Ingestion-Authentifizierung herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.

BindPlane-Agent installieren

Installieren Sie den Bindplane-Agent auf Ihrem Windows-Betriebssystem gemäß der folgenden Anleitung.

Fenstereinbau

  1. Öffnen Sie die Eingabeaufforderung oder PowerShell als Administrator.
  2. Führen Sie dazu diesen Befehl aus:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Warten Sie, bis die Installation abgeschlossen ist.

  4. Überprüfen Sie die Installation mit folgendem Befehl:

    sc query observiq-otel-collector
    

Der Dienst sollte als RUNNING (Wird ausgeführt) angezeigt werden.

Zusätzliche Installationsressourcen

Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie in der Installationsanleitung für den Bindplane-Agent.

BindPlane-Agenten zum Erfassen von Logs und Senden an Google SecOps konfigurieren

Konfigurationsdatei suchen

  • Windows:

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

Konfigurationsdatei bearbeiten

  • Ersetzen Sie den gesamten Inhalt von config.yaml durch die folgende Konfiguration:

    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
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • filelog: Der Empfängertyp zum Erfassen von Logdateien vom Laufwerk
    • include: Liste der zu überwachenden Dateipfade. Legen Sie hier den Speicherort fest, an den Sie Hyper-V-Ereignisprotokolle exportieren (z. B. C:\HyperVLogs\*.evtx).
    • start_at: Auf beginning setzen, um vorhandene Logs zu lesen, oder auf end, um nur neue Einträge zu lesen
  • Exporter-Konfiguration:

    • windows_hyperv: Beschreibender Name für den Exporter
    • creds_file_path: Vollständiger Pfad zur Datei für die Authentifizierung bei der Aufnahme:
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: Kunden-ID aus dem vorherigen Schritt
    • endpoint: Regionale Endpunkt-URL:
      • USA: malachiteingestion-pa.googleapis.com
      • Europa: europe-malachiteingestion-pa.googleapis.com
      • Asien: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Eine vollständige Liste finden Sie unter Regionale Endpunkte.
    • WINDOWS_HYPERV: Logtyp genau wie in Chronicle
    • ingestion_labels: Optionale Labels im YAML-Format (z. B. env: production)
  • Pipelinekonfiguration:

    • hyperv_to_chronicle: Aussagekräftiger Name für die Pipeline

Konfigurationsdatei speichern

  • Speichern Sie die Datei nach der Bearbeitung:
    • Windows: Klicken Sie auf Datei > Speichern.

Bindplane-Agent neu starten, um die Änderungen zu übernehmen

So starten Sie den Bindplane-Agent unter Windows neu:

  1. Wählen Sie eine der folgenden Optionen aus:

    • Eingabeaufforderung oder PowerShell als Administrator:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Services Console:
      1. Drücken Sie Win+R, geben Sie services.msc ein und drücken Sie die Eingabetaste.
      2. Suchen Sie nach observIQ OpenTelemetry Collector.
      3. Klicken Sie mit der rechten Maustaste und wählen Sie Neu starten aus.
  2. Prüfen Sie, ob der Dienst ausgeführt wird:

    sc query observiq-otel-collector
    
  3. Logs auf Fehler prüfen:

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

Windows Hyper-V-Logexport konfigurieren

Windows Hyper-V-Logs werden als Windows-Ereignisprotokolleinträge gespeichert. Sie müssen diese Logs in Dateien auf der Festplatte exportieren, damit der BindPlane-Agent sie erfassen kann.

  1. Erstellen Sie ein Verzeichnis zum Speichern der exportierten Protokolldateien:

    mkdir C:\HyperVLogs
    
  2. So exportieren Sie Hyper-V-Ereignisprotokolle mit 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
    

    Bei Bedarf können Sie zusätzliche Hyper-V-Ereigniskanäle exportieren. Folgende Channels sind verfügbar:

    • Microsoft-Windows-Hyper-V-VMMS-Admin (Virtual Machine Management Service)
    • Microsoft-Windows-Hyper-V-Worker-Admin (VM-Worker-Prozesse)
    • Microsoft-Windows-Hyper-V-Hypervisor-Admin (Hypervisor-Ereignisse)
    • Microsoft-Windows-Hyper-V-Config-Admin (Konfigurationsereignisse)
  3. Optional: Regelmäßige Exporte mit PowerShell planen:

    $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. Prüfen Sie, ob die exportierten Logdateien unter `C:\HyperVLogs` erstellt werden.

  5. Achten Sie darauf, dass der Bindplane-Agent-Pfad include in config.yaml mit dem Exportverzeichnis übereinstimmt.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
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 Mit Labels zusammengeführt, die aus diesen Feldern erstellt wurden
system_time, EventReceivedTime metadata.collected_timestamp Geparsed aus „system_time“ mit Formaten oder aus „EventReceivedTime“ als UNIX oder UNIX_MS
Nachricht metadata.description Wert direkt kopiert
EventTime, EventReceivedTime metadata.event_timestamp Geparsed aus EventTime als UNIX oder UNIX_MS oder aus EventReceivedTime als UNIX oder UNIX_MS
metadata.event_type Auf „PROCESS_LAUNCH“ setzen, wenn has_principal und has_target_process, andernfalls auf „USER_LOGIN“, wenn has_principal und has_target und nicht has_target_process, andernfalls auf „STATUS_UPDATE“, wenn has_principal und nicht has_target, andernfalls auf „USER_RESOURCE_ACCESS“, wenn has_target, andernfalls auf „GENERIC_EVENT“
provider.event_source metadata.product_event_type Wert direkt kopiert
record_id, RecordNumber metadata.product_log_id Wird in einen String aus „record_id“ konvertiert, falls nicht leer, oder aus „RecordNumber“, falls nicht leer
provider.name, SourceName metadata.product_name Wert aus „provider.name“, falls nicht leer, andernfalls „SourceName“, falls nicht leer, andernfalls „Microsoft-Windows-Hyper-V“
Version metadata.product_version In String konvertiert
Nachricht network.session_duration.nanos Aus Nachricht mit Grok-Muster extrahiert, in Ganzzahl konvertiert
Domain principal.administrative_domain Wert direkt kopiert
Computer principal.asset.hostname Wert direkt kopiert
Computer, Hostname principal.hostname Wert vom Computer, falls nicht leer, andernfalls vom Hostnamen, falls nicht leer
AccountName principal.user.role_description Wert direkt kopiert
AccountType principal.user.role_name Wert direkt kopiert
event_data.name principal.user.user_display_name Wert direkt kopiert
security.user_id, UserID principal.user.userid Wert aus „security.user_id“, falls nicht leer, andernfalls aus „UserID“, falls nicht leer
Nachricht security_result.description Aus Nachricht mit Grok-Muster extrahiert
message, ActivityId security_result.detection_fields Zusammengeführt mit dem Label aus „nt_status“, das mit „grok“ aus der Nachricht extrahiert wurde, und aus „ActivityId“
level, Severity security_result.severity Wird basierend auf dem Level-Wert festgelegt (1–3 INFORMATIONAL, 4 ERROR, 5 CRITICAL, andernfalls UNKNOWN_SEVERITY) oder basierend auf dem Schweregrad (INFO INFORMATIONAL, WARN MEDIUM, ERROR ERROR).
EventType security_result.severity_details Wert direkt kopiert
execution.process_id, ProcessID target.process.pid Wird in einen String konvertiert aus „execution.process_id“, falls nicht leer, oder aus „ProcessID“, falls nicht leer
execution.thread_id, ThreadID target.process.product_specific_process_id Wird auf „ThreadID: “ aus „execution.thread_id“ festgelegt, falls nicht leer, oder aus „ThreadID“, falls nicht leer
provider.guid, ProviderGuid target.resource.id Wert aus „provider.guid“ nach dem Entfernen von { } oder aus „ProviderGuid“ nach dem Entfernen von { }
Nachricht target.resource.product_object_id Aus Nachricht mit Grok-Muster extrahiert
provider.guid target.resource.type Wird auf „Hyper-V VmSwitch“ gesetzt, wenn der Wert nicht leer ist

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten