Saltar al contenido

Hardening de Windows: ASR rules, AppLocker y WDAC contra la ejecución no deseada

    Hardening de Windows:

    ASR rules, AppLocker y WDAC contra la ejecución no deseada

    Serie Blue Team / Windows  |  unfantasmaenelsistema.com

    La mayoría de los compromisos de un puesto Windows no empiezan con un exploit sofisticado, sino con algo que el usuario ejecuta sin querer: una macro dentro de un documento, un instalador falso, un acceso directo que en realidad lanza PowerShell. A partir de ahí la cadena es casi siempre la misma: un binario legítimo del sistema (rundll32, mshta, regsvr32) descarga y ejecuta la siguiente fase. Firmar reglas de detección para cada paso es agotador. Impedir que esos pasos se puedan dar es mucho más eficaz.

    Windows trae de serie tres controles que atacan justo ese problema, cada uno con un coste de despliegue distinto: las reglas de reducción de superficie de ataque (ASR), AppLocker y Windows Defender Application Control (WDAC, ahora «App Control for Business»). Este artículo explica qué hace cada uno, en qué orden conviene adoptarlos y cómo desplegarlos sin dejar la empresa sin poder trabajar el lunes por la mañana.

    Qué aprenderás en este artículo

    Por qué el allowlisting (lista de permitidos) frena cadenas que la detección no ve · Qué bloquea cada regla ASR y con qué Event ID lo registra · Cómo funciona AppLocker: reglas por editor, ruta y hash, y sus bypass conocidos · Qué aporta WDAC/App Control frente a AppLocker y por qué su curva es más dura · La estrategia que funciona: auditoría primero, medir, y solo después forzar

    1. El problema: LOLbins y por qué el allowlisting es la respuesta

    Un LOLbin (Living Off the Land binary) es un ejecutable que ya viene firmado por Microsoft y presente en cualquier Windows, pero que puede usarse para algo distinto de su función original: descargar un fichero, ejecutar código, saltarse una restricción. rundll32.exe puede ejecutar una función exportada de una DLL arbitraria; mshta.exe interpreta HTML con VBScript o JScript embebido; regsvr32.exe puede cargar un scriptlet remoto con la técnica conocida como «Squiblydoo». Ninguno es malware, así que un antivirus basado en firmas no los va a bloquear por sí mismos.

    La detección por comportamiento ayuda, pero siempre va por detrás: alguien tiene que haber visto antes esa combinación concreta de proceso padre, proceso hijo y argumentos. El allowlisting invierte el planteamiento: en lugar de enumerar lo que está prohibido —una lista infinita y siempre incompleta— se define lo que está permitido ejecutar, y todo lo demás se deniega por defecto. En un parque de equipos corporativos, donde el software legítimo es un conjunto conocido y estable, esa lista es abarcable.

    El allowlisting no sustituye al antivirus ni al EDR

    Un binario permitido que resulta vulnerable sigue siendo explotable: el control de aplicaciones no mira lo que el proceso hace después · Los tres controles de este artículo se complementan con Defender Antivirus, Sysmon y un EDR; no son una alternativa a ellos · El objetivo es reducir superficie: menos cosas que pueden ejecutarse, menos que vigilar

    2. ASR rules: el control de menor coste y mayor retorno

    Las reglas de reducción de superficie de ataque son parte de Microsoft Defender y funcionan como bloqueos puntuales de comportamientos concretos, no como una lista de aplicaciones. Se activan una a una, cada una en modo auditoría (solo registra) o bloqueo (impide y registra). Requieren que Defender Antivirus sea el motor activo y con protección en tiempo real. Se despliegan por GPO, Intune, PowerShell o Configuration Manager.

    Su gran ventaja es que no necesitan un inventario previo de software: cada regla ataca una técnica que casi ninguna aplicación legítima usa. Su límite es que son un catálogo cerrado —no puedes escribir las tuyas— y que algunas generan falsos positivos con software de nicho, por lo que el modo auditoría antes de forzar no es opcional.

    2.1 Las reglas que más cadenas cortan

    Regla ASRQué cortaNotas de despliegue
    Bloquear que las apps de Office creen procesos hijoEl clásico Word/Excel -> cmd/powershell/wscript tras abrir una macroFalsos positivos raros; de las primeras a forzar
    Bloquear la creación de contenido ejecutable por OfficeQue una macro deje un .exe o .dll en discoBajo impacto; segura para forzar pronto
    Bloquear la inyección de código de Office en otros procesosMacros que inyectan en un proceso ajeno para camuflarseBajo impacto
    Bloquear la ejecución de contenido descargado por JavaScript/VBScriptEl script del navegador o del correo que lanza el siguiente binarioVigilar instaladores legítimos que usan scripts
    Bloquear ejecutables en correo y webmail (clientes de correo)El adjunto .exe/.scr/.js abierto directamente desde OutlookImpacto medio si hay flujos de trabajo con adjuntos ejecutables
    Bloquear el robo de credenciales de LSASSEl volcado de lsass.exe para sacar hashes y ticketsPuede chocar con herramientas de backup/EDR mal integradas; auditar primero
    Bloquear procesos de USB no firmados o no confiablesEl ejecutable que se autolanza desde un pendriveRevisar herramientas portátiles del equipo de IT
    Bloquear el uso de herramientas del sistema copiadas/suplantadas (PSExec y WMI)Movimiento lateral con PsExec y creación remota de procesos por WMIAlto impacto si la administración usa PsExec; planificar alternativa
    Bloquear la persistencia por suscripción de eventos WMIEl WMI event consumer que relanza el implante en cada arranqueBajo impacto; segura
    Uso avanzado de protección contra ransomwareCifrado masivo por procesos no confiables (heurística + nube)Requiere protección en la nube de Defender activada

    2.2 Cómo se registra y se mide

    Cada disparo de una regla ASR queda en el canal Microsoft-Windows-Windows Defender/Operational. Los Event ID que interesan:

    Event IDSignificado
    1121Una regla ASR en modo bloqueo ha impedido una operación
    1122Una regla ASR en modo auditoría habría bloqueado una operación (no la impide)
    5007Cambio de configuración de Defender (útil para detectar quién toca las reglas)
    1120 / 1125 / 1126Variantes relacionadas con ASR y con la protección de carpetas controladas

    El flujo correcto es: activar todas las reglas candidatas en auditoría, dejarlas una o dos semanas, recoger los 1122 con el nombre de regla y el proceso implicado, decidir regla por regla si el ruido es asumible, crear exclusiones muy concretas para el software legítimo afectado y solo entonces pasar esas reglas a bloqueo.

    # Ver el estado actual de las reglas ASR (ID y accion: 0=off 1=block 2=audit 6=warn)
    Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
    Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions
     
    # Poner una regla en AUDIToria (ejemplo: hijos de Office)
    Set-MpPreference -AttackSurfaceReductionRules_Ids d4f940ab-401b-4efc-aadc-ad5f3c50688a `
                     -AttackSurfaceReductionRules_Actions AuditMode
     
    # Recoger lo que se HABRIA bloqueado en los ultimos 7 dias (Event ID 1122)
    Get-WinEvent -FilterHashtable @{
      LogName='Microsoft-Windows-Windows Defender/Operational'; Id=1121,1122;
      StartTime=(Get-Date).AddDays(-7) } |
      Select-Object TimeCreated, Id, Message | Format-List

    Recurso para no partir de cero

    El proyecto ASR Rules de Palantir y la guía de Microsoft publican el mapa regla -> GUID y el orden de despliegue recomendado por impacto; empieza por las de ‘bajo impacto’ y deja LSASS y PsExec/WMI para una segunda fase con exclusiones ya medidas

    3. AppLocker: allowlisting clásico y sus grietas

    AppLocker es el mecanismo de control de aplicaciones que Windows arrastra desde 2009. Define reglas sobre cinco colecciones —ejecutables, instaladores (MSI), scripts, DLL y aplicaciones empaquetadas— y se aplica a usuarios o grupos. Se gestiona por GPO y depende del servicio Application Identity (AppIDSvc), que debe estar en arranque automático.

    3.1 Los tres tipos de regla

    Tipo de reglaEn qué se basaVentaja / inconveniente
    Publisher (editor)La firma digital del binario: editor, nombre de producto, versiónLa más robusta y la que menos mantenimiento pide; solo sirve si el software está firmado
    Path (ruta)La ubicación del fichero en discoFácil de crear; peligrosa si la carpeta permitida es escribible por el usuario
    File hashEl hash criptográfico del fichero concretoInmune a suplantación; hay que regenerarla en cada actualización del software

    El planteamiento recomendado por Microsoft parte de las reglas por defecto: permitir todo lo que esté en \Windows y \Program Files (rutas que un usuario estándar no puede modificar) más lo que necesite cada aplicación de negocio, preferiblemente por editor. Todo lo que quede fuera —el perfil del usuario, %TEMP%, descargas, unidades USB— deja de poder ejecutarse.

    3.2 Modo auditoría primero, siempre

    Como con ASR, AppLocker tiene un modo «solo auditar» por colección. En auditoría, cada ejecución que se habría bloqueado genera un evento en Microsoft-Windows-AppLocker/EXE and DLL (y los canales hermanos MSI and Script, etc.):

    Event IDCanal AppLockerSignificado
    8002EXE and DLLPermitido (se ejecutó y cumple una regla)
    8003EXE and DLLAuditoría: se habría bloqueado, pero se permitió por estar en modo auditar
    8004EXE and DLLBloqueado (modo forzado)
    8006 / 8007MSI and ScriptEquivalentes 8003 / 8004 para instaladores y scripts
    # Generar un juego de reglas base a partir de lo instalado en un equipo de referencia
    Get-AppLockerFileInformation -Directory C:\Windows -Recurse -FileType Exe,Script |
      New-AppLockerPolicy -RuleType Publisher,Hash -User Everyone `
                          -Xml -Optimize | Out-File .\base-applocker.xml
     
    # Ver que se HABRIA bloqueado (Event ID 8003) en la ultima semana
    Get-WinEvent -FilterHashtable @{
      LogName='Microsoft-Windows-AppLocker/EXE and DLL'; Id=8003;
      StartTime=(Get-Date).AddDays(-7) } |
      Select-Object TimeCreated,
        @{n='File'; e={$_.Properties[10].Value}},
        @{n='User'; e={$_.Properties[7].Value}} | Sort-Object File -Unique

    3.3 Bypass conocidos: por qué AppLocker no es el final del camino

    • Rutas escribibles dentro de \Windows. Carpetas como \Windows\Tasks, \Windows\System32\spool\drivers\color o \Windows\Temp son escribibles por un usuario estándar y quedan permitidas por la regla por defecto de \Windows. Hay que excluirlas explícitamente
    • LOLbins que ejecutan código sin ser el binario. Si rundll32, mshta, regsvr32, InstallUtil o msbuild están permitidos (lo están por la regla de \Windows), pueden interpretar código que AppLocker no evalúa como «fichero a ejecutar». La lista de LOLBAS documenta decenas
    • DLL sin aplicar la colección de DLL. Si no se activa el control de DLL (está desactivado por defecto por su coste de rendimiento y mantenimiento), una aplicación permitida puede cargar una DLL arbitraria del perfil del usuario
    • Scripts en intérpretes no cubiertos. La colección Script cubre .ps1, .bat, .cmd, .vbs y .js, pero no un intérprete de terceros (Python, AutoIt) que se haya permitido como ejecutable

    La contramedida real a los LOLbins bajo AppLocker

    Bloquear explícitamente por ruta los binarios de doble uso que la organización no necesita (la lista de Microsoft ‘Recommended block rules’ incluye una plantilla) · Combinar AppLocker con las reglas ASR de la sección 2, que sí miran el comportamiento · Si se necesita un allowlisting realmente resistente a bypass, el control adecuado es WDAC

    4. WDAC / App Control for Business: el control fuerte

    WDAC (rebautizado App Control for Business en Windows 11) es la evolución del concepto. A diferencia de AppLocker, no es una directiva que se aplica a usuarios, sino una política de integridad de código que se evalúa en el arranque y afecta a todo el sistema, incluido el kernel y las DLL, sin coste extra de configuración para cubrirlas. Puede anclarse al hardware con arranque seguro para que ni un administrador local pueda desactivarla sin más.

    4.1 En qué se apoya para decidir

    • Firma y editor, igual que AppLocker pero de forma más granular (por EKU, por versión mínima)
    • Atributos del fichero y catálogos firmados que la propia organización genera para software sin firmar
    • Identidad de la aplicación empaquetada y reputación mediante el Intelligent Security Graph (ISG), que permite «confiar en lo que Microsoft considera de buena reputación» como punto de partida
    • Reglas de ruta, admitidas pero desaconsejadas por los mismos motivos que en AppLocker

    4.2 Por qué su curva de despliegue es más dura

    WDAC deniega por defecto de forma mucho más estricta, así que un modelo incompleto deja el equipo sin arrancar aplicaciones —o sin arrancar—. El proceso realista es: partir de una de las plantillas base de Microsoft (por ejemplo la política «Windows works» o la recomendada para bloquear los binarios de doble uso), desplegarla en modo auditoría (la política lleva la opción «Audit Mode»), recoger los eventos de Microsoft-Windows-CodeIntegrity/Operational, y usar herramientas como el WDAC Wizard o `ConvertFrom-CIPolicy` para ir ampliando el modelo con lo que la organización realmente usa antes de quitar el modo auditoría.

    Event IDCanalSignificado
    3076CodeIntegrity/OperationalAuditoría: un binario se habría bloqueado por la política de App Control
    3077CodeIntegrity/OperationalBloqueo efectivo de un binario en modo forzado
    3089CodeIntegrity/OperationalInformación de firma asociada al evento anterior (útil para crear la regla)
    3099CodeIntegrity/OperationalSe ha cargado / activado una política de App Control

    AppLocker y WDAC pueden convivir

    Una estrategia habitual es WDAC como base de integridad de código a nivel de máquina y AppLocker por encima para reglas por usuario o por grupo que WDAC no expresa. Microsoft documenta esta combinación · Si solo puedes mantener uno bien, es mejor un WDAC en auditoría permanente que un AppLocker forzado pero lleno de agujeros por rutas escribibles

    5. Cómo elegir y en qué orden desplegar

    ControlCoste de despliegueResistencia a bypassCuándo es la elección
    ASR rulesBajoMedia (catálogo cerrado, no exhaustivo)Siempre: es lo primero, aporta mucho con poco
    AppLockerMedioMedia-baja (rutas escribibles, LOLbins, DLL off)Parque con software estable y sin capacidad para operar WDAC
    WDAC / App ControlAltoAlta (nivel máquina, kernel y DLL incluidos)Requisito de cumplimiento fuerte o endpoints de alto valor

    Para casi cualquier organización el camino sensato es incremental:

    • Fase 0 — base. Usuarios sin permisos de administrador local, Defender Antivirus activo con protección en la nube, y el registro de eventos dimensionado y reenviado (ver el artículo de logs de eventos de Windows)
    • Fase 1 — ASR en auditoría. Activar todas las reglas candidatas en modo auditoría, medir dos semanas, crear exclusiones concretas y forzar primero las de bajo impacto
    • Fase 2 — AppLocker en auditoría. Generar reglas base por editor sobre un equipo de referencia, desplegar en auditoría, revisar los 8003, añadir el bloqueo explícito de LOLbins y de rutas escribibles, y forzar por colecciones (EXE y MSI antes que Script)
    • Fase 3 — WDAC si procede. En los endpoints que lo justifiquen, plantilla base + auditoría prolongada + ampliación guiada con el WDAC Wizard antes de forzar
    • Siempre. Todo cambio pasa por auditoría antes que por bloqueo; nada se fuerza el mismo día que se diseña

    Pruébalo en un anillo aislado, nunca directo a producción

    Un AppLocker o un WDAC mal calibrado puede impedir el inicio de sesión, el arranque de aplicaciones críticas o el propio arranque del equipo · Despliega por anillos: laboratorio -> un grupo piloto pequeño -> departamentos -> toda la organización, con marcha atrás por GPO preparada · Ten una vía de recuperación probada (modo seguro, GPO de reversión, política WDAC de emergencia firmada) antes de forzar el primer equipo · Aplica y prueba estos controles solo en sistemas de tu organización o de tu laboratorio

    Referencias

    learn.microsoft.com/defender-endpoint/attack-surface-reduction-rules-reference — Catálogo de reglas ASR y sus GUID · learn.microsoft.com/windows/security/application-security/application-control — App Control (WDAC) y AppLocker · learn.microsoft.com/windows/security/application-security/application-control/windows-defender-application-control/design/microsoft-recommended-block-rules — Bloqueo de binarios de doble uso · lolbas-project.github.io — Catálogo de binarios y scripts del sistema abusables (LOLBAS) · github.com/palantir/exploitguard — Guía de despliegue de ASR por fases · github.com/MicrosoftDocs/WDAC-Toolkit — WDAC Wizard

    Conclusión

    Detectar cada eslabón de una cadena de macro a LOLbin es un trabajo sin fin. Impedir que esos eslabones se puedan encadenar —que Office no lance procesos hijo, que no se ejecute nada desde el perfil del usuario, que los binarios de doble uso estén bloqueados— corta la mayoría de los ataques de puesto antes de que el EDR tenga que opinar.

    Los tres controles están incluidos en Windows y se despliegan de menos a más esfuerzo: ASR rules el primer día, AppLocker cuando el inventario de software es estable, y WDAC donde el riesgo lo justifica. La regla de oro es la misma para los tres: auditoría primero, medición honesta del ruido, exclusiones quirúrgicas y solo entonces el modo bloqueo, siempre por anillos y siempre con una vía de vuelta.

    unfantasmaenelsistema.com | Seguridad, sistemas y todo lo que no debería funcionar (pero funciona)

    Resumen de privacidad

    Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.