PowerShell History Forensics
forensicsDéfinition
L'historique PowerShell est une source forensique de plus en plus précieuse à mesure que PowerShell s'impose comme l'outil offensif favori des attaquants (Living Off the Land). Windows conserve l'historique des commandes PowerShell à plusieurs emplacements, chacun offrant une persistance et un niveau de détail différents. Le fichier ConsoleHost_history.txt est le fichier d'historique principal de PowerShell 5.0+. Stocké dans %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt pour chaque utilisateur, il enregistre les commandes interactives saisies dans la console PowerShell. Par défaut, les 4096 dernières commandes sont conservées. Cet historique persiste entre les sessions et n'est pas effacé à l'extinction du système, ce qui le rend précieux forensiquement. Cependant, les attaquants conscients de cette trace désactivent PSReadLine ou effacent manuellement ce fichier. PowerShell Script Block Logging (Event ID 4104 dans le journal Microsoft-Windows-PowerShell/Operational) est une source encore plus riche lorsqu'elle est activée. Elle enregistre le contenu complet de chaque bloc de script exécuté, y compris les scripts obfusqués après déobfuscation partielle par Windows, les commandes IEX (Invoke-Expression), et les download cradles (IEX (New-Object Net.WebClient).DownloadString). Cette journalisation doit être activée via GPO (Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell). Module Logging (Event ID 4103) enregistre les appels de modules et leurs paramètres. Transcription Logging crée des fichiers texte complets de chaque session PowerShell, capturant toutes les sorties. Ces mécanismes de journalisation améliorés ne sont pas activés par défaut et constituent une lacune de sécurité majeure sur les systèmes non durcis. Les Event IDs PowerShell essentiels pour une investigation incluent : 4100 (erreurs), 4103 (exécution de module), 4104 (exécution de script block, inclut la déobfuscation), 400/800 (démarrage/arrêt du moteur PowerShell). L'Event ID 4104 avec le niveau de sévérité "Warning" indique spécifiquement du code potentiellement suspect (commandes obfusquées, download cradles). WMI Subscriptions, PowerShell Remoting (WinRM) et les tâches planifiées PowerShell laissent des traces dans d'autres journaux qui complètent l'analyse forensique de l'activité PowerShell.
Fonctionnement
PSReadLine sauvegarde les commandes dans ConsoleHost_history.txt après chaque session. Le Script Block Logging intercepte les blocs avant exécution pour journalisation. La journalisation est hiérarchique : Module Logging > Script Block Logging > Transcription. Script Block Logging déobfusque partiellement le code, rendant les download cradles lisibles.
Application DFIR
Lors d'une investigation post-incident PowerShell, examiner dans l'ordre : ConsoleHost_history.txt, Event ID 4104 (script blocks), EventID 400 (démarrage moteur). Les attaques fileless via PowerShell (Empire, Cobalt Strike PowerShell payload) laissent des traces dans ces journaux même si aucun fichier n'a été déposé sur le disque.
Outils
Analyse des logs : DeepBlueCLI (SANS), Event Log Explorer, EvtxECmd (Eric Zimmerman). Script Block Logs : Get-WinEvent PowerShell, Elastic/Splunk requêtes dédiées. Activation via GPO : LGPO.exe, PowerShell DSC. Corrélation avec Sysmon (Event ID 1 pour les processus PowerShell).
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h