En savoir plus sur la sécurité des scripts PowerShell

S’applique à : Gestionnaire de Configuration (branche actuelle)

Il incombe à l’administrateur de valider l’utilisation des paramètres PowerShell et PowerShell proposés dans son environnement. Voici quelques ressources utiles pour sensibiliser les administrateurs à la puissance de PowerShell et aux surfaces de risque potentielles. Ces conseils vous aident à atténuer les surfaces de risque potentielles et à permettre l’utilisation de scripts sécurisés.

Sécurité des scripts PowerShell

La fonctionnalité Configuration Manager scripts vous permet d’examiner et d’approuver visuellement les scripts. Un autre administrateur peut demander que son script soit autorisé. Les administrateurs doivent savoir que les scripts PowerShell peuvent avoir des scripts obfusqués. Un script obfusqué peut être malveillant et difficile à détecter lors de l’inspection visuelle pendant le processus d’approbation du script. Examinez visuellement les scripts PowerShell et utilisez les outils d’inspection pour détecter les problèmes de script suspects. Ces outils ne peuvent pas toujours déterminer l’intention de l’auteur PowerShell. Ils peuvent donc attirer l’attention sur un script suspect. Toutefois, les outils demandent à l’administrateur de déterminer s’il s’agit d’une syntaxe de script malveillante ou intentionnelle.

Recommandations

  • Familiarisez-vous avec les conseils de sécurité PowerShell à l’aide des différents liens référencés ci-dessous.
  • Signer vos scripts : une autre méthode de sécurisation des scripts consiste à les faire vérifier, puis à les signer, avant de les importer pour les utiliser.
  • Ne stockez pas les secrets (tels que les mots de passe) dans les scripts PowerShell et apprenez-en davantage sur la gestion des secrets.

Informations générales sur la sécurité PowerShell

Cette collection de liens a été choisie pour donner aux administrateurs Configuration Manager un point de départ pour en savoir plus sur les recommandations de sécurité des scripts PowerShell.

Défense contre les attaques PowerShell

Protection contre l’injection de code malveillant

PowerShell - The Blue Team, traite de la journalisation des blocs deep script, de la journalisation des événements protégés, de l’interface d’analyse anti-programme malveillant et des API de génération de code sécurisé

API pour l’interface d’analyse anti-programme malveillant

Sécurité des paramètres PowerShell

La transmission de paramètres est un moyen d’avoir une flexibilité avec vos scripts et de différer les décisions jusqu’à l’exécution. Il ouvre également une autre surface de risque.

La liste suivante contient des recommandations pour empêcher les paramètres malveillants ou l’injection de scripts :

  • Autorisez uniquement l’utilisation de paramètres prédéfinis.
  • Utilisez la fonctionnalité d’expression régulière pour valider les paramètres autorisés.
    • Exemple : si seule une certaine plage de valeurs est autorisée, utilisez une expression régulière pour rechercher uniquement les caractères ou valeurs qui peuvent faire partie de la plage.
    • La validation des paramètres peut empêcher les utilisateurs d’utiliser certains caractères pouvant être placés dans une séquence d’échappement, comme des guillemets. Il peut y avoir plusieurs types de guillemets. Il est donc souvent plus facile d’utiliser des expressions régulières pour valider les caractères que vous avez décidé d’autoriser que d’essayer de définir toutes les entrées qui ne sont pas autorisées.
  • Utilisez le module PowerShell « injection hunter » dans le PowerShell Gallery.
    • Il peut y avoir des faux positifs. Recherchez donc l’intention lorsque quelque chose est marqué comme suspect pour déterminer s’il s’agit d’un problème réel ou non.
  • Microsoft Visual Studio dispose d’un analyseur de script, qui peut vous aider à vérifier la syntaxe PowerShell.

La vidéo suivante intitulée « DEF CON 25 - Lee Holmes - Get $pwnd: Attacking Battle Hardened Windows Server » donne une vue d’ensemble des types de problèmes contre lesquels vous pouvez vous protéger (en particulier la section 12:20 à 17:50) :

Recommandations relatives à l’environnement

La liste suivante contient des recommandations générales pour les administrateurs PowerShell :

  • Déployez la dernière version de PowerShell, telle que la version 5 ou ultérieure, qui est intégrée à Windows 10 ou une version ultérieure. Vous pouvez également déployer le Windows Management Framework.
  • Activez et collectez les journaux PowerShell, y compris éventuellement la journalisation des événements protégés. Incorporez ces journaux dans vos workflows de signatures, de repérage et de réponse aux incidents.
  • Implémentez Just Enough Administration sur des systèmes à valeur élevée pour éliminer ou réduire l’accès administratif sans contrainte à ces systèmes.
  • Déployez Windows Defender stratégies de contrôle d’application pour permettre aux tâches d’administration préapprouvées d’utiliser toutes les fonctionnalités du langage PowerShell, tout en limitant l’utilisation interactive et non approuvée à un sous-ensemble limité du langage PowerShell.
  • Déployez Windows 10 ou une version ultérieure pour donner à votre fournisseur d’antivirus un accès complet à tout le contenu (y compris le contenu généré ou dé-obfusqué au moment de l’exécution) traité par les hôtes de script Windows, y compris PowerShell.