Glossaire
Journal classique Windows PowerShell
Le journal historique Windows PowerShell.evtx contenant le cycle de vie du moteur et des fournisseurs (400/403/600) et l'exécution du pipeline (800).
Le journal Windows PowerShell (Windows PowerShell.evtx dans System32\winevt\Logs) est le journal d'événements d'origine de PowerShell. Il est antérieur aux canaux modernes propres à chaque fournisseur, ce qui explique pourquoi PowerShell a ensuite ajouté Microsoft-Windows-PowerShell/Operational à côté de lui plutôt que de le remplacer. Le journal classique est présent et activé par défaut, et il enregistre quatre ID d'événement :
- 400 : l'état du moteur passe à Available, ce qui signifie qu'un hôte PowerShell a démarré
- 403 : l'état du moteur passe à Stopped, ce qui signifie que l'hôte s'est arrêté
- 600 : cycle de vie des fournisseurs, pour des fournisseurs tels que Registry ou Certificate
- 800 : détails d'exécution du pipeline
Pourquoi c'est important en investigation
Comme il ne nécessite aucune stratégie, le journal classique constitue fréquemment la seule preuve PowerShell sur les hôtes dépourvus de journalisation des blocs de script. Les événements 400 et 403 encadrent la durée de vie de chaque hôte PowerShell, et leur bloc de détails contient HostApplication : la ligne de commande complète qui l'a lancé. C'est là qu'apparaissent un -EncodedCommand, un -WindowStyle Hidden ou une rétrogradation -Version 2. EngineVersion confirme quel moteur s'est réellement exécuté, et l'événement 800 enregistre la ligne de commande de chaque pipeline, souvent la meilleure trace de ce qui s'est exécuté en l'absence de 4104.
Exemple
Le bloc de détails d'un événement 400 est une liste de lignes Key=Value :
NewEngineState=Available
PreviousEngineState=None
HostName=ConsoleHost
HostVersion=5.1.19041.4648
HostApplication=powershell.exe -nop -w hidden -enc VwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAnAHMAeQBuAHQAaABlAHQAaQBjACAAcwBhAG0AcABsAGUAJwA=
EngineVersion=5.1.19041.4648
RunspaceId=...
Le parseur découpe ces lignes en champs triables, décode la commande encodée dans HostApplication et signale la fenêtre masquée. Pour un événement 400 ou 403 dont l'EngineVersion est 2.x, il lève une détection de rétrogradation.
Termes associés
- Événement 4104 et journalisation des modules (4103), dans le journal Operational
- Attaque par rétrogradation PowerShell, visible ici via
EngineVersion - Commande encodée, souvent présente dans
HostApplication
Fusionnez le journal classique avec le journal Operational dans PowerShell Parser, et consultez le guide des journaux d'événements PowerShell pour voir ce que prouve chaque ID d'événement.