Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

PowerShell Script Block Logging

forensics

Définition

PowerShell Script Block Logging est une fonctionnalité de journalisation de PowerShell qui enregistre le contenu de chaque bloc de script exécuté dans l'Event Log Windows, même si ce contenu a été obfusqué ou encodé. C'est l'une des sources forensiques les plus précieuses pour détecter et investiguer les attaques utilisant PowerShell, qui est devenu l'outil de post-exploitation et de mouvement latéral de prédilection de nombreux acteurs malveillants. PowerShell offre plusieurs niveaux de journalisation configurables via la stratégie de groupe (GPO). Module Logging (activé via GPO ou registre : HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging) enregistre les commandes exécutées par chaque module PowerShell. Script Block Logging (HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging) enregistre le code de chaque bloc de script, avec la particularité cruciale que PowerShell désobfusque le code avant de l'exécuter et enregistre la version désobfusquée — rendant inefficaces les techniques d'obfuscation comme l'encodage Base64 ou la concaténation de chaînes. Les Event IDs PowerShell forensiquement pertinents se trouvent dans les journaux 'Microsoft-Windows-PowerShell/Operational' (source moderne, ID 4103 pour le logging de modules, ID 4104 pour le script block logging) et 'Windows PowerShell' (source classique, ID 400, 403, 800). L'Event ID 4104 est le plus riche : il contient le code PowerShell complet executé, avec le numéro de bloc et le contexte d'appel. Sysmon (Event ID 1 : Process Create) complète le Script Block Logging en capturant la ligne de commande PowerShell avec ses arguments (incluant les payloads encodés en Base64). La combinaison des Event IDs 4104 (contenu déobfusqué) et Sysmon 1 (ligne de commande originale) fournit une image complète de chaque exécution PowerShell suspecte. Le Constrained Language Mode (CLM) de PowerShell restreint les capacités du langage pour limiter les attaques via PowerShell, mais les techniques d'évasion (downgrade vers PowerShell 2.0 qui ne supporte pas le Script Block Logging, injection dans des processus approuvés) restent utilisées par des attaquants sophistiqués.

Fonctionnement

Script Block Logging est implémenté dans le moteur PowerShell lui-même. Avant d'exécuter un bloc de script, PowerShell parse et désobfusque le code (résolution des concaténations, décodage Base64, expansion des alias), puis enregistre le code résultant dans l'Event Log via ETW (Event Tracing for Windows). Ce mécanisme est difficile à contourner sans modifier le moteur PowerShell lui-même.

Application DFIR

Analyse PowerShell forensique : 1) Exporter les Event Logs Microsoft-Windows-PowerShell/Operational, 2) Filtrer EventID 4104 (Script Block Logging), 3) Chercher les patterns suspects : IEX (Invoke-Expression), DownloadString/DownloadFile, encoded commands (-enc), WebClient, Invoke-Mimikatz, Add-Type, Reflection.Assembly, 4) Utiliser DeepBlueCLI.ps1 pour l'analyse automatisée, 5) Corréler avec Sysmon EventID 1 pour le contexte d'exécution. Analyser les 4104 avec EventID WARNING pour les scripts obfusqués détectés.

Outils

DeepBlueCLI (PowerShell, détection automatique d'attaques PowerShell dans les logs), EvtxECmd (Eric Zimmerman, parsing EVTX → CSV), Get-WinEvent (PowerShell natif), Chainsaw (Rust, analyse EVTX rapide). Activation Script Block Logging : GPO Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell > Turn on PowerShell Script Block Logging. Log de transcript : Start-Transcript / $Env:TEMP\PowerShell_transcript.*.txt.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis