Glossaire
Espace de noms WMI (root\subscription)
Un conteneur de classes et d'instances WMI, comparable à un dossier, comme root\cimv2. Les abonnements permanents résident normalement dans root\subscription.
Un espace de noms WMI regroupe des classes et des instances, comme un dossier regroupe des fichiers. Les espaces de noms forment une arborescence sous root, et chaque objet WMI appartient à exactement l'un d'entre eux. Quelques-uns comptent particulièrement en investigation :
root\cimv2contient les classes Win32 (processus, services, disques, ouvertures de session) et constitue la source habituelle des événements.root\subscriptioncontient les classes de consommateurs d'événements standard et, normalement, les abonnements permanents aux événements.root\defaultest un autre endroit où des abonnements sont parfois enregistrés.root\ccm\SoftwareMeteringAgentn'existe qu'avec le client ConfigMgr et contientCCM_RecentlyUsedApps.
Les classes système telles que __EventFilter et __FilterToConsumerBinding sont définies dans __SystemClass, et chaque espace de noms liste ses espaces de noms enfants sous forme d'instances __NAMESPACE.
Pourquoi c'est important en investigation
Un abonnement n'a pas besoin de résider dans root\subscription pour fonctionner. Un __EventFilter indique l'espace de noms qu'il surveille dans sa propriété EventNamespace : un filtre, un consommateur et une liaison enregistrés dans root\cimv2 ou root\default peuvent donc tout de même surveiller les événements de root\cimv2. Les requêtes en direct qui ne regardent que root\subscription les manquent ; vérifiez tous les espaces de noms, ou analysez le dépôt entier.
Dans le dépôt CIM, les noms d'espaces de noms n'apparaissent que sous forme de hachages dans les clés d'INDEX.BTR (NS_<hash>) ; les noms lisibles sont reconstruits en parcourant les instances __NAMESPACE depuis root. Les enregistrements récupérés par carving dans OBJECTS.DATA n'indiquent pas de quel espace de noms ils proviennent : une liaison récupérée peut donc avoir résidé n'importe où.
Exemple
Lister les objets d'abonnement dans les espaces de noms habituels sur un hôte en fonctionnement :
'root/subscription','root/cimv2','root/default' | ForEach-Object {
Get-CimInstance -Namespace $_ -ClassName __FilterToConsumerBinding -ErrorAction SilentlyContinue
}
Cette commande ne montre que les objets actifs et dépend du service WMI d'un hôte potentiellement compromis : utilisez-la pour le tri initial, et analysez aussi le dépôt collecté.
Termes associés
WMI Parser indique l'espace de noms de chaque objet trouvé via l'index. Pour savoir quoi vérifier au-delà de root\subscription, consultez la Checklist d'investigation d'une persistance WMI.