Journaux d'événements PowerShell : chaque ID qui compte
Cartographie des identifiants d'événements PowerShell utiles à l'investigation, entre le journal Operational et le journal classique Windows PowerShell — 4104, 4103, 400, 403, 600, 800 — et ce que prouve chacun.
En bref. Les preuves forensiques PowerShell résident dans deux journaux d'événements. Le journal moderne Microsoft-Windows-PowerShell/Operational contient 4104 (blocs de script) et 4103 (modules). Le journal classique Windows PowerShell contient 400/403 (démarrage/arrêt du moteur), 600 (fournisseur) et 800 (exécution du pipeline). Collectez les deux et lisez-les ensemble. Ouvrez le parseur pour les fusionner en une seule chronologie.
Les deux journaux
PowerShell est antérieur aux canaux d'événements modernes ; il a donc conservé son journal classique « Windows PowerShell » et ajouté plus tard un journal Operational par fournisseur. Une investigation a besoin des deux :
| ID d'événement | Journal | Enregistre |
|---|---|---|
| 4104 | Operational | Journalisation des blocs de script : le code compilé et désobfusqué |
| 4103 | Operational | Journalisation des modules : détails d'exécution du pipeline et paramètres liés |
| 400 | Windows PowerShell | État du moteur → Available (un hôte a démarré) |
| 403 | Windows PowerShell | État du moteur → Stopped (un hôte s'est arrêté) |
| 600 | Windows PowerShell | Cycle de vie des fournisseurs (ex. Registry, Certificate) |
| 800 | Windows PowerShell | Détails d'exécution du pipeline |
Lire les événements classiques
Les événements 400 et 403 marquent la durée de vie d'un hôte PowerShell. Leur bloc de détails porte HostName, HostApplication (la ligne de commande complète, souvent le champ le plus utile — une -EncodedCommand ou un -WindowStyle Hidden y apparaît), EngineVersion et RunspaceId. Un HostApplication qui lance powershell.exe -Version 2 est une tentative de rétrogradation classique pour échapper à la journalisation v5 et à AMSI.
L'événement 800 enregistre la ligne de commande d'un pipeline et, selon la configuration, les détails de liaison des paramètres. Sur les hôtes sans journalisation des blocs de script, c'est souvent le meilleur enregistrement de ce qui a été exécuté. Le PowerShell Parser analyse les blocs de détails Clé=Valeur des 400/600/800 en champs que vous pouvez trier et exporter.
Lesquels sont activés par défaut ?
Le journal classique Windows PowerShell (400/600/800) est activé d'origine. La journalisation des modules (4103) et la journalisation complète des blocs de script (4104) sont régies par la stratégie de groupe sous Modèles d'administration → Composants Windows → Windows PowerShell (Microsoft). L'absence de 4104 ne signifie pas que rien ne s'est produit — vérifiez le 800 et les blocs 4104 de niveau Avertissement que PowerShell journalise de lui-même.
Collecter et analyser
Voir comment collecter les journaux, l'historique et les transcriptions PowerShell, puis les analyser dans votre navigateur sans rien installer.
FAQ
Dans quels journaux PowerShell écrit-il ?
Deux. Microsoft-Windows-PowerShell/Operational contient les événements modernes (4103 journalisation des modules, 4104 journalisation des blocs de script). Le journal classique Windows PowerShell contient le cycle de vie du moteur et des fournisseurs (400/403/600) et l'exécution du pipeline (800).
Quelle est la différence entre 4103 et 4104 ?
Le 4104 (journalisation des blocs de script) enregistre le code compilé ; le 4103 (journalisation des modules) enregistre les détails d'exécution du pipeline — les commandes et les paramètres liés. Ils se complètent.
Est-ce activé par défaut ?
Le journal classique Windows PowerShell (400/600/800) est actif par défaut. La journalisation des modules (4103) et la journalisation complète des blocs de script (4104) nécessitent une stratégie, mais PowerShell journalise tout de même les blocs suspects au niveau Avertissement sans elle.