DIDOES ITEndpoint Engineering
← Tous les articles

Troubleshooting / Endpoint Lab

Troubleshooting App Control : analyser un blocage WDAC sans désactiver la protection

Face à une application bloquée, désactiver App Control supprime à la fois la protection et la preuve. Je conserve le blocage, j’identifie la policy qui a pris la décision et je réduis l’exception au binaire, à la signature et au scénario réellement nécessaires.

01

Résumé opérationnel

Je relève l’heure, le chemin, l’utilisateur, le parent process et le résultat visible. Puis je liste les politiques actives avec CiTool afin de ne pas analyser uniquement la policy que je pensais avoir déployée.

Les événements CodeIntegrity Operational indiquent le fichier, la signature, le statut et la policy concernée. AppLocker MSI and Script ou EXE and DLL aide pour scripts, installateurs et Managed Installer.

La correction n’est pas automatiquement une règle Allow. Elle peut être une signature corrigée, une chaîne de mise à jour stabilisée, une policy supplémentaire, une règle de déni ajustée ou une application remplacée.

Je relève l’heure, le chemin, l’utilisateur, le parent process et le résultat visible. Puis je liste les politiques actives avec CiTool afin de ne pas analyser uniquement la policy que je pensais avoir déployée.
02

Symptôme, contexte et périmètre de l’incident

Je reproduis le lancement avec l’utilisateur et le chemin d’origine. Copier le binaire dans un autre répertoire, lancer en administrateur ou utiliser un shell différent peut changer la règle évaluée et masquer la cause.

CiTool -lp liste les politiques actives, leur friendly name, PolicyID, version et mode. Je recherche les politiques inbox, base et supplemental ainsi que les anciennes versions encore présentes.

Le canal CodeIntegrity Operational fournit les événements d’audit et de blocage des exécutables, DLL et drivers. Je filtre autour de l’heure exacte puis conserve le message complet, le hash et les informations de signature.

  • App Control, WDAC, Troubleshooting, CodeIntegrity
  • Endpoint Lab — Symptom, Policies, Decision, Fix
  • heure et scénario de reproduction, accès aux journaux Code Integrity, CiTool et CiDiag disponibles
03

Questions à résoudre et méthode de diagnostic

Pour Troubleshooting App Control et WDAC, l’enquête suit le parcours Symptom → Policies → Decision → Fix. L’étape utile n’est pas celle qui affiche le dernier message: c’est la première dont le résultat ne correspond plus au fonctionnement attendu.

Les premiers contrôles portent sur Reproduire sans changer le contexte, Lister toutes les policies actives et Exporter CodeIntegrity et AppLocker. Ils permettent de dater le problème et de séparer un défaut de ciblage, de transport ou d’exécution avant d’envisager une correction.

Les symptômes « Aucun événement visible, EXE autorisé, app échoue et Publisher rule inactive » peuvent se ressembler à l’écran tout en provenant de causes différentes. Chaque branche de diagnostic associe donc un signal, une preuve et une action de correction précise.

  • Reproduire sans changer le contexte.
  • Lister toutes les policies actives.
  • Exporter CodeIntegrity et AppLocker.
04

Cartographie du flux à diagnostiquer

Je reproduis le lancement avec l’utilisateur et le chemin d’origine. Copier le binaire dans un autre répertoire, lancer en administrateur ou utiliser un shell différent peut changer la règle évaluée et masquer la cause.

CiTool -lp liste les politiques actives, leur friendly name, PolicyID, version et mode. Je recherche les politiques inbox, base et supplemental ainsi que les anciennes versions encore présentes.

Le canal CodeIntegrity Operational fournit les événements d’audit et de blocage des exécutables, DLL et drivers. Je filtre autour de l’heure exacte puis conserve le message complet, le hash et les informations de signature.

FLUXChaîne fonctionnelle — Troubleshooting App Control et WDAC
  1. SymptomCommande et contexte exacts du blocage.
  2. PoliciesCiTool liste les PolicyID actives.
  3. DecisionCode Integrity expose règle et signature.
  4. FixException minimale, test Audit puis Enforced.

Cette chaîne situe les preuves à rapprocher pour Troubleshooting App Control et WDAC. Le résultat d’une étape ne permet pas de déduire celui de la suivante.

05

État initial et prérequis de collecte

L’état initial de Troubleshooting App Control et WDAC doit couvrir heure et scénario de reproduction, accès aux journaux Code Integrity, CiTool et CiDiag disponibles, XML source versionné. Cette photographie est prise avant de relancer un traitement ou de modifier une affectation.

