Share via


Uso de Control de aplicaciones de Windows Defender

Windows 10 incluye dos tecnologías, Control de aplicaciones de Windows Defender (WDAC) y AppLocker, que se pueden usar para controlar 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 contiene funcionalidades y extensiones que permiten crear reglas para permitir o denegar la ejecución de aplicaciones en función de identidades únicas de archivos y especificar qué usuarios o grupos tienen permiso para ejecutar esas aplicaciones.

Nota:

Si hay que elegir entre WDAC o AppLocker, es aconsejable implementar el control de aplicaciones mediante WDAC, en lugar de AppLocker. Microsoft mejora constantemente WDAC y las plataformas de administración de Microsoft están ampliando su compatibilidad con WDAC. Aunque AppLocker puede seguir recibiendo correcciones de seguridad, sus características ya no recibirán mejoras.

WDAC se incorporó con Windows 10 y permite a las organizaciones controlar los controladores y aplicaciones que pueden ejecutarse en sus dispositivos Windows. MDAC está diseñado como una característica de seguridad según los criterios de mantenimiento definidos por el Centro de respuestas de seguridad de Microsoft (MSRC).

Para más información sobre AppLocker y WDAC, consulte Controles de la aplicación para Windows y Disponibilidad de características de AppLocker y WDAC.

Aplicación de directivas de WDAC

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

Auditoría de directivas de WDAC

PowerShell 7.4 ha agregado una nueva característica para admitir directivas WDAC en el modo Auditoría. En este modo, PowerShell ejecuta sin errores los scripts que no son de confianza en el modo Lenguaje restringido, 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.

Visualización de eventos de auditoría

PowerShell registra los eventos de auditoría en el registro de eventos PowerShellCore/Analytic. El registro Analytic se debe habilitar. Para habilitar este registro en la Visor de eventos de Windows, haga clic con el botón derecho en el registro PowerShellCore/Analytic y seleccione Habilitar registro.

Otra opción es ejecutar el siguiente comando desde una sesión de PowerShell con privilegios elevados.

wevtutil.exe sl PowerShellCore/Analytic /enabled:true /quiet

Puede ver los eventos en el Visor de eventos de Windows o usar el cmdlet Get-WinEvent para recuperar los eventos.

Get-WinEvent -LogName PowerShellCore/Analytic -Oldest |
    Where-Object Id -eq 16387 | Format-List
TimeCreated  : 4/19/2023 10:11:07 AM
ProviderName : PowerShellCore
Id           : 16387
Message      : WDAC Audit.

    Title: Method or Property Invocation
    Message: Method or Property 'WriteLine' on type 'System.Console' invocation will not
        be allowed in ConstrainedLanguage mode.
        At C:\scripts\Test1.ps1:3 char:1
        + [System.Console]::WriteLine("pwnd!")
        + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    FullyQualifiedId: MethodOrPropertyInvocationNotAllowed

El mensaje de evento incluye la posición del script en que se aplicaría la restricción. Esta información le ayuda a saber dónde debe cambiar el script para que se ejecute en la directiva de WDAC.

Importante

Una vez que haya revisado los eventos de auditoría, debe deshabilitar el registro Analytic. Los registros Analytic crecen rápidamente y consumen grandes cantidades de espacio en disco.

Visualización de eventos de auditoría en el depurador de PowerShell

Si establece la variable $DebugPreference en Break para una sesión interactiva de PowerShell, PowerShell interrumpirá el depurador de scripts de línea de comandos en la ubicación actual del script en que se produjo el evento de auditoría, lo que le permite depurar el código e inspeccionar el estado actual del script en tiempo real.