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
- 2. Configurar AppLocker via GPO
- 3. Criar Regras AppLocker
- 4. Gerir AppLocker com PowerShell
- 5. WDAC: Introducao e Arquitectura
- 6. Criar uma Policy WDAC
- 7. Modo Auditoria e Deploy Gradual
- 8. Deploy WDAC via Intune
- 9. Assinaturas e Certificados
- 10. Comparacao Detalhada
- 11. Cenário Prático PME
- 12. Problemas Comuns
- 13. Checklist de Implementação
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):
- Comecar com AppLocker via Intune — bloquear execução de %USERPROFILE%\Downloads e %TEMP%
- Permitir apenas executáveis assinados por editores confiáveis (Microsoft, Google, Mozilla)
- Testar WDAC em modo Auditoria em 5 postos piloto durante 30 dias
- Analisar eventos 3076 (falsos positivos) e adicionar regras de excepção
- Migrar para WDAC Enforce gradualmente, posto a posto
- 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
- Microsoft Entra MFA: Autenticacao Multifactor
- Microsoft Defender para Endpoint em PMEs
- Zero Trust para PMEs: Os 5 Pilares NIST
- AD Security Groups: Gestão com PowerShell
- Ransomware 2026: Backup 3-2-1 Imutável
Baseado na documentação oficial Microsoft sobre App Control for Business (WDAC) e AppLocker. Licenca: CC BY-SA 4.0.
