Microsoft PowerShell-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Microsoft PowerShell-Logs mit dem Bindplane-Agent in Google Security Operations aufnehmen.

Microsoft PowerShell ist ein Framework von Microsoft zur Aufgabenautomatisierung und Konfigurationsverwaltung, das aus einer Befehlszeile und einer Skriptsprache besteht. PowerShell-Logs erfassen die Ausführung von Skripts, Modulaktivitäten und Befehlsaufrufe und bieten so Einblick in PowerShell-Vorgänge für Sicherheitsmonitoring und forensische Analysen.

Hinweis

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

  • Google SecOps-Instanz
  • Windows Server 2016 oder höher
  • Netzwerkverbindung zwischen dem Windows-Host und Google SecOps
  • Wenn Sie den Agent hinter einem Proxy ausführen, müssen die Firewallports gemäß den Anforderungen des Bindplane-Agents geöffnet sein.
  • Administratorzugriff auf den Windows-Host zum Konfigurieren der PowerShell-Protokollierung und zum Installieren des Bindplane-Agents

PowerShell-Logging konfigurieren

Das PowerShell-Logging muss auf Windows-Hosts aktiviert sein, bevor Logs erfasst werden können. Standardmäßig ist das PowerShell-Logging minimal. Aktivieren Sie die Protokollierung von Skriptblöcken, um detaillierte PowerShell-Aktivitäten zu erfassen.

Script Block Logging mithilfe von Gruppenrichtlinien aktivieren

  1. Öffnen Sie den Editor für lokale Gruppenrichtlinien, indem Sie gpedit.msc als Administrator ausführen.
  2. Gehen Sie zu Computerkonfiguration> Administrative Vorlagen> Windows-Komponenten> Windows PowerShell.
  3. Doppelklicken Sie auf PowerShell-Skriptblockprotokollierung aktivieren.
  4. Wählen Sie Aktiviert aus.
  5. Optional können Sie Start-/Stoppereignisse für den Aufruf von Skriptblöcken protokollieren aktivieren, um Start- und Stoppereignisse für jeden Skriptblock zu erfassen. Beachten Sie, dass bei dieser Option eine große Menge an Protokollen generiert wird.
  6. Klicken Sie auf OK.
  7. Öffnen Sie die Eingabeaufforderung als Administrator und führen Sie gpupdate /force aus, um die Richtlinie sofort anzuwenden.

Script Block Logging über die Registrierung aktivieren

Alternativ können Sie die Protokollierung von Script-Blöcken aktivieren, indem Sie den folgenden Registrierungswert festlegen:

  1. Öffnen Sie den Registrierungs-Editor, indem Sie regedit als Administrator ausführen.
  2. Rufen Sie HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging auf.
  3. Wenn der Schlüssel nicht vorhanden ist, erstellen Sie ihn.
  4. Erstellen Sie einen neuen DWORD-Wert (32-Bit) mit dem Namen EnableScriptBlockLogging und legen Sie seinen Wert auf 1 fest.
  5. Starten Sie PowerShell-Sitzungen neu, damit die Änderung wirksam wird.

Bei der PowerShell-Skriptblockprotokollierung werden Ereignisse mit der Ereignis-ID 4104 in den Ereignisprotokollkanal Microsoft-Windows-PowerShell/Operational geschrieben.

Optional: Modul-Logging aktivieren

Mit der Modulprotokollierung werden Details zur Pipelineausführung für die angegebenen Module aufgezeichnet. So aktivieren Sie das Modul-Logging für alle Module:

  1. Gehen Sie im Editor für lokale Gruppenrichtlinien zu Computerkonfiguration > Administrative Vorlagen > Windows-Komponenten > Windows PowerShell.
  2. Doppelklicken Sie auf Modul-Logging aktivieren.
  3. Wählen Sie Aktiviert aus.
  4. Klicken Sie neben Modulnamen auf Einblenden.
  5. Geben Sie * ein, um alle Module zu protokollieren.
  6. Klicken Sie im Fenster Modulnamen auf OK.
  7. Klicken Sie im Fenster Modulprotokollierung auf OK.
  8. Führen Sie gpupdate /force aus, um die Richtlinie anzuwenden.

Modulprotokollierungsereignisse werden mit der Ereignis-ID 4103 in das Ereignisprotokoll Windows PowerShell geschrieben.

Optional: Transkription aktivieren

Bei der Transkription wird eine textbasierte Aufzeichnung aller Ein- und Ausgaben der PowerShell-Sitzung erstellt. So aktivieren Sie die Transkription:

  1. Gehen Sie im Editor für lokale Gruppenrichtlinien zu Computerkonfiguration > Administrative Vorlagen > Windows-Komponenten > Windows PowerShell.
  2. Doppelklicken Sie auf PowerShell-Transkription aktivieren.
  3. Wählen Sie Aktiviert aus.
  4. Geben Sie optional ein Ausgabeverzeichnis für Transkripte an. Wenn dieses Feld leer bleibt, werden Transkripte im Ordner „Dokumente“ jedes Nutzers gespeichert.
  5. Klicken Sie auf Include invocation headers (Aufrufheader einfügen), um Zeitstempel und Metadaten einzufügen.
  6. Klicken Sie auf OK.
  7. Führen Sie gpupdate /force aus, um die Richtlinie anzuwenden.

