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 Logs zu VM-Lebenszyklus-, Netzwerk-, Speicher- und Sicherheitsereignissen 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 Dienst observiq-otel-collector
  • Wenn Sie einen Proxy verwenden, prüfen Sie, ob die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sind.
  • Privilegierter Zugriff auf den Windows Hyper-V-Host mit Administratorberechtigungen

Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Erfassungs-Agents auf.
  3. Laden Sie die Authentifizierungsdatei für die Aufnahme 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 > Profil auf.
  3. Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.

Bindplane-Agent installieren

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

Windows-Installation

  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 angezeigt werden.

Weitere Installationsressourcen

Weitere Installationsoptionen und Informationen zur Fehlerbehebung finden Sie im Installationsleitfaden für den Bindplane-Agent.

Bindplane-Agent so konfigurieren, dass Logs erfasst und an Google SecOps gesendet werden

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 von der Festplatte
    • include: Liste der zu überwachenden Dateipfade. Legen Sie hier den Speicherort fest, an dem Sie Hyper-V-Ereignisprotokolle exportieren (z. B. C:\HyperVLogs\*.evtx).
    • start_at: Legen Sie beginning fest, um vorhandene Logs zu lesen, oder end, um nur neue Einträge zu lesen.
  • Exporterkonfiguration :

    • windows_hyperv: Beschreibender Name für den Exporter
    • creds_file_path: Vollständiger Pfad zur Authentifizierungsdatei für die Aufnahme:
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: Kundennummer 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
      • Die vollständige Liste finden Sie unter Regionale Endpunkte.
    • WINDOWS_HYPERV: Logtyp genau so, wie er in Chronicle angezeigt wird
    • ingestion_labels: Optionale Labels im YAML-Format (z. B. env: production)
  • Pipelinekonfiguration :

    • hyperv_to_chronicle: Beschreibender 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
    
    • Dienstkonsole:
      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. Prüfen Sie die Logs auf Fehler:

    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 Protokolle in Dateien auf der Festplatte exportieren, damit der Bindplane-Agent sie erfassen kann.

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

    mkdir C:\HyperVLogs
    
  2. 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
    

    Sie können bei Bedarf weitere Hyper-V-Ereigniskanäle exportieren. Verfügbare Kanäle sind:

    • 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 Pfad include des Bindplane-Agents 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 Aus „system_time“ mit Formaten oder aus „EventReceivedTime“ als UNIX oder UNIX_MS geparst
Nachricht metadata.description Wert direkt kopiert
EventTime, EventReceivedTime metadata.event_timestamp Aus „EventTime“ als UNIX oder UNIX_MS oder aus „EventReceivedTime“ als UNIX oder UNIX_MS geparst
metadata.event_type Auf „PROCESS_LAUNCH“ festgelegt, wenn „has_principal“ und „has_target_process“ vorhanden sind. Andernfalls auf „USER_LOGIN“, wenn „has_principal“ und „has_target“ vorhanden sind, aber nicht „has_target_process“. Andernfalls auf „STATUS_UPDATE“, wenn „has_principal“ vorhanden ist, aber nicht „has_target“. Andernfalls auf „USER_RESOURCE_ACCESS“, wenn „has_target“ vorhanden ist. Andernfalls auf „GENERIC_EVENT“.
provider.event_source metadata.product_event_type Wert direkt kopiert
record_id, RecordNumber metadata.product_log_id In einen String aus „record_id“ konvertiert, wenn nicht leer, oder aus „RecordNumber“, wenn nicht leer
provider.name, SourceName metadata.product_name Wert aus „provider.name“, wenn nicht leer, andernfalls aus „SourceName“, wenn nicht leer, andernfalls „Microsoft-Windows-Hyper-V“
Version metadata.product_version In einen String konvertiert
Nachricht network.session_duration.nanos Mit dem Grok-Muster aus der Nachricht extrahiert und in eine Ganzzahl konvertiert
Domain principal.administrative_domain Wert direkt kopiert
Computer principal.asset.hostname Wert direkt kopiert
Computer, Hostname principal.hostname Wert aus „Computer“, wenn nicht leer, andernfalls aus „Hostname“, wenn 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“, wenn nicht leer, andernfalls aus „UserID“, wenn nicht leer
Nachricht security_result.description Mit dem Grok-Muster aus der Nachricht extrahiert
Nachricht, ActivityId security_result.detection_fields Mit dem Label aus „nt_status“ zusammengeführt, das mit dem Grok-Muster aus der Nachricht extrahiert wurde, und aus „ActivityId“
level, Severity security_result.severity Basierend auf dem Wert von „level“ festgelegt (1–3 INFORMATIONAL, 4 ERROR, 5 CRITICAL, andernfalls UNKNOWN_SEVERITY) oder basierend auf „Severity“ (INFO INFORMATIONAL, WARN MEDIUM, ERROR ERROR)
EventType security_result.severity_details Wert direkt kopiert
execution.process_id, ProcessID target.process.pid In einen String aus „execution.process_id“ konvertiert, wenn nicht leer, oder aus „ProcessID“, wenn nicht leer
execution.thread_id, ThreadID target.process.product_specific_process_id Auf „ThreadID: “ aus „execution.thread_id“ festgelegt, wenn nicht leer, oder aus „ThreadID“, wenn 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 Mit dem Grok-Muster aus der Nachricht extrahiert
provider.guid target.resource.type Auf „Hyper-V VmSwitch“ festgelegt, wenn nicht leer

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