Skip to content

AppLocker

Contrôle des applications autorisées à s'exécuter via AppLocker et WDAC.

Concepts

APPLOCKER VS WDAC
══════════════════════════════════════════════════════════

AppLocker :
• Plus simple à configurer
• Règles par utilisateur/groupe possibles
• Nécessite le service "Application Identity"
• Windows Enterprise/Education requis
• Peut être contourné par admin local

WDAC (Windows Defender Application Control) :
• Plus sécurisé (kernel-level)
• Règles machine uniquement
• Intégré avec Credential Guard
• Windows 10/11 toutes éditions
• Résiste aux admins locaux

Configuration AppLocker

Activer le Service

# Démarrer le service Application Identity (obligatoire)
Set-Service -Name AppIDSvc -StartupType Automatic
Start-Service -Name AppIDSvc

# Vérifier
Get-Service AppIDSvc

Créer des Règles par Défaut

# Créer les règles par défaut (recommandé comme base)
# Via GPO ou localement :

# Via PowerShell local
Set-AppLockerPolicy -XMLPolicy (
    New-AppLockerPolicy -RuleType Exe, Msi, Script -User Everyone -RuleNamePrefix "Default"
).ToXml() -Merge

# Les règles par défaut autorisent :
# - Tout dans C:\Windows\*
# - Tout dans C:\Program Files\*
# - Tout pour les Admins

Règles par Type

# Types de règles :
# - Executable (*.exe, *.com)
# - Windows Installer (*.msi, *.msp, *.mst)
# - Script (*.ps1, *.bat, *.cmd, *.vbs, *.js)
# - Packaged Apps (APPX)
# - DLL (désactivé par défaut, impact perf)

# Exemple : Bloquer les exécutables des profils utilisateur
$rule = New-AppLockerPolicy -RuleType Path -RuleNamePrefix "Block" `
    -Path "%USERPROFILE%\*" `
    -User "Everyone" `
    -Action Deny

# Exemple : Autoriser une application signée (Publisher)
$rule = New-AppLockerPolicy -RuleType Publisher `
    -PublisherName "O=MICROSOFT CORPORATION" `
    -User "Everyone" `
    -Action Allow

# Exemple : Autoriser par hash de fichier
$hash = Get-AppLockerFileInformation -Path "C:\Apps\MyApp.exe"
$rule = New-AppLockerPolicy -RuleType FileHash -FileInformation $hash -User "Everyone" -Action Allow

Déploiement via GPO

Emplacement

Computer Configuration > Policies > Windows Settings >
Security Settings > Application Control Policies > AppLocker

Configuration Recommandée

1. Executable Rules :
   - [Allow] %WINDIR%\* (Everyone)
   - [Allow] %PROGRAMFILES%\* (Everyone)
   - [Allow] * (BUILTIN\Administrators)
   - [Deny] %USERPROFILE%\* (Everyone)  # Bloquer exécution depuis profils

2. Script Rules :
   - [Allow] %WINDIR%\* (Everyone)
   - [Allow] %PROGRAMFILES%\* (Everyone)
   - [Allow] * (BUILTIN\Administrators)

3. Windows Installer Rules :
   - [Allow] * (BUILTIN\Administrators)  # Seuls les admins peuvent installer

4. Packaged App Rules :
   - [Allow] * (Everyone)  # Ou spécifique si Store restreint

Mode Audit

# Toujours commencer en mode Audit !
# GPO > AppLocker > Executable Rules > Properties
# Enforcement : Audit only

# Voir les événements d'audit
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" -MaxEvents 100 |
    Where-Object { $_.Id -eq 8003 }  # Would be blocked

# Analyser les blocages potentiels
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" |
    Where-Object { $_.Id -in 8003,8004 } |
    Select-Object TimeCreated, @{N='File';E={$_.Properties[10].Value}} |
    Group-Object File |
    Sort-Object Count -Descending

Règles Avancées

Exceptions

# Règle avec exception
# "Bloquer tout dans %USERPROFILE% SAUF %USERPROFILE%\AppData\Local\Microsoft\*"

# Via GPO : créer la règle Allow avec le chemin d'exception

Conditions de Publisher

PUBLISHER RULE CONDITIONS
══════════════════════════════════════════════════════════

Publisher:        O=MICROSOFT CORPORATION
Product name:     MICROSOFT® WINDOWS® OPERATING SYSTEM
File name:        CMD.EXE
File version:     10.0.0.0 and above

Plus le curseur est haut, plus la règle est spécifique.

Règles DLL (Performance!)

# Activer les règles DLL (attention aux performances)
# GPO > AppLocker > Properties > Advanced > Enable DLL rule collection

# ⚠️ ATTENTION : Impact important sur les performances
# À utiliser uniquement si nécessaire (compliance, etc.)

Gestion des Règles

# Exporter les règles
Get-AppLockerPolicy -Effective -Xml | Out-File "C:\AppLocker-Policy.xml"

# Importer des règles
Set-AppLockerPolicy -XmlPolicy (Get-Content "C:\AppLocker-Policy.xml") -Merge

# Voir les règles effectives
Get-AppLockerPolicy -Effective | Select-Object -ExpandProperty RuleCollections

# Tester si un fichier serait autorisé
Test-AppLockerPolicy -Path "C:\test\app.exe" -User "CORP\jdoe"

# Supprimer toutes les règles locales
Set-AppLockerPolicy -XmlPolicy "<AppLockerPolicy Version=\"1\"/>"

Troubleshooting

# Event logs AppLocker
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL"
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/MSI and Script"
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/Packaged app-Execution"

# Event IDs importants :
# 8002 - Fichier autorisé
# 8003 - Fichier serait bloqué (audit)
# 8004 - Fichier bloqué (enforce)
# 8006 - Policy appliquée
# 8007 - Erreur de politique

# Vérifier le service
Get-Service AppIDSvc

# Forcer le rafraîchissement de la politique
gpupdate /force

WDAC (Alternative Moderne)

# Créer une politique WDAC depuis une machine de référence
New-CIPolicy -Level Publisher -FilePath "C:\WDAC\BasePolicy.xml" -UserPEs

# Convertir en binaire
ConvertFrom-CIPolicy -XmlFilePath "C:\WDAC\BasePolicy.xml" `
    -BinaryFilePath "C:\Windows\System32\CodeIntegrity\SIPolicy.p7b"

# Mode Audit
Set-RuleOption -FilePath "C:\WDAC\BasePolicy.xml" -Option 3

# Déployer via GPO
# Computer Configuration > Administrative Templates > System > Device Guard
# Deploy Windows Defender Application Control

Bonnes Pratiques

Checklist AppLocker:
  Préparation:
    - [ ] Inventaire des applications légitimes
    - [ ] Tester en mode Audit (2-4 semaines minimum)
    - [ ] Analyser les logs d'audit
    - [ ] Créer les exceptions nécessaires

  Règles:
    - [ ] Règles par défaut comme base
    - [ ] Publisher rules si possible (plus maintenable)
    - [ ] Hash rules pour apps non signées
    - [ ] Bloquer %USERPROFILE% pour les exécutables

  Déploiement:
    - [ ] Pilote sur groupe restreint
    - [ ] Communication aux utilisateurs
    - [ ] Procédure d'exception documentée
    - [ ] Monitoring continu

Voir aussi :