Transkripte werden in Textdateien mit Namen geschrieben, die mit PowerShell_transcript beginnen.

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 > Collection Agent auf.
  3. Klicken Sie auf Herunterladen, um die Datei zur Authentifizierung der Aufnahme herunterzuladen.
  4. Speichern Sie die Datei sicher auf dem Windows-Host, auf dem der Bindplane-Agent 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-Host 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-Agent zum Erfassen von PowerShell-Logs konfigurieren

Windows-Konfigurationsdatei suchen

  • So finden Sie die Windows-Konfigurationsdatei:

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

Konfigurationsdatei bearbeiten

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

    receivers:
      windowseventlog/powershell:
        channel: Microsoft-Windows-PowerShell/Operational
        max_reads: 100
        poll_interval: 5s
        raw: true
        start_at: end
    
    processors:
      batch:
    
    exporters:
      chronicle/powershell:
        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: 'POWERSHELL'
        raw_log_field: body
        override_log_type: false
    
    service:
      pipelines:
        logs/powershell:
          receivers:
            - windowseventlog/powershell
          processors:
            - batch
          exporters:
            - chronicle/powershell
    

Konfigurationsparameter

Ersetzen Sie die folgenden Platzhalter:

  • Empfängerkonfiguration:

    • channel: Der Windows-Ereignislog-Channel, aus dem Daten erfasst werden sollen. Verwenden Sie für die PowerShell-Skriptblockprotokollierung Microsoft-Windows-PowerShell/Operational. Verwenden Sie für das Modul-Logging Windows PowerShell.
    • raw: Legen Sie true fest, um rohes Windows-Ereignislog-XML an Google SecOps zu senden.
    • start_at: Auf end festgelegt, um nur neue Ereignisse nach dem Start des Agents zu erfassen. Auf beginning setzen, um alle vorhandenen Ereignisse zu erfassen.
  • Exporter-Konfiguration:

    • <CUSTOMER_ID>: Ersetzen Sie diesen Platzhalter durch die Kunden-ID aus dem vorherigen Schritt.
    • creds_file_path: Vollständiger Pfad zur Datei für die Authentifizierung bei der Aufnahme. Kopieren Sie die heruntergeladene Authentifizierungsdatei an diesen Speicherort.
    • endpoint: Regionale Endpunkt-URL. Verwenden Sie den Endpunkt für Ihre Google SecOps-Region:

      • 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.
    • log_type: Legen Sie POWERSHELL fest, um den PowerShell-Parser zu verwenden.

Konfigurationsdatei speichern

Speichern Sie die Datei nach der Bearbeitung, indem Sie auf Datei > Speichern klicken.

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

Windows

  • So verwenden Sie die Eingabeaufforderung oder PowerShell als Administrator:

    net stop observiq-otel-collector && net start observiq-otel-collector
    
  • Oder über die Services-Konsole:

    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.
    4. Prüfen Sie, ob der Dienst ausgeführt wird:

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

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

Logaufnahme prüfen

Nachdem Sie den BindPlane-Agent konfiguriert und den Dienst neu gestartet haben, sollten PowerShell-Logs an Google SecOps gesendet werden.

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Klicken Sie auf Untersuchen > Suche.
  3. Führen Sie die folgende Suche aus, um zu prüfen, ob PowerShell-Logs aufgenommen werden:

    metadata.log_type = "POWERSHELL"
    
  4. Prüfen Sie, ob Ereignisse mit aktuellen Zeitstempeln angezeigt werden.

