Tags: AppLocker · WDAC · Application Control · Windows 11 · Segurança · GPO

Por Duarte Spínola · 2 de Julho de 2026

AppLocker e WDAC: Bloquear Aplicações Nao Autorizadas no Windows 11 em 2026

O Application Control é uma das camadas mais eficazes de defesa contra malware e software não autorizado. A Microsoft oferece duas ferramentas complementares: o AppLocker (mais simples, baseado em regras) e o Windows Defender Application Control (WDAC) (mais robusto, baseado em assinaturas e policies CI). Este guia cobre configuração de ambas via GPO, PowerShell e Intune, com base na documentação oficial Microsoft.

Para complementar com restricoes de dispositivo, consulta os artigos sobre Microsoft Entra MFA, Defender para Endpoint e Zero Trust para PMEs.

Conteúdos

1. AppLocker vs WDAC: Qual Escolher

A Microsoft oferece duas tecnologias de Application Control no Windows. Ambas bloqueiam a execução de software não autorizado, mas com abordagens diferentes:

Característica AppLocker WDAC
Complexidade Simples Elevada
Base de regras Caminho, hash, editor Assinaturas, hash, caminho
Kernel-mode enforcement Nao Sim
Bypass por admin local Sim (possível) Nao (protegido pelo kernel)
Suporte Win 10/11 Enterprise Win 10/11 todas as edicoes
Configuracao GPO ou Intune XML policy + Intune/GPO
Modo auditoria Sim Sim
Recomendado para PMEs, bloqueio básico Enterprise, alta segurança

💡 Dica: A Microsoft recomenda WDAC como a tecnologia principal de Application Control. O AppLocker continua suportado mas é considerado uma camada complementar. Para PMEs que comecam, AppLocker é mais simples; para ambientes maduros, WDAC é a escolha correcta.

2. Configurar AppLocker via GPO

O AppLocker requer que o serviço Application Identity esteja activo. Sem este serviço, as regras não são aplicadas.

# Passo 1: Activar o servico Application Identity
# Via PowerShell (Administrador)
Set-Service -Name AppIDSvc -StartupType Automatic
Start-Service AppIDSvc

# Verificar
Get-Service AppIDSvc | Select-Object Name, Status, StartType

# Passo 2: Via GPO (Group Policy Editor)
# Computer Configuration > Policies > Administrative Templates >
# Windows Components > AppLocker
# - Configurar "Enforce AppLocker rules" = Enabled
# - Configurar "Allow AppLocker to enforce rules for DLLs" (opcional)
# Passo 3: Criar regras via GPO
# Computer Configuration > Policies > Administrative Templates >
# Windows Components > AppLocker > Executable Rules

# Criar nova regra:
# 1. Clicar com o botão direito > Create New Rule
# 2. Action: Deny
# 3. Conditions:
#    - Publisher: assinado pela Microsoft (para permitir)
#    - Path: C:\Program Files\ (para permitir instalacoes)
#    - File hash: para ficheiros específicos
# 4. User: Everyone (para negar a todos)
# 5. Clicar Create

# Regra por defeito do AppLocker (permite tudo de Program Files e Windows):
# Path: %System32%\* — Allow — Everyone
# Path: %ProgramFiles%\* — Allow — Everyone
# Path: %ProgramFiles(x86)%\* — Allow — Everyone

3. Criar Regras AppLocker

As regras AppLocker podem ser baseadas em três tipos de condição:

Regras por Publisher (Assinatura Digital)

# Bloquear tudo que NAO esteja assinado por editores confiáveis
New-AppLockerPolicy -XmlPolicy C:\Temp\applocker.xml -RuleCollection Executable `
  -User Everyone -Action Deny -Publisher "CN=Nao Confianca" `
  -Description "Bloquear software não assinado"

# Permitir apenas aplicacoes assinadas pela Microsoft
Set-AppLockerPolicy -XmlPolicy C:\Temp\applocker_msft.xml `
  -RuleCollection Executable `
  -Publisher "Microsoft Corporation" -Action Allow

