Turn Off Windows PowerShell 2.0
PowerShell 2.0 does not support logging or AMSI. Attackers use it to bypass PS5 security controls. Disable via Windows Features.
- Chemin de la stratégie
- Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell
- Supporté sur
- Windows 10, Windows 11, Windows Server 2016 and later
PowerShell 2.0 does not support logging or AMSI. Attackers use it to bypass PS5 security controls. Disable via Windows Features. Les référentiels de sécurité recommandent de le définir sur Disable via Windows Features.
Description
Turn Off Windows PowerShell 2.0 est un paramètre de stratégie de groupe Windows situé sous Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell. Il s'applique à la branche Configuration ordinateur et est classé comme une stratégie de niveau Critique dans la catégorie PowerShell.
PowerShell 2.0 does not support logging or AMSI. Attackers use it to bypass PS5 security controls. Disable via Windows Features.
La valeur par défaut Microsoft est Not configured tandis que les référentiels de sécurité (CIS, NIST, DISA STIG) recommandent Disable via Windows Features.
Techniquement, cette stratégie est appliquée via le registre Windows dans HKLM\Software\Policies\Microsoft\Windows\PowerShell via la valeur EnableScripts. Modifier directement la valeur avec regedit.exe ou PowerShell produit le même résultat que la configuration GPO, mais passer par les stratégies de groupe est préférable pour bénéficier d'une gestion centralisée et d'une persistance lors des redémarrages, reconstructions d'images et cycles de rafraîchissement.
Explication détaillée
Ce paramètre est un contrôle de sécurité critique. Une mauvaise configuration ouvre un chemin d'attaque exploité activement par les attaquants, et un seul endpoint oublié peut compromettre la totalité du parc. À traiter comme une exigence de base non négociable, pas comme un réglage optionnel.
Cette stratégie est regroupée dans la catégorie PowerShell, ce qui signifie qu'elle est généralement appliquée via une GPO de domaine liée au niveau d'une OU. Dans un contexte MSP multi-tenant, ciblez-la via des filtres WMI ou des groupes de sécurité plutôt qu'en l'attachant à la racine du domaine, pour pouvoir déployer progressivement (OU pilote → anneaux plus larges → production complète).
Le paramètre prend effet après le prochain rafraîchissement des stratégies de groupe (gpupdate /force pour un test immédiat, ou par défaut sous 90 minutes environ sur un poste et ~5 minutes sur un contrôleur de domaine). Pour une stratégie ordinateur, un redémarrage peut être nécessaire ; pour une stratégie utilisateur, une déconnexion/reconnexion suffit.
Cas d'usage
- Durcir à l'échelle de l'organisation la catégorie powershell sur tous les postes Windows joints au domaine.
- Déployer un baseline aligné CIS Benchmark visant 'Turn Off Windows PowerShell 2.0' via une GPO dédiée.
- Réduire la surface d'attaque des comptes manipulant des identifiants privilégiés ou des données sensibles.
- Standardiser la configuration sur plusieurs tenants clients dans un parc géré en MSP.
Implications sécurité
Ne pas appliquer cette stratégie crée un chemin d'attaque documenté que les attaquants sondent activement – Pass-the-Hash, Kerberoasting, NTLM relay, brute-force RDP, dump LSASS ou usurpation de token selon le contrôle concerné. Un seul endpoint mal configuré peut suffire à pivoter vers une compromission Domain Admin.
Si la valeur par défaut doit être conservée pour une raison de compatibilité légitime, compensez par une règle de détection forte dans l'EDR/SIEM, isolez l'endpoint dans son propre VLAN et documentez l'exception avec une date cible de remédiation.
Comment configurer
- Ouvrez la Console de gestion des stratégies de groupe (
gpmc.msc) sur un contrôleur de domaine ou un poste disposant des outils RSAT. - Créez ou éditez une GPO liée à l'OU contenant les configuration ordinateurs cibles. Nous recommandons une GPO de baseline dédiée (ex. SEC – PowerShell) plutôt que de modifier la Default Domain Policy.
- Naviguez vers
Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell. - Ouvrez Turn Off Windows PowerShell 2.0 et définissez-le sur
Disable via Windows Features. - Cliquez sur OK et fermez l'éditeur.
- Sur le poste cible, exécutez
gpupdate /force(ou attendez le prochain cycle), puis vérifiez avecrsop.mscougpresult /h rapport.html.
Chemin direct registre : HKLM\Software\Policies\Microsoft\Windows\PowerShell\EnableScripts. Vous pouvez appliquer le même changement en PowerShell :
New-Item -Path 'HKLM\Software\Policies\Microsoft\Windows\PowerShell' -Force | Out-Null
Set-ItemProperty -Path 'HKLM\Software\Policies\Microsoft\Windows\PowerShell' -Name 'EnableScripts' -Value <valeur> -Type DWordCorrespondance registre
HKLM\Software\Policies\Microsoft\Windows\PowerShellEnableScriptsREG_DWORDDisable via Windows FeaturesNot configured