PowerShell-Ereignisse für die Protokollierung von Skriptblöcken (Ereignis-ID 4104) werden mit Details zu ausgeführten Skriptblöcken angezeigt, einschließlich des Skriptinhalts, der Skriptblock-ID und des Ausführungskontexts.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
HostId principal.resource.product_object_id Eindeutige Kennung für das Produktobjekt, das der Hauptressource zugeordnet ist
System.Version metadata.product_version Version des Produkts, durch das das Ereignis hervorgerufen wurde
System.EventId, EventID, winlog.event_id metadata.product_event_type Vom Produkt definierter Ereignistyp
Computer, System.Computer, computer, winlog.computer_name principal.hostname Hostname der primären Entität
Computer, System.Computer, computer, winlog.computer_name principal.asset.hostname Hostname des Assets, das mit dem Rechtssubjekt verknüpft ist
System.EventRecordID, RecordNumber, winlog.record_id metadata.product_log_id Eindeutige Kennung für den Logeintrag im Protokollierungssystem des Produkts
System.Opcode, opcode, winlog.opcode metadata.description Beschreibung des Ereignisses oder zusätzlicher Kontext
ProviderGuid, winlog.provider_guid metadata.product_deployment_id Eindeutige Kennung für die Bereitstellung des Produkts
System.ProcessID, ProcessID, ExecutionProcessID, execution.process_id, winlog.process.pid principal.process.pid Prozess-ID des Hauptprozesses
SourceModuleName principal.resource.name Name der Ressource, die dem Prinzipal zugeordnet ist
SourceModuleType principal.resource.resource_subtype Untertyp der Ressource, die dem Prinzipal zugeordnet ist
security.user_id, UserID, winlog.user.identifier principal.user.windows_sid Windows-Sicherheits-ID (SID) für den Hauptnutzer
metadata.event_type Ereignistyp (z.B. USER_LOGIN, NETWORK_CONNECTION)
SourceName, winlog.provider_name metadata.product_name Name des Produkts, das das Ereignis ausgelöst hat
AccountName, Username, UserName, winlog.user.name principal.user.userid Nutzer-ID des Hauptnutzers
Domain, winlog.user.domain principal.administrative_domain Verwaltungsdomain des Auftraggebers
Path, target_file, ScriptName, script_name, ContextInfo_Script Name, file_path target.process.file.full_path Vollständiger Pfad zur Datei, die mit dem Zielprozess verknüpft ist
Hostname, powershell.Host Name, ContextInfo_Host Name target.hostname Hostname der Zielentität
Hostname, powershell.Host Name, ContextInfo_Host Name target.asset.hostname Hostname des mit dem Ziel verknüpften Assets
Host-ID, HostID, ContextInfo_Host ID target.asset.asset_id Eindeutige Kennung für das Ziel-Asset.
Nombre_de_comando, ContextInfo_Command Name, CommandName target.application Name der Anwendung, die mit dem Ziel verknüpft ist
HostApplication, ContextInfo_Host Application target.process.command_line Befehlszeile zum Starten des Zielprozesses
ScriptBlockText target.process.command_line Befehlszeile zum Starten des Zielprozesses
MessageSourceAddress principal.ip IP-Adresse des Auftraggebers
MessageSourceAddress principal.asset.ip IP-Adresse des Assets, das mit dem Rechtssubjekt verknüpft ist
Nombre_de_host principal.application Name der Anwendung, die dem Prinzipal zugeordnet ist
Version_de_host principal.platform_version Version der Plattform, die mit dem Prinzipal verknüpft ist
Id_de_host principal.resource.id Eindeutige Kennung für die Hauptressource
Application_host principal.process.file.full_path Vollständiger Pfad zur Datei, die mit dem Hauptprozess verknüpft ist
HostApplication principal.process.command_line Befehlszeile zum Starten des Hauptprozesses
Usuario, admin_domain principal.user.userid Nutzer-ID des Hauptnutzers
Usuario, admin_domain principal.administrative_domain Verwaltungsdomain des Auftraggebers
CommandLine principal.process.command_line Befehlszeile zum Starten des Hauptprozesses
Machine, machine_id principal.asset.asset_id Eindeutige Kennung für das primäre Asset.
Maschine, Plattformsoftware principal.asset.platform_software.platform Plattformtyp des Assets (z.B. WINDOWS, LINUX)
Maschine, Plattformsoftware principal.asset.platform_software.platform_version Version der Plattformsoftware auf dem Asset
MessageSourceAddress intermediary.ip IP-Adresse des Vermittlers
MessageSourceAddress, Hostname intermediary.hostname Hostname der Vermittlerentität
MessageSourceAddress, Hostname intermediary.asset.hostname Hostname des Assets, das mit dem Vermittler verknüpft ist
MessageSourceAddress intermediary.port Vom Vermittler verwendete Portnummer
HostApplication target.process.command_line Befehlszeile zum Starten des Zielprozesses
HostId target.asset.asset_id Eindeutige Kennung für das Ziel-Asset.
SequenceNumber, ContextInfo_Sequence Number, Sequence Number security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
ProviderName principal.resource.attribute.labels Labels oder Attribute, die mit der Hauptressource verknüpft sind
NewEngineState additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
PreviousEngineState additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
ScriptName additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
ManagementGroupName additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
Quelle additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
RenderedDescription security_result.description Beschreibung des Sicherheitsergebnisses oder der ergriffenen Maßnahme
TenantId additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
Nutzername principal.user.userid Nutzer-ID des Hauptnutzers
ActivityID security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
ExecutionThreadID, execution.thread_id, winlog.process.thread.id security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
Ausgabe security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
Daten security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
Data_1 additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
data_1 security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
Data_2 security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
winlog.activity_id security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
winlog.api additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
winlog.channel principal.resource.attribute.labels Labels oder Attribute, die mit der Hauptressource verknüpft sind
Offset additional.fields Zusätzliche benutzerdefinierte Felder, die nicht vom Standard-UDM-Schema abgedeckt werden
SeverityValue security_result.detection_fields Schlüssel/Wert-Paare mit zusätzlichen Informationen zur Erkennung
Vermittler Vermittler Details zu Vermittlerunternehmen, die an dem Ereignis beteiligt sind
security_result security_result Allgemeines Sicherheitsergebnis mit Aktionen, Schweregraden und Erkennungen
metadata.vendor_name Name des Anbieters, der das Ereignis erstellt hat
SourceName metadata.product_name Name des Produkts, das das Ereignis ausgelöst hat

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