CSP de ApplicationControl

Windows Defender directivas de Control de aplicaciones (WDAC) se pueden administrar desde un servidor MDM o localmente mediante PowerShell a través del puente WMI a través del proveedor de servicios de configuración de ApplicationControl (CSP). El CSP de ApplicationControl se agregó en Windows 10, versión 1903. Este CSP proporciona funcionalidades de diagnóstico ampliadas y compatibilidad con varias directivas (introducidas en Windows 10, versión 1903). También proporciona compatibilidad con la implementación de directivas (introducida en Windows 10, versión 1709) sin reiniciar. A diferencia del CSP de AppLocker, el CSP de ApplicationControl detecta correctamente la presencia de la opción de no reinicio y, por lo tanto, no programa un reinicio.

Las directivas existentes de control de aplicaciones de Windows Defender (WDAC) implementadas mediante el nodo CodeIntegrity del CSP de AppLocker ahora se pueden implementar mediante el URI de CSP de ApplicationControl. Aunque se seguirá admitiendo la implementación de directivas WDAC con el CSP de AppLocker, todo el nuevo trabajo de características solo se realizará en el CSP de ApplicationControl.

En la lista siguiente se muestran los nodos del proveedor de servicios de configuración de ApplicationControl:

Directivas

Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies

Principio de un subárbol que contiene todas las directivas.

Cada directiva se identifica mediante su identificador único global (GUID).

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato node
Tipo de acceso Obtener

Directivas/{GUID de directiva}

Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}

GUID de la directiva.

Cada nodo GUID de directiva contiene un nodo Policy y un nodo PolicyInfo correspondiente.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato node
Tipo de acceso Obtener
Nomenclatura dinámica de nodos UniqueName: el CSP de ApplicationControl exige que el segmento "ID" de un URI de directiva determinado sea el mismo GUID que el identificador de directiva en el blob de directivas.

Directivas/{GUID de directiva}/Directiva

Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/Policy

El binario de directiva codificado como base64. El valor admitido es un archivo binario, convertido a partir del archivo XML de directiva por el cmdlet ConvertFrom-CIPolicy.

El valor predeterminado está vacío.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato b64
Tipo de acceso Agregar, Eliminar, Obtener, Reemplazar

Policies/{Policy GUID}/PolicyInfo

Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo

Información que describe la directiva indicada por el GUID.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato node
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/BasePolicyId
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/BasePolicyId

BasePolicyId de la directiva indicada por el GUID de la directiva.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato chr (cadena)
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/FriendlyName
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/FriendlyName

FriendlyName de la directiva indicada por el GUID de directiva.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato chr (cadena)
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/IsAuthorized
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsAuthorized

Si la directiva indicada por el GUID está autorizada a cargarse por el motor de cumplimiento en el sistema.

Los valores admitidos son los siguientes:

  • True: indica que el motor de cumplimiento del sistema autoriza la carga de la directiva.
  • False: indica que el motor de cumplimiento no tiene autorización para cargar la directiva en el sistema. Este valor es el valor predeterminado.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato bool
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/IsBasePolicy
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsBasePolicy

TRUE/FALSE si la directiva es una directiva base frente a una directiva complementaria.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato bool
Tipo de acceso Obtener
Directivas/{GUID de directiva}/PolicyInfo/IsDeployed
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsDeployed

Si la directiva indicada por el GUID se implementa en el sistema (en la máquina física)

Los valores admitidos son los siguientes:

  • True: indica que la directiva se implementa en el sistema y está presente en la máquina física.
  • False: indica que la directiva no está implementada en el sistema y no está presente en la máquina física. Este valor es el valor predeterminado.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato bool
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/IsEffective
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsEffective

Si la directiva indicada por el GUID es efectiva en el sistema (cargada por el motor de cumplimiento y en vigor)

Los valores admitidos son los siguientes:

  • True: indica que el motor de cumplimiento carga la directiva y está en vigor en un sistema.
  • False: indica que el motor de cumplimiento no carga la directiva y no está en vigor en un sistema. Este valor es el valor predeterminado.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato bool
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/IsSystemPolicy
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/IsSystemPolicy

TRUE/FALSE si la directiva es una directiva del sistema, es una directiva administrada por Microsoft como parte del sistema operativo.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato bool
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/PolicyOptions
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/PolicyOptions

PolicyOptions de la directiva indicada por el GUID de directiva.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato chr (cadena)
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/Status
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/Status

Estado actual de la directiva indicado por el GUID de la directiva.