Regras por Caminho (Path)

# Bloquear execução a partir da pasta Downloads
$rule = New-Object System.Security.AccessControl.RegistryAccessRule(
    "Everyone", "ReadKey", "Deny"
)

# Via PowerShell - criar regra de negação para Downloads
$denyRule = @{
    Action = "Deny"
    User = "Everyone"
    Path = "%USERPROFILE%\Downloads\*"
    Description = "Bloquear execução na pasta Downloads"
}

# Via GPO:
# AppLocker > Executable Rules > New Rule
# Action: Deny
# Condition: Path = %USERPROFILE%\Downloads\*
# User: Everyone

Regras por Hash de Ficheiro

# Bloquear um executável específico por hash
Get-AppLockerFileInformation -Path "C:\suspeito\malware.exe" |
  New-AppLockerRule -Action Deny -User Everyone `
  -Description "Bloquear malware conhecido"

# Listar todos os hashes de uma pasta
Get-ChildItem "C:\Program Files\MyApp\*.exe" |
  Get-AppLockerFileInformation |
  Select-Object Path, Hash

4. Gerir AppLocker com PowerShell

# Listar todas as regras AppLocker activas
Get-AppLockerPolicy -Effective -Xml | Select-Object -ExpandProperty RuleCollection

# Exportar policy actual para XML
Get-AppLockerPolicy -Effective -Xml > C:\Temp\current_applocker.xml

# Testar policy antes de aplicar
Test-AppLockerPolicy -XmlPolicy C:\Temp\applocker.xml `
  -User "empresa\joao" `
  -Path "C:\Program Files\app.exe"

# Verificar eventos AppLocker (bloqueios)
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" -MaxEvents 20 |
  Select-Object TimeCreated, Id, Message |
  Format-Table -Wrap

# Eventos de auditoria (permitidos mas registados)
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" |
  Where-Object { $_.Id -eq 8002 } |
  Select-Object TimeCreated, Message -First 10

5. WDAC: Introducao e Arquitectura

O Windows Defender Application Control (WDAC), anteriormente conhecido como Device Guard, é a tecnologia de Application Control baseada no kernel do Windows. Ao contrário do AppLocker, o WDAC é executado em kernel-mode, tornando-o resistente a bypass por administradores locais.

O WDAC funciona com Code Integrity policies (CI policies) em formato XML. Cada policy define:

  • Que editores (assinaturas digitais) são confiáveis
  • Que caminhos de ficheiros são permitidos
  • Que hashes de ficheiros são permitidos
  • Se o modo é Enforce (bloqueia) ou Audit (regista)

⚠ Aviso: Uma policy WDAC em modo Enforce mal configurada pode bloquear o arranque do Windows. Sempre testar em modo Auditoria primeiro e analisar os logs antes de activar Enforce.

6. Criar uma Policy WDAC

# Passo 1: Instalar o WDAC PowerShell module
Install-Module -Name ConfigCI -Force -Repository PSGallery

# Ou usar o cmdlet nativo (Windows 11 24H2+):
# Os cmdlets WDAC estao disponíveis por defeito

# Passo 2: Criar policy base (permitir Windows e assinaturas Microsoft)
$policyPath = "C:\Temp\wdac_base.xml"

# Usar a policy base recomendada pela Microsoft
Copy-Item "C:\Windows\schemas\CodeIntegrity\ExamplePolicies\AllowMicrosoft.xml" $policyPath

# Ou criar do zero:
New-CIPolicy -Level Publisher -FilePath $policyPath `
  -UserPEs -ScanPath "C:\Program Files"

# Passo 3: Adicionar regras para software de terceiros
$rules = @(
    @{Path="C:\Program Files\Google\Chrome\Application\chrome.exe"; Level="Publisher"},
    @{Path="C:\Program Files\Firefox\firefox.exe"; Level="Publisher"},
    @{Path="C:\Program Files\7-Zip\7z.exe"; Level="Hash"}
)

