Glossaire
__EventFilter
La classe WMI qui décrit le déclencheur d'un abonnement aux événements : une requête WQL nommée, son langage et l'espace de noms surveillé.
Une instance de __EventFilter est le quand d'un abonnement aux événements WMI. C'est une requête d'événements WQL nommée : WMI l'évalue en continu et, chaque fois qu'un événement correspond, transmet cet événement à chaque consommateur d'événements lié au filtre. Ses propriétés sont Name, Query, QueryLanguage (toujours WQL en pratique), EventNamespace (l'espace de noms dont les événements sont surveillés, généralement root\cimv2), EventAccess et CreatorSID. La classe elle-même est une classe système, définie dans __SystemClass.
Pourquoi c'est important en investigation
La requête vous indique quand la charge utile s'exécute, ce qui structure le reste de la chronologie. Les filtres utilisés pour la persistance surveillent souvent le temps de fonctionnement du système (pour que l'action s'exécute peu après chaque démarrage), les ouvertures de session, le démarrage d'un processus donné, l'insertion d'un périphérique ou un minuteur WMI. CreatorSID enregistre le compte qui a créé le filtre.
Un filtre seul ne fait rien : il n'agit que lorsqu'un __FilterToConsumerBinding le relie à un consommateur. Les attaquants lient parfois leur propre consommateur à un filtre existant, y compris un filtre par défaut : comptez donc les liaisons qui référencent chaque filtre plutôt que de juger le filtre sur son nom.
Exemple
Le déclencheur classique sur le temps de fonctionnement, tiré de l'exemple de WMI Parser :
SELECT * FROM __InstanceModificationEvent WITHIN 60
WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'
AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 325
WMI interroge la classe de performances toutes les 60 secondes et se déclenche lorsque le temps de fonctionnement est compris entre 240 et 325 secondes, soit environ quatre minutes après chaque démarrage. Avec EventNamespace défini sur root\cimv2, ce filtre fonctionne même lorsqu'il est enregistré dans root\subscription, là où résident normalement les filtres de persistance.
Termes associés
- WQL (WMI Query Language)
- Consommateur d'événements (__EventConsumer)
- __FilterToConsumerBinding
- Espace de noms WMI
WMI Parser affiche la requête de chaque filtre à côté du consommateur qu'il déclenche. Pour une vue d'ensemble, lisez La persistance par abonnement aux événements WMI expliquée.