El valor predeterminado es 0, lo que indica que el estado de la directiva es OK.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato int
Tipo de acceso Obtener
Policies/{Policy GUID}/PolicyInfo/Version
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Policies/{Policy GUID}/PolicyInfo/Version

Versión de la directiva indicada por el GUID, como una cadena. Al analizar, use uint64 como tipo de datos contenedor.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato chr (cadena)
Tipo de acceso Obtener

Fichas

Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Tokens

Principio de un subárbol que contiene todos los tokens.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato node
Tipo de acceso Obtener

Tokens/{ID}

Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Tokens/{ID}

Identificador arbitrario que se usa para diferenciar tokens.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato node
Tipo de acceso Obtener
Nomenclatura dinámica de nodos UniqueName: el CSP de ApplicationControl exige que el segmento "ID" de un URI de token determinado sea único.

Tokens/{ID}/Token

Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/Token

El binario de token codificado como base64. El valor admitido es un archivo binario, obtenido de OneCoreDeviceUnlockService.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato b64
Tipo de acceso Agregar, Eliminar, Obtener, Reemplazar

Tokens/{ID}/TokenInfo

Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo

Información que describe el token indicado por el identificador correspondiente.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato node
Tipo de acceso Obtener
Tokens/{ID}/TokenInfo/Status
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo/Status

Estado actual del token indicado por el identificador de token.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato int
Tipo de acceso Obtener
Tokens/{ID}/TokenInfo/Type
Ámbito Ediciones Sistema operativo aplicable
Dispositivo ✅
❌ Usuario
✅ Pro
✅ Empresa
✅ Educación
✅ Windows SE
✅ IoT Enterprise/IoT Enterprise LTSC
✅Windows 10, versión 1903 [10.0.18362] y versiones posteriores
./Vendor/MSFT/ApplicationControl/Tokens/{ID}/TokenInfo/Type

Tipo de token indicado por el identificador de token.

Propiedades del marco de descripción:

Nombre de la propiedad Valor de propiedad
Formato int
Tipo de acceso Obtener

Valores IsAuthorized, IsDeployed e IsEffective

En la tabla siguiente se proporciona el resultado de esta directiva en función de los distintos valores de los nodos IsAuthorized, IsDeployed e IsEffective:

IsAuthorized IsDeployed IsEffective Resultante
True True True La directiva se está ejecutando actualmente y está en vigor.
True True Falso La directiva requiere un reinicio para que surta efecto.
Verdadero Falso Verdadero La directiva requiere un reinicio para descargar desde CI.
Falso True True No accesible.
Verdadero Falso Falso *No accesible.
Falso Verdadero Falso *No accesible.
Falso Falso Verdadero No accesible.
Falso Falso Falso *No accesible.

* denota un estado intermedio válido; sin embargo, si una transacción MDM da como resultado esta configuración de END_COMMAND_PROCESSING estado, se producirá un error.

Guía de uso de Microsoft Intune

Para los clientes que usan Intune administración híbrida o independiente con Configuration Manager para implementar directivas personalizadas a través del CSP de ApplicationControl, consulte Deploy Windows Defender Application Control policies by using Microsoft Intune(Implementar directivas de Application Control mediante Microsoft Intune).

Guía de uso del servidor MDM genérico

Para usar el CSP de ApplicationControl sin usar Intune, debe:

  1. Conozca el GUID de una directiva generada, que se puede encontrar en el xml de directiva como <PolicyID> o <PolicyTypeID> para sistemas anteriores a 1903.
  2. Convierta las directivas en formato binario mediante el ConvertFrom-CIPolicy cmdlet para implementarlas. La directiva binaria puede estar firmada o sin firmar.
  3. Cree un nodo de directiva (un blob codificado en Base64 de la representación de directiva binaria) mediante la certutil -encode herramienta de línea de comandos.

A continuación se muestra una invocación certutil de ejemplo:

certutil  -encode WinSiPolicy.p7b WinSiPolicy.cer

Una alternativa al uso de certutil sería usar la siguiente invocación de PowerShell:

[Convert]::toBase64String($(Get-Content -Encoding Byte -ReadCount 0 -Path <bin file>))

Implementar directivas

Para implementar una nueva directiva base mediante el CSP, realice un ADD en ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy mediante el nodo de directiva codificado en Base64 como {Data}. Consulte la sección Formato del ejemplo 1 siguiente.

Para implementar directivas base y complementarias:

  1. Realice un ADD en ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy mediante el nodo de directiva codificado en Base64 como {Data} con el GUID y los datos de directiva para la directiva base.
  2. Repita la operación para cada directiva base o complementaria (con su propio GUID y datos).

