Skip to content

Glossaire

Attaque par rétrogradation PowerShell

Lancer PowerShell version 2 pour échapper à la journalisation des blocs de script et à AMSI, qui n'existent qu'en version 5.

Une attaque par rétrogradation PowerShell lance PowerShell avec -Version 2 afin que la session s'exécute sur l'ancien moteur PowerShell 2.0 au lieu de la version 5. Le moteur 2.0 est antérieur aux fonctionnalités de sécurité ajoutées en version 5 : il n'a aucune journalisation des blocs de script, aucune journalisation des modules et aucune intégration d'AMSI. Si la fonctionnalité Windows PowerShell 2.0 et le runtime .NET Framework 2.0/3.5 dont elle dépend sont présents, l'attaquant obtient un environnement de script complet qui laisse bien moins de traces et n'est pas analysé par l'antivirus à l'exécution.

Pourquoi c'est important en investigation

Une rétrogradation est un choix délibéré pour échapper à la visibilité : sa présence est donc significative même lorsque vous ne voyez pas ce qui s'est exécuté ensuite. Elle explique aussi certains trous : un hôte où la journalisation des blocs de script est activée mais qui ne présente aucun événement 4104 pour une session suspecte exécutait peut-être le moteur v2. Bonne nouvelle : le journal classique Windows PowerShell est toujours alimenté par le moteur v2, si bien que la tentative elle-même reste visible.

Les défenseurs l'empêchent en supprimant la fonctionnalité facultative Windows PowerShell 2.0, ce qui laisse -Version 2 sans aucun moteur à charger.

Exemple

La ligne de commande, telle qu'enregistrée dans le champ HostApplication d'un événement 400 du journal classique :

HostApplication=powershell.exe -Version 2 -NoProfile -Command whoami
EngineVersion=2.0

Les deux champs racontent la même histoire sous deux angles : l'option montre la demande, et EngineVersion=2.0 montre le moteur qui a réellement démarré. Le parseur lève une détection de rétrogradation de gravité élevée pour une option -Version 2 (ou -v 2) sur une ligne de commande PowerShell, ainsi que pour tout événement 400 ou 403 dont la version du moteur est 2.x.

Termes associés

Vérifiez les versions du moteur dans les événements 400 avec PowerShell Parser, lisez le guide des journaux d'événements PowerShell, et consultez Lee Holmes sur les attaques par rétrogradation.