Les couches Symptom, Policies, Decision, Fix sont contrôlées séparément. Un prérequis absent devient alors une cause identifiable, au lieu d’être noyé dans les effets des essais suivants.

  • heure et scénario de reproduction
  • accès aux journaux Code Integrity
  • CiTool et CiDiag disponibles
  • XML source versionné
  • propriétaire applicatif
  • poste laboratoire équivalent
  • rollback hors ligne testé
06

Collecte des preuves : journaux, registre et états

La chronologie de Troubleshooting App Control et WDAC relie Symptom, Policies, Decision, Fix. Les heures et identifiants communs permettent de savoir si les états appartiennent à la même tentative.

La collecte commence par Reproduire sans changer le contexte. Lister toutes les policies actives. Exporter CodeIntegrity et AppLocker. Identifier fichier, signature et PolicyID. Ces contrôles conservent l’état qui explique le symptôme avant une nouvelle évaluation.

Les résultats sont lus avec les causes « Mauvais canal ou heure », « DLL ou child process bloqué », « Signature/niveau différents » en tête, sans déduire une correction d’un code ou d’un statut isolé.

  • Reproduire sans changer le contexte.
  • Lister toutes les policies actives.
  • Exporter CodeIntegrity et AppLocker.
  • Identifier fichier, signature et PolicyID.
  • Créer la règle minimale en copie
  • Tester Audit puis Enforced
  • Valider l’application et le rollback
MATRICELecture structurée des preuves — Troubleshooting App Control et WDAC
CoucheQuestionPreuveDécision
CiblageLe poste devait-il recevoir la configuration?Groupe, filtre, licence et affectationCorriger le ciblage avant le client
TransportLa demande a-t-elle atteint sa destination?Check-in, événement, request-id ou téléchargementTraiter identité, réseau ou service
TraitementLe composant a-t-il évalué la demande?Journal, état par paramètre ou résultat APICorriger la valeur ou le composant
RésultatL’objectif final est-il atteint?Contrôle fonctionnel et rapport corréléValider ou maintenir NO-GO
07

Investigation pas à pas

L’investigation suit l’ordre Symptom → Policies → Decision → Fix. La première divergence confirmée détermine la branche suivante et évite de multiplier les symptômes secondaires.

Pour Troubleshooting App Control et WDAC, les contrôles « Reproduire et horodater le symptôme », « Contrôler la première couche », « Corréler les preuves » précisent à la fois l’emplacement, le résultat attendu et la vérification à effectuer.

PROCÉDUREParcours d’investigation — Troubleshooting App Control et WDAC
  1. 01Reproduire et horodater le symptôme
    Emplacement
    Symptom — App Control
    Commande / configuration
    Reproduire sans changer le contexte.
    Résultat attendu
    Lister toutes les policies actives.
    Vérification
    Exporter CodeIntegrity et AppLocker.
    Impact
    Lecture seule.
    Retour arrière
    Aucun.
  2. 02Contrôler la première couche
    Emplacement
    Policies — WDAC
    Commande / configuration
    Lister toutes les policies actives.
    Résultat attendu
    Exporter CodeIntegrity et AppLocker.
    Vérification
    Identifier fichier, signature et PolicyID.
    Impact
    Impact limité au pilote.
    Retour arrière
    Retirer l’affectation et restaurer l’état précédent.
  3. 03Corréler les preuves
    Emplacement
    Decision — Troubleshooting
    Commande / configuration
    Exporter CodeIntegrity et AppLocker.
    Résultat attendu
    Identifier fichier, signature et PolicyID.
    Vérification
    Créer la règle minimale en copie
    Impact
    Collecte de preuves minimisées.
    Retour arrière
    Aucun pour la collecte.
  4. 04Tester la correction ciblée
    Emplacement
    Fix — CodeIntegrity
    Commande / configuration
    Identifier fichier, signature et PolicyID.
    Résultat attendu
    Créer la règle minimale en copie
    Vérification
    Tester Audit puis Enforced
    Impact
    Extension contrôlée ou arrêt.
    Retour arrière
    Suspendre la vague et appliquer le runbook de retour arrière.

La procédure isole la première phase défaillante de Troubleshooting App Control et WDAC avant d’appliquer une correction.

08

Fonctionnement détaillé de Troubleshooting App Control et WDAC

Je reproduis le lancement avec l’utilisateur et le chemin d’origine. Copier le binaire dans un autre répertoire, lancer en administrateur ou utiliser un shell différent peut changer la règle évaluée et masquer la cause.

CiTool -lp liste les politiques actives, leur friendly name, PolicyID, version et mode. Je recherche les politiques inbox, base et supplemental ainsi que les anciennes versions encore présentes.

Le canal CodeIntegrity Operational fournit les événements d’audit et de blocage des exécutables, DLL et drivers. Je filtre autour de l’heure exacte puis conserve le message complet, le hash et les informations de signature.

  • heure et scénario de reproduction
  • accès aux journaux Code Integrity
  • CiTool et CiDiag disponibles
  • XML source versionné
09

Traitement, exploitation et cas limites de Troubleshooting App Control et WDAC

Les scripts peuvent produire une information complémentaire dans AppLocker MSI and Script. Pour Managed Installer, le canal AppLocker EXE and DLL doit montrer que le processus d’installation est reconnu avec PolicyName MANAGEDINSTALLER.

Un fichier signé peut être bloqué si la chaîne ne correspond pas au niveau Publisher choisi, si le certificat est expiré sans timestamp acceptable, si le nom de produit diffère ou si une règle Deny l’emporte.

Une DLL manquante apparaît parfois après que l’exécutable principal a démarré. Je collecte toute la séquence et ses processus enfants au lieu d’autoriser seulement le premier fichier visible.

  • Créer la règle minimale en copie
  • Tester Audit puis Enforced
  • Valider l’application et le rollback
10

Lire les états propres à Troubleshooting App Control et WDAC

Microsoft fournit CiDiag et le guide de debugging pour rassembler policies, événements et AppLocker. Je protège les chemins utilisateurs, éditeurs internes et noms de logiciels sensibles avant transfert.

La règle proposée est générée dans une copie versionnée de la policy. Elle est testée en Audit sur la même reproduction, puis en Enforced sur un appareil de laboratoire; le PolicyID et la version sont contrôlés après déploiement.

Si le poste ne peut plus démarrer ou joindre Intune, le runbook hors ligne prévaut. Il doit avoir été testé avec BitLocker, les clés de récupération et la procédure Microsoft correspondant au type de policy.

  • Aucun événement visible — Horloge et logs
  • EXE autorisé, app échoue — Séquence complète
  • Publisher rule inactive — Signer information
  • Policy corrigée sans effet — CiTool PolicyID/version
11

Pilote et suivi opérationnel de Troubleshooting App Control et WDAC

Le pilote couvre le périmètre App Control, WDAC, Troubleshooting, CodeIntegrity et contrôle Reproduire sans changer le contexte. Lister toutes les policies actives. Exporter CodeIntegrity et AppLocker. Les résultats sont segmentés selon les populations réellement concernées par Troubleshooting App Control et WDAC.

Les cas d’échec « Aucun événement visible », « EXE autorisé, app échoue », « Publisher rule inactive » sont reproduits lorsque c’est possible. Ils vérifient que l’écart reste visible et que la procédure indique une preuve exploitable.

Le suivi après déploiement conserve ne pas passer globalement en Audit en réaction à un ticket, une règle Deny reste prioritaire, analyser les DLL et enfants, ne pas effacer les policies sans plan. Une évolution de version, de licence ou de dépendance déclenche une nouvelle lecture de ces points.

12

Commandes et scripts de diagnostic en lecture seule

Les exemples ci-dessous contrôlent Reproduire sans changer le contexte. Lister toutes les policies actives. Exporter CodeIntegrity et AppLocker. Identifier fichier, signature et PolicyID. Leur sortie doit être rapprochée de l’heure de l’incident et du contexte d’exécution concerné.

Pour Troubleshooting App Control et WDAC, les données utiles se lisent dans les états locaux, les journaux et les rapports cités dans chaque exemple. Une valeur isolée ne remplace pas cette corrélation.

POWERSHELLCollecte ciblée d’un blocage App Control — lecture seule
# Collecte de diagnostic
$ErrorActionPreference = 'Stop'
try {
  $since = (Get-Date).AddHours(-2)
  CiTool.exe -lp -json
  Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-CodeIntegrity/Operational';StartTime=$since} | Select-Object TimeCreated,Id,Message
  Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-AppLocker/MSI and Script';StartTime=$since} | Select-Object TimeCreated,Id,Message
  Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-AppLocker/EXE and DLL';StartTime=$since} | Select-Object TimeCreated,Id,Message
} catch { Write-Error "Collecte du blocage impossible : $($_.Exception.Message)"; exit 1 }

Adapter la fenêtre à la reproduction. Les chemins, éditeurs et noms d’utilisateur sont des données à minimiser.

POWERSHELLÉvénements CodeIntegrity 3077/3089 et politiques actives
$ErrorActionPreference = 'Stop'
try {
  Get-WinEvent -LogName 'Microsoft-Windows-CodeIntegrity/Operational' -MaxEvents 150 |
    Where-Object Id -In 3076,3077,3089 |
    Select-Object TimeCreated,Id,LevelDisplayName,Message
  if (Get-Command CiTool.exe -ErrorAction SilentlyContinue) {
    CiTool.exe --list-policies
  }
}
catch {
  Write-Error "Collecte impossible : $($_.Exception.Message)"
  exit 1
}

La sortie fournit un instantané à rapprocher de l’heure du symptôme, de l’affectation et des autres journaux cités dans l’article.

LOGDécision WDAC et signature associée
[16:44:08.220] CodeIntegrity EventId=3077 File=C:\Program Files\Example\agent.exe
[16:44:08.221] CodeIntegrity PolicyId=<GUID> Decision=Deny
[16:44:08.222] CodeIntegrity EventId=3089 Signer=<PUBLISHER> Status=Untrusted
[16:44:08.500] Application Launch=Blocked User=<USER>
[16:46:10.050] Review      ExpectedPolicy=<GUID> Match=True

Exemple de chronologie attendue. Les valeurs sont fictives; l’ordre des événements et les identifiants communs sont les éléments à reproduire avec les données du poste concerné.

13

Arbre de décision : symptômes, causes et corrections

La matrice couvre notamment Aucun événement visible, EXE autorisé, app échoue, Publisher rule inactive, Policy corrigée sans effet. Ces symptômes servent de points d’entrée; la preuve indiquée dans la même ligne confirme ou écarte la cause.

Après correction, les contrôles Reproduire sans changer le contexte, Lister toutes les policies actives et Exporter CodeIntegrity et AppLocker sont rejoués dans les mêmes conditions pour vérifier que le problème n’a pas simplement changé de phase.

MATRICEMatrice de diagnostic
SymptômeCause à confirmerPreuve recherchéeCorrection ciblée
Aucun événement visibleMauvais canal ou heureHorloge et logsÉtendre la fenêtre de collecte
EXE autorisé, app échoueDLL ou child process bloquéSéquence complèteTraiter la dépendance
Publisher rule inactiveSignature/niveau différentsSigner informationAjuster le niveau minimal
Policy corrigée sans effetAncienne version activeCiTool PolicyID/versionCorriger le déploiement
Managed Installer ignoréTag ou AppLocker absent8002/8003/8004Corriger MI avant l’app

La matrice relie les symptômes propres à Troubleshooting App Control et WDAC aux preuves qui permettent de choisir une correction ciblée.

14

Validation de la correction et critères de clôture

La correction de Troubleshooting App Control et WDAC est validée avec les mêmes points de mesure que le diagnostic initial. Le résultat local et l’état remonté dans le service doivent raconter la même chronologie.

  • Reproduire sans changer le contexte.
  • Lister toutes les policies actives.
  • Exporter CodeIntegrity et AppLocker.
  • Identifier fichier, signature et PolicyID.
  • Créer la règle minimale en copie
  • Tester Audit puis Enforced
  • Valider l’application et le rollback
15

Retour arrière, escalade et points de vigilance

Le retour arrière de Troubleshooting App Control et WDAC restaure l’état connu décrit ci-dessous. Sa réussite se vérifie sur le poste et dans le service, pas seulement par la disparition d’une affectation.

Une escalade conserve les preuves correspondant à Reproduire sans changer le contexte. Lister toutes les policies actives. Exporter CodeIntegrity et AppLocker. Identifier fichier, signature et PolicyID. ainsi que les causes déjà écartées.

MATRICERetour arrière
Action
retirer uniquement la policy supplémentaire fautive
restaurer la version précédente du XML avec son PolicyID maîtrisé
utiliser le runbook de récupération hors ligne si la gestion cloud est indisponible
MATRICEPoints de vigilance
Point à contrôler
ne pas passer globalement en Audit en réaction à un ticket
une règle Deny reste prioritaire
analyser les DLL et enfants
ne pas effacer les policies sans plan
R

Références et mots-clés

Références techniques publiques

App ControlWDACTroubleshootingCodeIntegrityAppLockerCiTool

Continuer la lecture

Modern Workplace LabOMA-DM et WinDC en double inscriptionEndpoint LabDiagnostic complet des applications Win32