Skip to content

Glossaire

__FilterToConsumerBinding

L'objet WMI qui relie un filtre à un consommateur d'événements. Sans lui, rien ne se déclenche ; avec lui, le consommateur s'exécute à chaque correspondance.

Une instance de __FilterToConsumerBinding associe un __EventFilter à un consommateur d'événements. C'est le troisième objet d'un abonnement aux événements WMI, et celui qui le rend actif : dès que la liaison existe, WMI exécute le consommateur chaque fois que le filtre correspond. Ses propriétés Filter et Consumer sont des chemins d'objets tels que __EventFilter.Name="BVTFilter" et CommandLineEventConsumer.Name="BVTConsumer". Elle enregistre aussi un CreatorSID et quelques options de remise comme DeliverSynchronously. Comme __EventFilter, la classe est une classe système définie dans __SystemClass.

Pourquoi c'est important en investigation

C'est la liaison qui transforme deux objets d'apparence anodine en persistance : c'est donc le point de départ naturel d'une analyse. Un filtre ou un consommateur qu'aucune liaison ne référence est inerte ; une liaison vous indique précisément quel déclencheur exécute quelle action. Un filtre peut alimenter plusieurs consommateurs et un consommateur peut servir plusieurs filtres, si bien qu'un attaquant peut rattacher un nouveau consommateur à un filtre existant, même un filtre par défaut. Comptez les liaisons, pas seulement les objets.

L'enregistrement d'une liaison est aussi ce que Windows journalise : l'événement 5861 dans Microsoft-Windows-WMI-Activity/Operational, et l'événement Sysmon 21 lorsque Sysmon est configuré. Ces événements permettent de dater un abonnement, ce que le dépôt seul ne permet pas de faire de manière fiable.

Exemple

Les deux chaînes de référence d'une liaison sont stockées en clair dans le tas de l'enregistrement, dans OBJECTS.DATA :

__FilterToConsumerBinding
    Filter   = __EventFilter.Name="IntelPerfMonitor"
    Consumer = CommandLineEventConsumer.Name="IntelPerfMonitor"

C'est ce que recherche PyWMIPersistenceFinder de David Pany, et c'est pourquoi les liaisons peuvent être retrouvées même après leur suppression, lorsque seul un fragment de l'enregistrement subsiste dans l'espace résiduel d'une page. L'exemple fourni avec l'outil contient un tel cas : un filtre d'ouverture de session supprimé et sa liaison.

Termes associés

WMI Parser part des liaisons et affiche chacune avec son filtre et son consommateur, qu'ils soient actifs ou récupérés. Pour savoir comment retrouver les liaisons supprimées, lisez Récupérer une persistance WMI supprimée dans OBJECTS.DATA.