À propos des fenêtres de journalisationAbout Logging Windows

Description courteShort description

PowerShell journalise les opérations internes du moteur, des fournisseurs et des applets de commande dans le journal des événements Windows.PowerShell logs internal operations from the engine, providers, and cmdlets to the Windows event log.

Description longueLong description

PowerShell journalise des détails sur les opérations PowerShell, telles que le démarrage et l’arrêt du moteur et des fournisseurs, et l’exécution de commandes PowerShell.PowerShell logs details about PowerShell operations, such as starting and stopping the engine and providers, and executing PowerShell commands.

Notes

Les versions 3,0, 4,0, 5,0 et 5,1 de Windows PowerShell incluent des applets de commande EventLog pour les journaux des événements Windows.Windows PowerShell versions 3.0, 4.0, 5.0, and 5.1 include EventLog cmdlets for the Windows event logs. Dans ces versions, pour afficher la liste des applets de commande EventLog , tapez : Get-Command -Noun EventLog .In those versions, to display the list of EventLog cmdlets type: Get-Command -Noun EventLog. Pour plus d’informations, consultez la documentation sur les applets de commande et about_EventLogs pour votre version de Windows PowerShell.For more information, see the cmdlet documentation and about_EventLogs for your version of Windows PowerShell.

Affichage des entrées du journal des événements PowerShell sur WindowsViewing the PowerShell event log entries on Windows

Les journaux PowerShell peuvent être affichés à l’aide de Windows observateur d’événements.PowerShell logs can be viewed using the Windows Event Viewer. Le journal des événements se trouve dans le groupe journaux des applications et des services et est nommé PowerShellCore .The event log is located in the Application and Services Logs group and is named PowerShellCore. Le fournisseur ETW associé GUID est {f90714a8-5509-434a-bf6d-b1624c8a19a2} .The associated ETW provider GUID is {f90714a8-5509-434a-bf6d-b1624c8a19a2}.

Lorsque la journalisation de blocs de script est activée, PowerShell enregistre les événements suivants dans le PowerShellCore/Operational Journal :When Script Block Logging is enabled, PowerShell logs the following events to the PowerShellCore/Operational log:

ChampField ValeurValue
EventIdEventId 4104 / 0x1008
ChannelChannel Operational
LevelLevel Verbose
OpcodeOpcode Create
TâcheTask CommandStart
Mot cléKeyword Runspace

Inscription du fournisseur d’événements PowerShell sur WindowsRegistering the PowerShell event provider on Windows

Contrairement à Linux ou macOS, Windows requiert l’inscription du fournisseur d’événements pour que les événements puissent être écrits dans le journal des événements.Unlike Linux or macOS, Windows requires the event provider to be registered before events can be written to the event log. Pour activer le fournisseur d’événements PowerShell, exécutez la commande suivante à partir d’une invite PowerShell avec élévation de privilèges.To enable the PowerShell event provider, run the following command from an elevated PowerShell prompt.

$PSHOME\RegisterManifest.ps1

Annulation de l’inscription du fournisseur d’événements PowerShell sur WindowsUnregistering the PowerShell event provider on Windows

L’inscription du fournisseur d’événements place un verrou dans la bibliothèque binaire utilisée pour décoder les événements.Registering the event provider places a lock in the binary library used to decode events. Pour mettre à jour cette bibliothèque, le fournisseur doit être désinscrit pour libérer ce verrou.To update this library, the provider must be unregistered to release this lock.

Pour annuler l’inscription du fournisseur PowerShell, exécutez la commande suivante à partir d’une invite PowerShell avec élévation de privilèges.To unregister the PowerShell provider, run the following command from an elevated PowerShell prompt.

$PSHOME\RegisterManifest.ps1 -Unregister

Après la mise à jour de PowerShell, exécutez $PSHOME\RegisterManifest.ps1 pour inscrire le fournisseur d’événements mis à jour.After updating PowerShell, run $PSHOME\RegisterManifest.ps1 to register the updated event provider.

Activation de la journalisation des blocs de scriptEnabling Script Block Logging

Lorsque vous activez la journalisation de blocs de script, PowerShell enregistre le contenu de tous les blocs de script qu’il traite.When you enable Script Block Logging, PowerShell records the content of all script blocks that it processes. Une fois activé, toute nouvelle session PowerShell consigne ces informations.Once enabled, any new PowerShell session logs this information.

Notes

Il est recommandé d’activer la journalisation des événements protégés, comme décrit ci-dessous, lors de l’utilisation de la journalisation par bloc de script pour tout autre chose que des Diagnostics.It's recommended to enable Protected Event Logging, as described below, when using Script Block Logging for anything other than diagnostics purposes.

La journalisation des blocs de script peut être activée via stratégie de groupe ou un paramètre du Registre.Script Block Logging can be enabled via Group Policy or a registry setting.

Utilisation de la stratégie de groupeUsing Group Policy

Pour activer la transcription automatique, activez la Turn on PowerShell Script Block Logging fonctionnalité dans stratégie de groupe via Administrative Templates -> Windows Components -> Windows PowerShell .To enable automatic transcription, enable the Turn on PowerShell Script Block Logging feature in Group Policy through Administrative Templates -> Windows Components -> Windows PowerShell.

Utilisation du RegistreUsing the Registry

Exécutez la fonction suivante :Run the following function:

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"
}

Journalisation des événements protégésProtected Event Logging

