Comment Activer et Exporter les Journaux de Bloc de Scripts PowerShell

Comment Activer et Exporter les Journaux de Bloc de Scripts PowerShell

SOC Prime Team
SOC Prime Team linkedin icon Suivre

Les journaux de blocs de scripts PowerShell se trouvent dans Applications and Services Logs → Microsoft → Windows → PowerShell → Operational, comme événement 4104. Ils ne sont complets que si l’enregistrement des blocs de scripts est activé. Pour les exporter :

wevtutil epl "Microsoft-Windows-PowerShell/Operational" C:logspowershell.evtx

PowerShell 7 est un produit distinct avec un canal distinct, PowerShellCore/Operational, et son propre paramètre de politique.

Si un attaquant a accédé à une machine Windows, il y a de fortes chances que PowerShell soit impliqué. L’enregistrement des blocs de scripts enregistre le code réellement exécuté, souvent après que les couches d’obfuscation ont été retirées. Prime Core dispose de 663 règles de détection pour les journaux PowerShell, mappées à 417 techniques MITRE ATT&CK. Elles couvrent l’utilisation malveillante de PowerShell (T1059.001), l’obfuscation (T1027) et les cradles de téléchargement qui importent des outils (T1105).

Commencez gratuitement

Avant de commencer

L’enregistrement des blocs de scripts est-il activé ?

reg query "HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging"

EnableScriptBlockLogging réglé sur 0x1 signifie oui. Si la clé n’existe pas, il est désactivé. Même dans ce cas, Windows PowerShell 5.1 enregistre toujours les blocs de scripts qu’il considère comme suspects, sous forme d’événements 4104 au niveau d’avertissement. Donc, vous pouvez trouver certains événements. Ne les prenez simplement pas pour l’ensemble complet.

L’activer aide à partir de maintenant, pas pour ce qui s’est déjà passé. Utilisez le paramètre de stratégie de groupe Modèles d’administration → Composants Windows → Windows PowerShell → Activer l’enregistrement des blocs de scripts PowerShell, ou définissez directement la valeur du registre :

reg add "HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f

PowerShell 7 lit sa propre clé de politique sous HKLMSOFTWAREPoliciesMicrosoftPowerShellCore. S’il a été installé à partir d’un zip plutôt qu’un MSI, son canal d’événements peut ne pas être enregistré jusqu’à ce que vous exécutiez RegisterManifest.ps1 depuis $PSHOME.

Attendez-vous à du volume. Chaque script et module qui s’exécute se retrouve dans le journal. Augmentez la taille maximale du canal, ou vous ne conserverez que quelques heures.

Attendez-vous à des secrets. Les scripts administratifs contiennent parfois des mots de passe et des clés API en texte clair, et l’enregistrement des blocs de scripts les enregistre fidèlement. Gardez cela à l’esprit avant que ce fichier n’aille quelque part, et lisez la section LogTotal ci-dessous.

Exporter les journaux

Dans l’Observateur d’événements, cliquez avec le bouton droit Opérationnel sous PowerShell et choisissez Enregistrer tous les événements sous… Depuis la ligne de commande :

:: uniquement les blocs de script

wevtutil epl "Microsoft-Windows-PowerShell/Operational" C:logsps_4104.evtx /q:"*[System[(EventID=4104)]]"




:: PowerShell 7

wevtutil epl "PowerShellCore/Operational" C:logspwsh.evtx




:: le journal classique "Windows PowerShell" : événements de démarrage du moteur avec la ligne de commande hôte

wevtutil epl "Windows PowerShell" C:logswindows_powershell.evtx

Ce dernier est facile à oublier, et ça vaut la peine de le récupérer. L’événement 400 enregistre chaque démarrage du moteur, y compris la version du moteur. Une EngineVersion de 2.0 sur un système moderne signifie généralement que quelqu’un a délibérément rétrogradé pour éviter l’enregistrement des blocs de scripts.

Téléchargez et passez en revue dans LogTotal

LogTotal lit les EVTX nativement. Une chose à savoir d’abord : LogTotal ne nettoie pas encore les fichiers EVTX. Avec les journaux PowerShell, cela compte plus que d’habitude, en raison des secrets mentionnés ci-dessus. Utilisez les téléchargements EVTX librement pour les machines de test. Pour les hôtes de production, obtenez un oui de celui qui gère les données d’abord.

  1. Télécharger. Ouvrir logtotal.com et déposez le fichier.
  2. Vérifiez.

Quand ça tourne mal

SymptômeCause probableFix
Aucun événement 4104 du toutL’enregistrement des blocs de script est désactivé, et rien ne semblait suspectActivez-le pour l’avenir ; vérifiez le journal Windows PowerShell pour voir ce que vous pouvez encore récupérer
Seulement une poignée d’événements 4104, tous en AvertissementL’enregistrement est désactivé ; vous voyez l’enregistrement automatique des blocs suspectsMême que ci-dessus
PowerShellCore/Operational introuvablePowerShell 7 n’est pas installé, ou son manifeste n’est pas enregistréExécutez RegisterManifest.ps1 depuis $PSHOME
Texte 4104 illisible en texte chiffréL’enregistrement des événements protégés est activéVous avez besoin du certificat de déchiffrement
Le journal ne couvre que quelques heuresTaille par défaut, volume élevéAugmentez la taille maximale du canal

FAQ

L’enregistrement des blocs de scripts capture-t-il le code obfusqué ?

Largement oui. Il enregistre les blocs de script au fur et à mesure qu’ils sont compilés. Lorsque le code obfusqué construit et exécute l’étape suivante, cette étape est enregistrée comme son propre bloc, souvent sous une forme lisible.

Quelle est la différence avec la transcription ?

La transcription écrit des fichiers texte de l’entrée et de la sortie de session dans un dossier. L’enregistrement des blocs de scripts enregistre le code lui-même dans le journal des événements. Ils se complètent mutuellement, et les deux valent la peine d’être pris.

Rejoignez la plateforme Detection as Code de SOC Prime pour améliorer la visibilité sur les menaces les plus pertinentes pour votre entreprise. Pour vous aider à démarrer et à générer une valeur immédiate, planifiez dès maintenant une réunion avec des experts de SOC Prime.