En el ejemplo siguiente se muestra la implementación de dos directivas base y una directiva complementaria (que ya especifica la directiva base que complementa y no necesita que se refleje en add).

Ejemplo 1: Agregar directiva de primera base

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Base1GUID}/Policy</LocURI>
        </Target>
        <Meta>
             <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Base1Data} </Data>
    </Item>
</Add>

Ejemplo 2: Agregar directiva de segunda base

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Base2GUID}/Policy</LocURI>
        </Target>
        <Meta>
            <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Base2Data} </Data>
    </Item>
</Add>

Ejemplo 3: Agregar directiva complementaria

<Add>
    <CmdID>1</CmdID>
    <Item>
        <Target>
            <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{Supplemental1GUID}/Policy</LocURI>
        </Target>
        <Meta>
            <Format xmlns="syncml:metinf">b64</Format>
        </Meta>
        <Data> {Supplemental1Data} </Data>
    </Item>
</Add>

Obtener directivas

Realice un GET mediante el GUID de una directiva implementada para interrogar o inspeccionar la propia directiva o información sobre ella.

En la tabla siguiente se muestra el resultado de la operación Get en distintos nodos:

Nodos Obtener resultados
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy p7b sin procesar
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/Version Versión de la directiva
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsEffective ¿La directiva está en vigor?
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsDeployed ¿Es la directiva en el sistema?
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/IsAuthorized ¿Está autorizada la directiva en el sistema?
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/Status ¿La implementación se realizó correctamente?
./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/PolicyInfo/FriendlyName Nombre descriptivo según la directiva

Un ejemplo del comando Get es:

 <Get>
    <CmdID>1</CmdID>
        <Item>
            <Target>
                <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
            </Target>
        </Item>
 </Get>

Eliminar directivas

Eliminación sin reinicio

Tras la eliminación, las directivas implementadas a través del CSP de ApplicationControl se quitan del sistema, pero permanecen en vigor hasta el siguiente reinicio. Para realizar una eliminación sin reinicio funcional, reemplace primero la directiva existente por una directiva Permitir todo (que se encuentra en C:\Windows\schemas\CodeIntegrity\ExamplePolicies\AllowAll.xml) y, a continuación, elimine la directiva actualizada. Esta secuencia impedirá inmediatamente que cualquier cosa se bloquee y deactive completamente la directiva en el siguiente reinicio.

Directivas sin firmar

Para eliminar una directiva sin firmar, realice una operación DELETE en ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy.

Directivas firmadas

Nota

De forma predeterminada, una directiva firmada solo se puede reemplazar por otra directiva firmada. Por lo tanto, realizar una operación DELETE en ./Vendor/MSFT/ApplicationControl/Policies/Policy GUID/Policy no es suficiente para eliminar una directiva firmada.

Para eliminar una directiva firmada:

  1. Reemplácela por una actualización firmada que permita la directiva sin firmar.
  2. Implemente otra actualización con la directiva Permitir todo sin firmar.
  3. Realice la eliminación.

Un ejemplo del comando Delete es:

   <Delete>
     <CmdID>1</CmdID>
        <Item>
            <Target>
                  <LocURI>./Vendor/MSFT/ApplicationControl/Policies/{PolicyGUID}/Policy</LocURI>
            </Target>
        </Item>
   </Delete>

Guía de uso del puente de PowerShell y WMI

El CSP de ApplicationControl también se puede administrar localmente desde PowerShell o mediante el scripting de secuencia de tareas de Configuration Manager mediante el proveedor de puentes WMI.

Configuración para usar el puente WMI

  1. Convierta la directiva WDAC en Base64.

  2. Abra PowerShell en el contexto del sistema local (a través de PSExec o algo similar).

  3. Uso de la interfaz WMI:

    $namespace = "root\cimv2\mdm\dmmap"
    $policyClassName = "MDM_ApplicationControl_Policies01_01"
    $policyBase64 = "<base64policy>"
    

Implementación de una directiva mediante el puente WMI

Ejecute el siguiente comando. PolicyID es un GUID que se puede encontrar en el xml de directiva y se debe usar aquí sin llaves.

New-CimInstance -Namespace $namespace -ClassName $policyClassName -Property @{ParentID="./Vendor/MSFT/ApplicationControl/Policies";InstanceID="<PolicyID>";Policy=$policyBase64}

Consulta de todas las directivas a través del puente WMI

Get-CimInstance -Namespace $namespace -ClassName $policyClassName

Referencia de proveedor de servicios de configuración