Share via


about_Logging_Windows

Kurze Beschreibung

PowerShell protokolliert interne Vorgänge der Engine, anbieter und Cmdlets im Windows-Ereignisprotokoll.

Lange Beschreibung

PowerShell protokolliert Details zu PowerShell-Vorgängen, z. B. das Starten und Beenden der Engine und anbieter sowie das Ausführen von PowerShell-Befehlen.

Hinweis

Windows PowerShell Versionen 3.0, 4.0, 5.0 und 5.1 enthalten EventLog-Cmdlets für die Windows-Ereignisprotokolle. In diesen Versionen, um die Liste der EventLog-Cmdlets anzuzeigen, typ: Get-Command -Noun EventLog. Weitere Informationen finden Sie in der Cmdletdokumentation und about_EventLogs für Ihre Version von Windows PowerShell.

Anzeigen der PowerShell-Ereignisprotokolleinträge unter Windows

PowerShell-Protokolle können mithilfe der Windows-Ereignisanzeige angezeigt werden. Das Ereignisprotokoll befindet sich in der Gruppe Anwendungs- und Dienstprotokolle und hat den Namen PowerShellCore. Der zugeordnete ETW-Anbieter GUID ist {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

Wenn die Skriptblockprotokollierung aktiviert ist, protokolliert PowerShell die folgenden Ereignisse im PowerShellCore/Operational Protokoll:

Feld Wert
EventId 4104 / 0x1008
Kanal Operational
Ebene Verbose
Opcode Create
Aufgabe CommandStart
Stichwort Runspace

Registrieren des PowerShell-Ereignisanbieters unter Windows

Im Gegensatz zu Linux oder macOS erfordert Windows die Registrierung des Ereignisanbieters, bevor Ereignisse in das Ereignisprotokoll geschrieben werden können. Führen Sie den folgenden Befehl an einer PowerShell-Eingabeaufforderung mit erhöhten Rechten aus, um den PowerShell-Ereignisanbieter zu aktivieren.

$PSHOME\RegisterManifest.ps1

Aufheben der Registrierung des PowerShell-Ereignisanbieters unter Windows

Durch die Registrierung des Ereignisanbieters wird eine Sperre in der binären Bibliothek platziert, die zum Decodieren von Ereignissen verwendet wird. Um diese Bibliothek zu aktualisieren, muss die Registrierung des Anbieters aufgehoben werden, um diese Sperre freizugeben.

Führen Sie den folgenden Befehl an einer PowerShell-Eingabeaufforderung mit erhöhten Rechten aus, um die Registrierung des PowerShell-Anbieters aufzuheben.

$PSHOME\RegisterManifest.ps1 -Unregister

Führen Sie nach dem Aktualisieren von PowerShell aus $PSHOME\RegisterManifest.ps1 , um den aktualisierten Ereignisanbieter zu registrieren.

Aktivieren der Skriptblockprotokollierung

Wenn Sie die Skriptblockprotokollierung aktivieren, zeichnet PowerShell den Inhalt aller Skriptblöcke auf, die verarbeitet werden. Nach der Aktivierung protokolliert jede neue PowerShell-Sitzung diese Informationen.

Hinweis

Es wird empfohlen, die geschützte Ereignisprotokollierung wie unten beschrieben zu aktivieren, wenn Sie die Skriptblockprotokollierung für andere Zwecke als Diagnose verwenden.

Die Skriptblockprotokollierung kann über Gruppenrichtlinie oder eine Registrierungseinstellung aktiviert werden.

Verwenden von Gruppenrichtlinien

Um die automatische Transkription zu aktivieren, aktivieren Sie das Turn on PowerShell Script Block Logging Feature in Gruppenrichtlinie bis Administrative Templates -> Windows Components -> Windows PowerShell.

Mithilfe der Registrierung

Führen Sie die folgende Funktion aus:

function Enable-PSScriptBlockLogging
{
    $basePath = 'HKLM:\Software\Policies\Microsoft\Windows' +
      '\PowerShell\ScriptBlockLogging'

    if(-not (Test-Path $basePath))
    {
        $null = New-Item $basePath -Force
    }

    Set-ItemProperty $basePath -Name EnableScriptBlockLogging -Value "1"
}

Geschützte Ereignisprotokollierung

Das Erhöhen der Protokollierungsebene auf einem System erhöht die Wahrscheinlichkeit, dass protokollierte Inhalte vertrauliche Daten enthalten können. Wenn beispielsweise die Skriptprotokollierung aktiviert ist, können Anmeldeinformationen oder andere vertrauliche Daten, die von einem Skript verwendet werden, in das Ereignisprotokoll geschrieben werden. Wenn ein Computer, auf dem vertrauliche Daten protokolliert wurden, kompromittiert wird, können die Protokolle einem Angreifer Informationen bereitstellen, die zum Erweitern seiner Reichweite erforderlich sind.

Um diese Informationen zu schützen, führt Windows 10 die geschützte Ereignisprotokollierung ein. Mit der geschützten Ereignisprotokollierung können teilnehmende Anwendungen vertrauliche Daten verschlüsseln, die in das Ereignisprotokoll geschrieben werden. Später können Sie diese Protokolle in einem sichereren und zentralisierten Protokollsammler entschlüsseln und verarbeiten.

Der Inhalt des Ereignisprotokolls wird mit dem CMS-Standard (IETF Cryptographic Message Syntax) geschützt. CMS verwendet Kryptografie mit öffentlichem Schlüssel. Die Schlüssel, die zum Verschlüsseln von Inhalten und zum Entschlüsseln von Inhalten verwendet werden, werden getrennt gehalten.

Der öffentliche Schlüssel kann weit verbreitet werden und ist keine vertraulichen Daten. Mit diesem öffentlichen Schlüssel verschlüsselte Inhalte können nur vom privaten Schlüssel entschlüsselt werden. Weitere Informationen zur Kryptografie mit öffentlichem Schlüssel finden Sie unter Wikipedia – Kryptografie mit öffentlichem Schlüssel.

Um eine Richtlinie für die geschützte Ereignisprotokollierung zu aktivieren, stellen Sie einen öffentlichen Schlüssel für alle Computer bereit, auf denen Ereignisprotokolldaten geschützt werden sollen. Der entsprechende private Schlüssel wird verwendet, um die Ereignisprotokolle an einem sichereren Ort wie einem zentralen Ereignisprotokollsammler oder SIEM-Aggregator nachzuverarbeiten. Sie können SIEM in Azure einrichten. Weitere Informationen finden Sie unter Generische SIEM-Integration.

Aktivieren der geschützten Ereignisprotokollierung über Gruppenrichtlinie

Um die geschützte Ereignisprotokollierung zu aktivieren, aktivieren Sie das Enable Protected Event Logging Feature in Gruppenrichtlinie bis Administrative Templates -> Windows Components -> Event Logging. Diese Einstellung erfordert ein Verschlüsselungszertifikat, das Sie in einer von mehreren Formen bereitstellen können:

  • Der Inhalt eines Base64-codierten X.509-Zertifikats (z. B. wie von der Export Option im Zertifikat-Manager angeboten).
  • Der Fingerabdruck eines Zertifikats, das sich im Zertifikatspeicher des lokalen Computers befindet (kann von der PKI-Infrastruktur bereitgestellt werden).
  • Der vollständige Pfad zu einem Zertifikat (kann lokal oder eine Remotefreigabe sein).
  • Der Pfad zu einem Verzeichnis, das ein Zertifikat oder Zertifikate enthält (kann lokal oder eine Remotefreigabe sein).
  • Der Antragstellername eines Zertifikats, das sich im Zertifikatspeicher des lokalen Computers befindet (kann von der PKI-Infrastruktur bereitgestellt werden).

Für das resultierende Zertifikat muss Document Encryption eine erweiterte Schlüsselverwendung (1.3.6.1.4.1.311.80.1) und die Data Encipherment Schlüsselverwendung oder Key Encipherment aktiviert sein.

Warnung

Der private Schlüssel sollte nicht auf den Computern bereitgestellt werden, die Ereignisse protokollieren. Es sollte an einem sicheren Ort aufbewahrt werden, an dem Sie die Nachrichten entschlüsseln.

Entschlüsseln geschützter Ereignisprotokollierungsmeldungen

Das folgende Skript wird abgerufen und entschlüsselt, sofern Sie über den privaten Schlüssel verfügen:

Get-WinEvent Microsoft-Windows-PowerShell/Operational |
  Where-Object Id -eq 4104 | Unprotect-CmsMessage

Weitere Informationen