App Control for Business (WDAC) frente a AppLocker
Elige entre App Control for Business (antes WDAC) y AppLocker, parte de las directivas de ejemplo, audita, lee los eventos de Code Integrity y aplica sin romper nada.
El antivirus pregunta «¿se sabe que este archivo es malo?». El control de aplicaciones hace la pregunta contraria: «¿se sabe que este archivo es bueno?». Todo lo demás se rechaza. Esa inversión derrota al malware común, a la mayoría de los droppers de ransomware y a la mayor parte de las herramientas que los atacantes llevan a un equipo cuando operan al teclado, porque nada de eso está en tu lista de permitidos.
Windows incluye dos tecnologías de lista de permitidos. Esta guía explica cuándo usar cada una y después recorre un despliegue realista de App Control for Business (el nuevo nombre de Windows Defender Application Control, WDAC).
App Control frente a AppLocker
| App Control for Business (WDAC) | AppLocker | |
|---|---|---|
| Punto de aplicación | Integridad de código del kernel (controladores y modo usuario) | Modo usuario, mediante el servicio Application Identity |
| Ámbito | Todo el dispositivo, todos los usuarios | Por usuario o grupo |
| Tipos de regla | Firmante/editor, hash de archivo, ruta de archivo, atributos de archivo, instalador administrado, reputación de Intelligent Security Graph | Editor, ruta, hash |
| Cubre controladores | Sí | No |
| Aplicación a scripts | Sí, con el modo de lenguaje restringido de PowerShell, y con reconocimiento del host en los intérpretes compatibles | Scripts (.ps1, .bat, .cmd, .vbs, .js) mediante reglas |
| Resistencia a manipulaciones | Las directivas firmadas pueden resistir su eliminación por administradores locales | Un administrador local puede detener el servicio o cambiar la directiva |
| Desarrollo | En desarrollo activo | Solo correcciones de seguridad |
Microsoft sitúa App Control como límite de seguridad y AppLocker como control complementario. Si empiezas desde cero, empieza con App Control.
Paso 1: elegir una directiva de partida
No construyas desde cero. Windows incluye directivas base de ejemplo en C:\Windows\schemas\CodeIntegrity\ExamplePolicies:
| Directiva de ejemplo | Confía en | Adecuada para |
|---|---|---|
DefaultWindows_Audit.xml / _Enforced.xml | Windows, aplicaciones de la Store, componentes firmados por Microsoft | Dispositivos de función fija, quioscos, servidores con pocas aplicaciones |
AllowMicrosoft.xml | Todo lo firmado por Microsoft (incluidos Office, Visual Studio, herramientas de SQL) | Servidores y estaciones de administración |
SmartAppControl.xml / directivas basadas en ISG | Windows más los archivos con buena reputación en Intelligent Security Graph | Clientes poco administrados en los que construir una lista de permitidos completa no es realista |
El App Control Policy Wizard (una herramienta gratuita de Microsoft) se apoya en estas plantillas con una interfaz gráfica y es la forma más fácil de empezar. Todo lo que hace también puede hacerse con el módulo de PowerShell ConfigCI.
Paso 2: añadir tu software y un instalador administrado
Una directiva que solo confía en Microsoft bloquea todas las aplicaciones de terceros. Hay tres formas de ampliarla:
- Reglas de editor para el software firmado por fabricantes de confianza (el menor mantenimiento).
- Instalador administrado: marca Intune Management Extension o Configuration Manager como instalador administrado, y todo lo que este instale será de confianza automáticamente. Así es como la mayoría de las empresas consiguen que App Control sea mantenible.
- Reglas de hash para las herramientas internas sin firmar, regeneradas en cada versión.
Examina un equipo de referencia para generar reglas a partir de lo instalado:
New-CIPolicy -Level Publisher -Fallback Hash -UserPEs `
-ScanPath "C:\Program Files" -FilePath .\ProgramFiles.xml
Merge-CIPolicy -PolicyPaths .\AllowMicrosoft.xml, .\ProgramFiles.xml -OutputFilePath .\Base.xmlEvita las reglas de ruta para ubicaciones en las que puedan escribir los usuarios. Por defecto, App Control solo respeta las reglas de ruta cuando la ruta únicamente es modificable por administradores, lo que es una buena red de seguridad; no desactives esa comprobación.
Paso 3: añadir las reglas de bloqueo
Las listas de permitidos confían en Microsoft, y Microsoft firma herramientas que los atacantes aprovechan (los binarios «living off the land»). Combina en la directiva:
- Reglas de bloqueo recomendadas por Microsoft: una lista publicada de binarios firmados que pueden eludir el control de aplicaciones (por ejemplo, versiones antiguas de hosts de scripts y depuradores). Inclúyelas en todas las directivas.
- Lista de bloqueo de controladores vulnerables de Microsoft: controladores firmados con vulnerabilidades conocidas. Está activada por defecto en todos los dispositivos desde Windows 11 22H2 (y se aplica siempre que están activos la integridad de memoria, Smart App Control o el modo S), pero la copia integrada se actualiza con menos frecuencia que la lista descargable de Microsoft; inclúyela explícitamente para compilaciones antiguas y servidores.
Paso 4: desplegar en modo auditoría
El modo auditoría es la opción de regla 3 de la directiva. Asegúrate de que está establecida, asigna un identificador a la directiva y conviértela a binario:
Set-RuleOption -FilePath .\Base.xml -Option 3 # Enabled:Audit Mode
Set-RuleOption -FilePath .\Base.xml -Option 16 # Enabled:Update Policy No Reboot
Set-CIPolicyIdInfo -FilePath .\Base.xml -PolicyName "Corp Base" -ResetPolicyID
ConvertFrom-CIPolicy -XmlFilePath .\Base.xml -BinaryFilePath .\Base.cipDespliégala con Intune (Endpoint security > App Control for Business), Configuration Manager, directiva de grupo (System > Device Guard > Deploy Windows Defender Application Control, renombrada para App Control en los ADMX más recientes; solo formato de directiva única) o localmente con CiTool en Windows 11 22H2 y posteriores:
CiTool.exe --update-policy .\Base.cip
CiTool.exe --list-policiesPaso 5: leer los eventos
Los eventos de integridad de código están en Applications and Services Logs > Microsoft > Windows > CodeIntegrity > Operational. Los eventos de scripts y MSI están en AppLocker > MSI and Script incluso cuando la tecnología que aplica el bloqueo es App Control.
| Evento | Significado |
|---|---|
| 3076 | Auditoría: este archivo se habría bloqueado |
| 3077 | Aplicado: este archivo se bloqueó |
| 3089 | Detalles de firma del archivo de un evento 3076/3077 |
| 3099 | Se activó una directiva |
| 8028 / 8029 | Un script o MSI se habría bloqueado / se bloqueó |
Recoge unas semanas de eventos 3076 del piloto. Puedes generar una directiva complementaria directamente desde el registro de auditoría:
New-CIPolicy -Audit -Level Publisher -Fallback Hash -UserPEs -FilePath .\FromAudit.xmlRevisa ese resultado a mano. Los datos de auditoría de un equipo que ya estaba comprometido, o en el que un usuario ejecutó cualquier descarga, permitirán sin problemas cosas que no quieres.
Paso 6: aplicar, anillo por anillo
Elimina la opción 3 (Set-RuleOption -Option 3 -Delete), convierte y despliega en un primer anillo de dispositivos de TI, luego en usuarios piloto y después en todos. Mantén la directiva de auditoría para los nuevos miembros de cada anillo hasta que sus eventos estén limpios.
Usa directivas complementarias (formato de directivas múltiples, Windows 10 1903+) para que los responsables de las aplicaciones puedan ampliar la directiva base sin tocarla. Una vez estable, firma la directiva base; una directiva firmada no puede eliminarse sin una actualización firmada, lo que impide que un atacante con derechos de administrador simplemente la borre.
Cuándo sigue teniendo sentido AppLocker
- Reglas por usuario en equipos compartidos (cuentas del personal de quiosco frente a administradores).
- Mejoras rápidas en sistemas heredados donde aún no puedes desplegar App Control: como mínimo, bloquear la ejecución desde
%USERPROFILE%,%TEMP%y%APPDATA%para los usuarios estándar.
Si usas AppLocker, recuerda que las reglas predeterminadas permiten todo lo que hay bajo %WINDIR% y %PROGRAMFILES%, y que algunas subcarpetas de C:\Windows (como C:\Windows\Tasks y C:\Windows\Temp) son modificables por los usuarios estándar. Añade reglas de denegación explícitas para ellas o usa reglas de editor en lugar de las rutas predeterminadas. AppLocker requiere el servicio Application Identity (AppIDSvc) en inicio automático; sus eventos están en AppLocker > EXE and DLL: 8003 (auditoría: se bloquearía) y 8004 (bloqueado).
Get-AppLockerPolicy -Effective -Xml > effective.xml
Get-ChildItem C:\Users\Public -Recurse -Filter *.exe | Convert-Path |
Test-AppLockerPolicy -XmlPolicy .\effective.xml -User EveryoneLista de comprobación
- Tecnología elegida: App Control como base, AppLocker solo donde aporte valor
- Directiva base a partir de un ejemplo de Microsoft, más las reglas de bloqueo recomendadas y la lista de bloqueo de controladores
- Instalador administrado configurado para tu herramienta de despliegue
- Modo auditoría en un piloto, eventos 3076 / 8028 revisados durante al menos dos semanas
- Aplicado anillo por anillo; directivas complementarias para los responsables de aplicaciones
- Directiva base firmada una vez estable
- Eventos 3077 reenviados y con alertas
El control de aplicaciones es el control que facilita la mayoría de los demás: obliga a PowerShell a usar el modo de lenguaje restringido, convierte las reglas ASR en una segunda línea en lugar de la primera y transforma «el usuario ejecutó algo» en un evento registrado y bloqueado.
Preguntas frecuentes
¿Está AppLocker en desuso?
AppLocker no está en desuso y sigue recibiendo correcciones de seguridad, pero ya no recibe funciones nuevas. Microsoft recomienda App Control for Business (antes Windows Defender Application Control) para las nuevas implementaciones, y AppLocker como complemento para reglas por usuario o sistemas antiguos.
¿Puedo usar App Control y AppLocker a la vez?
Sí. Cuando se aplican ambos, un archivo debe estar permitido por los dos para ejecutarse. Un patrón habitual es App Control como base para todo el dispositivo más AppLocker para restricciones específicas por usuario en equipos compartidos.
¿Detiene App Control los ataques con PowerShell?
De forma indirecta y eficaz. Cuando se aplica una directiva de App Control, PowerShell se ejecuta en modo de lenguaje restringido (Constrained Language Mode) para los scripts que la directiva no permite, lo que bloquea la mayoría de las herramientas ofensivas de PowerShell mientras los scripts de administración firmados y aprobados conservan el lenguaje completo.
App Control for Business (WDAC) frente a AppLocker