Skip to content

Collecter les journaux, transcriptions et historiques PowerShell

Acquérir les journaux d'événements PowerShell, l'historique PSReadLine et les transcriptions depuis un hôte actif, une collecte de triage ou une image disque — commandes prêtes à copier et pièges.

Publié le 2 min de lecture

En bref. Sur un hôte actif, exportez les deux journaux d'événements PowerShell avec wevtutil epl (une simple copie échoue — le service les garde ouverts) et copiez avec robocopy les *_history.txt et PowerShell_transcript.*.txt de chaque utilisateur. Ou récupérez-les avec KAPE / Velociraptor, ou depuis une image montée. Conservez le chemin Users\<name>\ pour attribuer historiques et transcriptions. Puis analysez-les dans votre navigateur. La zone de dépôt propose les mêmes commandes avec des boutons de copie.

Hôte actif (le plus rapide)

Exécutez Windows PowerShell en administrateur :

New-Item -ItemType Directory -Force C:\triage\logs | Out-Null
wevtutil epl Microsoft-Windows-PowerShell/Operational "C:\triage\logs\Microsoft-Windows-PowerShell%4Operational.evtx" /ow:true
wevtutil epl "Windows PowerShell" "C:\triage\logs\Windows PowerShell.evtx" /ow:true
wevtutil epl PowerShellCore/Operational "C:\triage\logs\PowerShellCore%4Operational.evtx" /ow:true 2>$null
robocopy C:\Users C:\triage\Users *_history.txt PowerShell_transcript.*.txt /S /XJ /R:0 /W:0 /NP /NDL

La troisième ligne collecte le journal de PowerShell 7 s'il existe (sans effet dans le cas contraire). Empaquetez ensuite le tout en une archive avec le tar.exe intégré à Windows 10 1803+ :

tar -a -c -f C:\triage\powershell.zip -C C:\triage logs Users

Outils de triage

KAPE — la cible EventLogs copie chaque .evtx (dont les journaux PowerShell) depuis le disque brut ; PowerShellConsole et PowerShellTranscripts collectent l'historique et les transcriptions :

kape.exe --tsource C: --tdest C:\triage\kape --target EventLogs,PowerShellConsole,PowerShellTranscripts

Velociraptor — les versions récentes construisent un collecteur hors ligne à partir de Windows.Triage.Targets dans l'interface, avec les mêmes cibles EventLogs, PowerShellConsole et PowerShellTranscripts. Les versions plus anciennes qui embarquent encore Windows.KapeFiles.Targets peuvent exécuter :

velociraptor.exe artifacts collect Windows.KapeFiles.Targets --args Device=C: --args EventLogs=Y --args PowerShellConsole=Y --args PowerShellTranscripts=Y --output C:\triage\powershell.zip

Les deux noms de cibles sont vérifiés dans le collecteur de triage Velociraptor. Déposez le ZIP de collecte tel quel — les journaux non-PowerShell sont ignorés au chargement.

Image disque

Montez en lecture seule et copiez depuis winevt\Logs et le profil de chaque utilisateur. Sous Linux/macOS avec l'image montée sur /mnt/win :

mkdir -p ~/triage/logs && cp "/mnt/win/Windows/System32/winevt/Logs/Microsoft-Windows-PowerShell%4Operational.evtx" "/mnt/win/Windows/System32/winevt/Logs/Windows PowerShell.evtx" ~/triage/logs/ 2>/dev/null
(cd /mnt/win && find Users \( -iname '*_history.txt' -o -iname 'PowerShell_transcript.*.txt' \) -exec cp --parents {} ~/triage/ \;)

Vérifiez aussi les clichés instantanés de volume de l'image : un instantané plus ancien peut contenir des journaux depuis écrasés par rotation et des historiques ensuite effacés.

Pièges

  • La journalisation des blocs de script (4104) est désactivée par défaut jusqu'à activation par stratégie ; même alors, Windows journalise les blocs suspects au niveau Avertissement. Le journal classique Windows PowerShell et l'historique PSReadLine sont actifs par défaut.
  • Le service EventLog garde les journaux ouverts ; utilisez wevtutil epl, KAPE ou Velociraptor — pas une simple copie.
  • L'historique PSReadLine n'a aucun horodatage et peut être bien plus ancien que les journaux ; considérez son ordre comme la seule chronologie.
  • Les transcriptions stockent l'heure locale sans fuseau : notez le fuseau horaire de l'hôte avant de corréler avec les journaux d'événements en UTC.

Articles connexes

Pas à pas : ouvrir les journaux .evtx PowerShell, l'historique PSReadLine et les transcriptions dans une visionneuse gratuite en navigateur, reconstituer les blocs de script, décoder les commandes encodées et exporter en CSV ou JSON.
Structure des transcriptions PowerShell, contenu de l'en-tête, fonctionnement des horodatages de commandes avec -IncludeInvocationHeader, et comment les investiguer.
Ce qu'enregistre le fichier d'historique PSReadLine, où il se trouve, pourquoi il n'a pas d'horodatage, et comment l'utiliser — et ses limites — en investigation.