Compartir a través de


Uso de App Control para proteger PowerShell

Windows 10 incluye dos tecnologías, App Control para empresas y AppLocker, que puedes usar para controlar las aplicaciones. Estas tecnologías permiten crear una experiencia de bloqueo que ayuda a proteger el entorno de PowerShell.

AppLocker se basa en las características de control de aplicaciones de las directivas de restricción de software. AppLocker permite crear reglas para permitir o denegar aplicaciones para usuarios o grupos específicos. Las aplicaciones se identifican en función de las propiedades únicas de los archivos.

El Control de aplicaciones para empresas, introducido en Windows 10 como Control de aplicaciones de Windows Defender (WDAC), permite controlar qué controladores y aplicaciones pueden ejecutarse en Windows.

Detección de directivas de bloqueo

PowerShell detecta las directivas en todo el sistema appLocker y App Control for Business. AppLocker no tiene forma de consultar el estado de aplicación de la directiva. Para detectar si appLocker aplica una directiva de control de aplicaciones en todo el sistema, PowerShell crea dos archivos temporales y comprueba si se pueden ejecutar. Los nombres de archivo usan el siguiente formato de nombre:

  • $env:TEMP/__PSAppLockerTest__<random-8dot3-name>.ps1
  • $env:TEMP/__PSAppLockerTest__<random-8dot3-name>.psm1

El control de aplicaciones para empresas es el sistema de control de aplicaciones preferido para Windows. App Control proporciona API que permiten detectar la configuración de la directiva. El control de aplicaciones está diseñado como una característica de seguridad en los criterios de mantenimiento definidos por el Centro de respuesta de seguridad de Microsoft (MSRC). Para obtener más información, consulte Controles de aplicaciones para Windows y Control de aplicaciones y disponibilidad de características de AppLocker.

Nota:

Al elegir entre App Control o AppLocker, se recomienda implementar el control de aplicaciones mediante App Control para empresas en lugar de AppLocker. Microsoft ya no está invirtiendo en AppLocker. Aunque AppLocker puede seguir recibiendo correcciones de seguridad, sus características ya no recibirán mejoras.

Aplicación de directivas de Control de aplicaciones

Cuando PowerShell se ejecuta en una directiva de Control de aplicaciones, su comportamiento cambia en función de la directiva de seguridad definida. En una directiva de Control de aplicaciones, PowerShell ejecuta scripts y módulos de confianza permitidos por la directiva en FullLanguage modo. Los restantes scripts y bloques de scripts no son de confianza y se ejecutan en modo ConstrainedLanguage. PowerShell genera errores cuando los scripts que no son de confianza intentan realizar acciones que no se permiten en modo ConstrainedLanguage. Puede ser complicado conocer los motivos por los que un script no se ha ejecutado correctamente en modo ConstrainedLanguage.

Auditoría de directivas de Control de aplicaciones

PowerShell 7.4 ha agregado una nueva característica para admitir directivas de Control de aplicaciones en modo auditoría . En este modo, PowerShell ejecuta sin errores los scripts que no son de confianza en el modo ConstrainedLanguage, pero registra los mensajes en el registro de eventos en su lugar. Los mensajes del registro describen qué restricciones se aplicarían si la directiva estuviera en modo Aplicar.

Historial de cambios

Windows PowerShell 5.1 era la primera versión de PowerShell para admitir App Control. Las características de seguridad de App Control y AppLocker mejoran con cada nueva versión de PowerShell. En las secciones siguientes se describen los cambios en la compatibilidad en cada versión de PowerShell. Los cambios son acumulativos, por lo que las características descritas en las versiones posteriores incluyen las de versiones anteriores.

Cambios en PowerShell 7.4

En Windows, cuando PowerShell se ejecuta en una directiva de Control de aplicaciones, su comportamiento cambia en función de la directiva de seguridad definida. En una directiva de Control de aplicaciones, PowerShell ejecuta scripts y módulos de confianza permitidos por la directiva en FullLanguage modo. Los restantes scripts y bloques de scripts no son de confianza y se ejecutan en modo ConstrainedLanguage. PowerShell genera errores cuando los scripts que no son de confianza intentan realizar acciones no permitidas. Es difícil conocer los motivos por los que un script no se ejecuta correctamente en el modo ConstrainedLanguage.

PowerShell 7.4 ahora admite directivas de Control de aplicaciones en modo auditoría . En este modo, PowerShell ejecuta los scripts que no son de confianza en el modo ConstrainedLanguage, pero registra los mensajes en el registro de eventos, en lugar de generar errores. Los mensajes del registro describen qué restricciones se aplicarían si la directiva estuviera en modo Aplicar.

Cambios en PowerShell 7.3

  • PowerShell 7.3 ahora admite la capacidad de bloquear o permitir archivos de script de PowerShell a través de la API de Control de aplicaciones.

Cambios en PowerShell 7.2

  • Hay un caso extremo en AppLocker donde solo hay reglas de denegación y el modo restringido no se usa para aplicar la directiva que permite omitir la directiva de ejecución. A partir de PowerShell 7.2, se realizó un cambio para garantizar que las reglas de AppLocker tuvieran prioridad sobre un comando Set-ExecutionPolicy -ExecutionPolicy Bypass.

  • PowerShell 7.2 ahora no permite el uso del cmdlet Add-Type en una sesión de PowerShell en modo NoLanguage en una máquina bloqueada.

  • PowerShell 7.2 ahora no permite que los scripts usen objetos COM en condiciones de bloqueo del sistema de AppLocker. Los cmdlets que usan COM o DCOM internamente no se ven afectados.

Información adicional