Skip to content

Collecter journaux, transcriptions et historique PowerShell

Acquérir journaux PowerShell, historique PSReadLine et transcriptions sur un hôte actif, une collecte de triage ou une image disque : commandes 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 .evtx PowerShell, historique PSReadLine et transcriptions dans une visionneuse web gratuite, reconstituer, décoder et exporter en CSV/JSON.
Structure des transcriptions PowerShell, contenu de l'en-tête, horodatage des commandes avec -IncludeInvocationHeader, et comment les investiguer.
Ce qu'enregistre l'historique PSReadLine, où il se trouve, pourquoi il n'a pas d'horodatage, et comment l'utiliser — et ses limites — en investigation.