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.
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 PowerShellet 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.