L’augmentation du niveau de journalisation sur un système augmente la possibilité que du contenu journalisé puisse contenir des données sensibles.Increasing the level of logging on a system increases the possibility that logged content may contain sensitive data. Par exemple, avec la journalisation des scripts activée, les informations d’identification ou d’autres données sensibles utilisées par un script peuvent être écrites dans le journal des événements.For example, with script logging enabled, credentials or other sensitive data used by a script can be written to the event log. Lorsqu’un ordinateur qui a des données sensibles journalisées est compromis, les journaux peuvent fournir une personne malveillante avec les informations nécessaires pour étendre leur portée.When a machine that has logged sensitive data is compromised, the logs can provide an attacker with information needed to extend their reach.

Pour protéger ces informations, Windows 10 introduit la journalisation des événements protégés.To protect this information, Windows 10 introduces Protected Event Logging. L’enregistrement des événements protégés permet aux applications participantes de chiffrer des données sensibles écrites dans le journal des événements.Protected Event Logging lets participating applications encrypt sensitive data written to the event log. Plus tard, vous pourrez déchiffrer et traiter ces journaux sur un collecteur de journaux plus sécurisé et centralisé.Later, you can decrypt and process these logs on a more secure and centralized log collector.

Le contenu du journal des événements est protégé à l’aide de la norme CMS (Cryptographic Message Syntax) de l’IETF.Event log content is protected using the IETF Cryptographic Message Syntax (CMS) standard. CMS utilise le chiffrement à clé publique.CMS uses public key cryptography. Les clés utilisées pour chiffrer le contenu et déchiffrer le contenu sont conservées séparément.The keys used to encrypt content and decrypt content are kept separate.

La clé publique peut être partagée à grande échelle et ne constitue pas des données sensibles.The public key can be shared widely and isn't sensitive data. Tout contenu chiffré avec cette clé publique peut uniquement être déchiffré par la clé privée.Any content encrypted with this public key can only be decrypted by the private key. Pour plus d’informations sur le chiffrement à clé publique, consultez wikipedia-Public Key Cryptography.For more information about Public Key Cryptography, see Wikipedia - Public Key Cryptography.

Pour activer une stratégie d’enregistrement des événements protégée, déployez une clé publique sur tous les ordinateurs qui ont des données du journal des événements à protéger.To enable a Protected Event Logging policy, deploy a public key to all machines that have event log data to protect. La clé privée correspondante est utilisée pour effectuer un traitement ultérieur des journaux des événements dans un emplacement plus sécurisé, tel qu’un collecteur de journaux des événements centraux ou un agrégateur Siem .The corresponding private key is used to post-process the event logs at a more secure location such as a central event log collector, or SIEM aggregator. Vous pouvez configurer SIEM dans Azure.You can set up SIEM in Azure. Pour plus d’informations, consultez intégration Siem générique.For more information, see Generic SIEM integration.

Activation de la journalisation des événements protégés via stratégie de groupeEnabling Protected Event Logging via Group Policy

Pour activer la journalisation des événements protégés, activez la Enable Protected Event Logging fonctionnalité dans stratégie de groupe via Administrative Templates -> Windows Components -> Event Logging .To enable Protected Event Logging, enable the Enable Protected Event Logging feature in Group Policy through Administrative Templates -> Windows Components -> Event Logging. Ce paramètre requiert un certificat de chiffrement, que vous pouvez fournir de l’une des formes suivantes :This setting requires an encryption certificate, which you can provide in one of several forms:

  • Contenu d’un certificat X. 509 encodé en base 64 (par exemple, tel qu’il est fourni par l' Export option dans le gestionnaire de certificats).The content of a base-64 encoded X.509 certificate (for example, as offered by the Export option in Certificate Manager).
  • Empreinte numérique d’un certificat qui se trouve dans le magasin de certificats de l’ordinateur local (peut être déployé par l’infrastructure PKI).The thumbprint of a certificate that can be found in the Local Machine certificate store (can be deployed by PKI infrastructure).
  • Le chemin d’accès complet à un certificat (peut être local ou un partage distant).The full path to a certificate (can be local, or a remote share).
  • Chemin d’accès à un répertoire contenant un ou des certificats (peut être local ou un partage distant).The path to a directory containing a certificate or certificates (can be local, or a remote share).
  • Nom du sujet d’un certificat qui se trouve dans le magasin de certificats de l’ordinateur local (peut être déployé par l’infrastructure PKI).The subject name of a certificate that can be found in the Local Machine certificate store (can be deployed by PKI infrastructure).

Le certificat obtenu doit avoir Document Encryption une utilisation améliorée de la clé ( 1.3.6.1.4.1.311.80.1 ), et Data Encipherment les Key Encipherment utilisations de clés ou sont activées.The resulting certificate must have Document Encryption as an enhanced key usage (1.3.6.1.4.1.311.80.1), and either Data Encipherment or Key Encipherment key usages enabled.

Avertissement

La clé privée ne doit pas être déployée sur les événements de journalisation des machines.The private key shouldn't be deployed to the machines logging events. Elle doit être conservée dans un emplacement sécurisé où vous déchiffrez les messages.It should be kept in a secure location where you decrypt the messages.

Déchiffrement des messages d’enregistrement des événements protégésDecrypting Protected Event Logging messages

Le script suivant récupère et déchiffre, en supposant que vous disposiez de la clé privée :The following script will retrieve and decrypt, assuming that you have the private key:

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

Voir aussiSee also

about_Logging_Non-Windowsabout_Logging_Non-Windows

PowerShell l’équipe Blue TeamPowerShell the Blue Team

Intégration de SIEM génériqueGeneric SIEM integration