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
- Journal classique Windows PowerShell, où la rétrogradation est enregistrée
- Journalisation des blocs de script et AMSI, les défenses qu'elle contourne
- Contournement de la stratégie d'exécution, une autre option de lancement à rechercher
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.