Comment utiliser PowerShell de façon sécurisée ? Voici les conseils de la NSA
La NSA et ses partenaires ont mis en ligne un guide intitulé "Keeping PowerShell: Security Measures to Use and Embrace" qui regroupe les bonnes pratiques en matière de sécurité lorsque l'on souhaite utiliser PowerShell, de manière à éviter et détecter les activités malveillantes sur une machine Windows.
PowerShell est une excellente solution pour créer des scripts, administrer des serveurs Windows, etc... Mais c'est également un langage très utilisé par les pirates informatiques dans le cadre de cyberattaques. D'un côté, les administrateurs systèmes souhaitent autoriser et utiliser PowerShell, et de l'autre, les cybercriminels aiment s'en servir également sur les machines Windows compromises. Une situation qui n'est pas simple : comment utiliser PowerShell de manière sécurisée ? La NSA, et ses partenaires du jour, à savoir la CISA, le NCSC de Nouvelle-Zélande et le NCSC du Royaume-Uni ont mis en ligne un document qui recense les recommandations à appliquer pour utiliser PowerShell tout en atténuant les risques liés aux cybermenaces plutôt que de le désactiver, comme je l'évoquais dans l'un de mes précédents articles. Pour ne pas se priver de PowerShell en tant qu'outil défensif, il ne faut pas le supprimer ou le désactiver.
Pour les connexions à distance, la NSA et les autres agences à l'origine de ce rapport conseillent d'utiliser le protocole SSH, pris en charge par PowerShell 7, afin d'établir une connexion grâce à une clé publique. On parle de PowerShell Remoting over SSH. Autrement dit, on ne s'appuie pas sur WinRM (donc pas de gestion des Trusted Hosts), pas besoin de mettre en place un certificat SSL pour sécuriser les connexions via HTTPS et pas besoin non plus d'un mot de passe pour la connexion. Par ailleurs, cela permet l'administration d'une machine Windows à partir d'une machine Linux, et inversement.
Une autre recommandation, c'est d'utiliser des solutions comme AppLocker ou Windows Defender Application Control notamment pour utiliser PowerShell en mode CLM (Constrained Language Mode) afin d'avoir plus de contrôles sur les actions possibles via PowerShell.
En ce qui concerne les logs, il est recommandé d'enregistrer l'activité PowerShell et de surveiller les journaux pour être capable de détecter une activité malveillante (PowerShell et la transcription). La NSA mentionne les fonctionnalités suivantes : Deep Script Block Logging (DSBL), le module Logging, et la fonction de transcription Over-the-Shoulder (OTS). Comme le montre le tableau ci-dessous, toutes les fonctionnalités ne sont pas prises en charge par les différentes versions de PowerShell.
N'hésitez pas à consulter le rapport complet, accessible à cette adresse : media.defense.gov. Ce document ne parle pas de la mise en oeuvre des différentes recommandations, donc il y a un travail de recherche à effectuer.
Il te reste à nous faire un petit tuto complet sur la mise en place de ces recommandations 😉