Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Constrained Language Mode

ad

Définition

Le Constrained Language Mode est un mode de fonctionnement restreint de PowerShell limitant l'accès aux fonctionnalités les plus puissantes et potentiellement dangereuses du langage, notamment l'appel direct à des API Windows via .NET, la manipulation de types COM, et l'exécution de code compilé dynamiquement, tout en conservant la disponibilité des cmdlets PowerShell standards nécessaires aux tâches d'administration courantes. Ce mode constitue une mesure de durcissement particulièrement efficace contre de nombreux outils offensifs distribués sous forme de scripts PowerShell, comme certaines versions historiques de PowerView ou de Mimikatz portées en PowerShell, ces outils s'appuyant fréquemment sur des appels directs à des API Windows bas niveau pour manipuler la mémoire ou interagir avec des structures système sensibles, des opérations bloquées lorsque le Constrained Language Mode est activement appliqué. Son déploiement s'articule généralement avec AppLocker ou Windows Defender Application Control (WDAC), qui déterminent automatiquement le niveau de langage appliqué à une session PowerShell en fonction des règles de confiance définies pour l'utilisateur ou le système concerné, un utilisateur non privilégié se voyant typiquement restreint à ce mode tandis qu'un administrateur de confiance conserve l'accès complet au Full Language Mode. Cette restriction reste contournable par des techniques de bypass documentées, d'où son intégration dans une défense en profondeur plutôt qu'une mesure isolée.

Fonctionnement technique

CLM est activé automatiquement quand AppLocker est actif sur un système. En CLM, les types .NET complexes, les méthodes statiques, et les blocs de script sont restreints. $ExecutionContext.SessionState.LanguageMode retourne 'ConstrainedLanguage'. PowerShell IEX (Invoke-Expression), Add-Type, [System.Reflection.Assembly]::Load() sont bloqués ou restreints.

Impact sur les outils offensifs

  • PowerView : Fonctionnel en partie, mais certaines fonctions bloquées
  • Empire : Agents PowerShell bloqués
  • Bypass : PowerShell 2.0 (sans CLM), .NET direct, C# compiled

Déploiement

  • AppLocker : configurer Publisher/Path rules pour déclencher CLM
  • WDAC : contrôle plus robuste qu'AppLocker
  • Combiner avec ScriptBlock Logging (Event ID 4104)

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis