AppInit_DLLs
Qu'est-ce que AppInit_DLLs ?
AppInit_DLLsTechnique de persistance Windows historique qui abuse d'une valeur du registre pour faire charger une DLL spécifiée dans tout processus utilisateur liant user32.dll.
L'abus d'AppInit_DLLs (MITRE ATT&CK T1546.010) vise HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs et son jumeau WOW6432Node. Lorsque LoadAppInit_DLLs vaut 1, la routine d'initialisation de user32.dll mappe chaque DLL listée dans AppInit_DLLs dans tout processus qui charge user32.dll, c'est-à-dire pratiquement toute application graphique interactive. Une seule écriture dans le registre procure donc une exécution de code étendue et une persistance, s'exécutant comme un « déclencheur sur nouveau processus » plutôt qu'un autodémarrage unique.
La technique est ancienne mais instructive. Elle a fourni le mécanisme de chargement du célèbre rootkit Vanquish, et des logiciels commerciaux l'ont historiquement (et maladroitement) utilisée : Nvidia et divers IME livraient des AppInit DLLs, ce qui explique pourquoi les équipes de sécurité ne peuvent pas simplement alerter dès que la valeur est non vide. Depuis Windows 8, lorsque Secure Boot est activé, le mécanisme AppInit est désactivé sauf si chaque DLL listée est signée, ce qui réduit fortement sa portée ; sous Windows 10/11 avec Secure Boot activé, il est pratiquement mort. Il refait surface sur les parcs hérités Windows 7/Server 2008 et sur les hôtes où Secure Boot a été désactivé pour des raisons de compatibilité.
Défenses : garder Secure Boot activé, appliquer la stratégie « exiger des AppInit DLLs signées », établir une référence de la valeur avec Autoruns de Sysinternals, et alerter sur les écritures dans le registre vers ces clés via Sysmon Event ID 13 ou la télémétrie EDR.
flowchart TD
A[Attaquant avec admin local] --> W[Ecrit le chemin de la DLL dans la cle AppInit_DLLs]
W --> L[Definit LoadAppInit_DLLs = 1]
L --> N[Un nouveau processus GUI demarre]
N --> U[Le processus charge user32.dll]
U --> SB{Secure Boot actif et DLL non signee?}
SB -->|Oui| BLK[Chargement ignore - technique neutralisee]
SB -->|Non| INJ[DLL malveillante mappee dans le processus]
INJ --> RUN[Le code s'execute dans chaque app interactive -> persistance]
W -.detecte.-> DET[Alertes Sysmon EID13 / reference Autoruns]● Exemples
- 01
Ajouter le chemin d'une DLL auxiliaire malveillante à AppInit_DLLs sur un serveur Windows 7 pour journaliser chaque frappe dans tous les processus.
- 02
Associer AppInit_DLLs à Secure Boot désactivé pour déployer un rootkit en espace utilisateur.
● Questions fréquentes
Qu'est-ce que AppInit_DLLs ?
Technique de persistance Windows historique qui abuse d'une valeur du registre pour faire charger une DLL spécifiée dans tout processus utilisateur liant user32.dll. Cette notion relève de la catégorie Attaques et menaces en cybersécurité.
Que signifie AppInit_DLLs ?
Technique de persistance Windows historique qui abuse d'une valeur du registre pour faire charger une DLL spécifiée dans tout processus utilisateur liant user32.dll.
Comment se défendre contre AppInit_DLLs ?
Les défenses contre AppInit_DLLs combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de AppInit_DLLs ?
Noms alternatifs courants : Injection AppInit DLL, Persistance AppInit user32.