foreach ($rule in $rules) {
    New-CIPolicy -Level $rule.Level -FilePath $policyPath `
      -ScanPath $rule.Path -UserPEs
}

# Passo 4: Converter para binário (formato que o Windows usa)
ConvertFrom-CIPolicy -XmlFilePath $policyPath `
  -BinaryFilePath "C:\Temp\wdac_base.cip"

7. Modo Auditoria e Deploy Gradual

# Passo 1: Definir policy em modo Auditoria
Set-RuleOption -FilePath "C:\Temp\wdac_base.xml" -Option 3  # Audit Mode

# Passo 2: Converter para binário
ConvertFrom-CIPolicy -XmlFilePath "C:\Temp\wdac_base.xml" `
  -BinaryFilePath "C:\Temp\wdac_audit.cip"

# Passo 3: Aplicar localmente (para testes)
Copy-Item "C:\Temp\wdac_audit.cip" "C:\Windows\System32\CodeIntegrity\WiCiPolicies\wdac_audit.cip"

# Reiniciar para aplicar
Restart-Computer -Force

# Passo 4: Analisar eventos de auditoria (30 dias)
Get-WinEvent -LogName "Microsoft-Windows-CodeIntegrity/Operational" -MaxEvents 100 |
  Where-Object { $_.Id -eq 3076 } |
  Select-Object TimeCreated, @{N="Process";E={$_.Properties[10].Value}}, @{N="Reason";E={$_.Properties[2].Value}} |
  Format-Table -Wrap

# Eventos relevantes:
#   3076 = Auditoria (permitido mas seria bloqueado em Enforce)
#   3077 = Bloqueado (modo Enforce)
#   3089 = Informação sobre policy aplicada

# Passo 5: Após análise, corrigir falsos positivos e mudar para Enforce
Set-RuleOption -FilePath "C:\Temp\wdac_base.xml" -Option 3 -Delete  # Remover Audit Mode

# Adicionar regras para os ficheiros legítimos que foram bloqueados
Merge-CIPolicy -PolicyPaths "C:\Temp\wdac_base.xml","C:\Temp\exceptions.xml" `
  -OutputFilePath "C:\Temp\wdac_final.xml"

# Converter e aplicar
ConvertFrom-CIPolicy -XmlFilePath "C:\Temp\wdac_final.xml" `
  -BinaryFilePath "C:\Temp\wdac_enforce.cip"

8. Deploy WDAC via Intune

# Para deploy via Intune, usar o WDAC policy parser:
# 1. No Intune admin center: Devices > Configuration profiles > Create profile
# 2. Platform: Windows 10 and later
# 3. Profile type: Templates > Custom
# 4. Adicionar OMA-URI:

# OMA-URI: ./Vendor/MSFT/ApplicationControl/Policies/WDAC_Policy
# Data type: String (XML)
# Value: conteúdo do XML da policy WDAC

# Via Microsoft Graph PowerShell:
Connect-MgGraph -Scopes "DeviceManagementConfiguration.ReadWrite.All"

# Criar policy WDAC no Intune
$wdacXml = Get-Content "C:\Temp\wdac_audit.xml" -Raw

$body = @{
    "@odata.type" = "#microsoft.graph.windows10CustomConfiguration"
    displayName = "WDAC Audit Mode Policy"
    description = "Application Control em modo auditoria"
    omaSettings = @(
        @{
            "@odata.type" = "#microsoft.graph.omaSettingString"
            displayName = "WDAC Policy"
            omaUri = "./Vendor/MSFT/ApplicationControl/Policies/WDAC_Policy"
            value = $wdacXml
            isEncrypted = $true
        }
    )
} | ConvertTo-Json -Depth 5

Invoke-MgGraphRequest -Method POST `
  -Uri "https://graph.microsoft.com/beta/deviceManagement/deviceConfigurations" `
  -Body $body

9. Assinaturas e Certificados

O WDAC pode assinar policies com certificados, garantindo que apenas policies assinadas pelo administrador são aplicadas:

# Assinar uma policy WDAC com certificado
$cert = Get-ChildItem -Path Cert:\CurrentUser\My |
  Where-Object { $_.Subject -match "WDAC Code Signing" }

Set-HVCIOptions -Enabled -DllRules -FilePath "C:\Temp\wdac_final.xml"

# Assinar a policy binária
SignTool sign /fd sha256 /sha1 $cert.Thumbprint `
  /p7 "C:\Temp\wdac_signed.p7" `
  /p7co 1.3.6.1.4.1.311.79.1 `
  "C:\Temp\wdac_final.cip"

# Verificar assinatura
SignTool verify /p7 "C:\Temp\wdac_signed.p7" `
  /p7co 1.3.6.1.4.1.311.79.1

10. Comparacao Detalhada

Característica AppLocker WDAC
Kernel-mode Nao Sim
Resistente a bypass admin Nao Sim
Edicoes suportadas Enterprise apenas Todas (Pro, Enterprise)
Regras por assinatura Sim Sim (mais granular)
Regras por caminho Sim Sim
Regras por hash Sim Sim
Modo auditoria Sim Sim
Deploy via Intune Sim Sim (OMA-URI)
Suporte packed apps (MSIX) Limitado Sim
Dificuldade configuração Baixa Alta

11. Cenário Prático PME

Para uma PME com 30 postos Windows 11 Pro, sem domínio AD (apenas Entra ID + Intune):

  1. Comecar com AppLocker via Intune — bloquear execução de %USERPROFILE%\Downloads e %TEMP%
  2. Permitir apenas executáveis assinados por editores confiáveis (Microsoft, Google, Mozilla)
  3. Testar WDAC em modo Auditoria em 5 postos piloto durante 30 dias
  4. Analisar eventos 3076 (falsos positivos) e adicionar regras de excepção
  5. Migrar para WDAC Enforce gradualmente, posto a posto
  6. Manter AppLocker como camada complementar (defesa em profundidade)

12. Problemas Comuns

Problema Causa Solução
Regras não aplicam Servico AppIDSvc parado Iniciar e definir Automatic
WDAC bloqueia tudo Policy em Enforce sem testar Mudar para Audit, analisar logs
Windows não arranca WDAC bloqueou drivers críticos Safe Mode, remover policy CI
Falsos positivos frequentes Regras demasiado restritivas Usar Publisher em vez de Hash
Actualizacoes bloqueadas Updater não assinado Adicionar excepção para o updater

13. Checklist de Implementação

AppLocker

  • ☐ Activar servico Application Identity (AppIDSvc)
  • ☐ Criar regra por defeito (permitir Program Files e Windows)
  • ☐ Bloquear execução em Downloads e Temp
  • ☐ Definir regras por Publisher para software confiável
  • ☐ Testar em modo Auditoria durante 7 dias
  • ☐ Analisar eventos AppLocker
  • ☐ Activar Enforce

WDAC

  • ☐ Criar policy base (AllowMicrosoft)
  • ☐ Adicionar regras para software de terceiros
  • ☐ Definir modo Auditoria
  • ☐ Deploy em 5 postos piloto
  • ☐ Analisar eventos 3076 durante 30 dias
  • ☐ Corrigir falsos positivos
  • ☐ Migrar para Enforce gradualmente
  • ☐ Assinar policy com certificado
  • ☐ Deploy via Intune para todos os postos
  • ☐ Monitorizar eventos 3077 (bloqueios)
  • ☐ Documentar processo de excepcão de software

Artigos Relacionados

Baseado na documentação oficial Microsoft sobre App Control for Business (WDAC) e AppLocker. Licenca: CC BY-SA 4.0.

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário