Glossar
WMI-Namespace (root\subscription)
Ein ordnerähnlicher Container für WMI-Klassen und -Instanzen, etwa root\cimv2. Permanente Event Subscriptions liegen normalerweise in root\subscription.
Ein WMI-Namespace gruppiert Klassen und Instanzen, so wie ein Ordner Dateien gruppiert. Namespaces bilden einen Baum unterhalb von root, und jedes WMI-Objekt gehört genau einem von ihnen an. Einige sind für Untersuchungen besonders wichtig:
root\cimv2enthält die Win32-Klassen (Prozesse, Dienste, Datenträger, Anmeldungen) und ist die übliche Quelle von Ereignissen.root\subscriptionenthält die Standard-Event-Consumer-Klassen und normalerweise die permanenten Event Subscriptions.root\defaultist ein weiterer Ort, an dem Subscriptions gelegentlich registriert werden.root\ccm\SoftwareMeteringAgentexistiert nur mit dem ConfigMgr-Client und enthältCCM_RecentlyUsedApps.
Systemklassen wie __EventFilter und __FilterToConsumerBinding sind in __SystemClass definiert, und jeder Namespace führt seine untergeordneten Namespaces als __NAMESPACE-Instanzen.
Warum das für Untersuchungen wichtig ist
Eine Subscription muss nicht in root\subscription liegen, um zu funktionieren. Ein __EventFilter nennt in seiner Eigenschaft EventNamespace den Namespace, den er überwacht. Filter, Consumer und Binding, die in root\cimv2 oder root\default registriert sind, können daher trotzdem Ereignisse in root\cimv2 überwachen. Live-Abfragen, die nur root\subscription betrachten, übersehen sie; prüfen Sie jeden Namespace oder analysieren Sie das gesamte Repository.
Im CIM-Repository erscheinen Namespace-Namen nur als Hashes in den Schlüsseln von INDEX.BTR (NS_<hash>); lesbare Namen werden rekonstruiert, indem man die __NAMESPACE-Instanzen ab root durchläuft. Aus OBJECTS.DATA gecarvte Datensätze geben nicht an, aus welchem Namespace sie stammen; ein wiederhergestelltes Binding kann also in jedem Namespace gelegen haben.
Beispiel
Subscription-Objekte in den üblichen Namespaces auf einem Live-System auflisten:
'root/subscription','root/cimv2','root/default' | ForEach-Object {
Get-CimInstance -Namespace $_ -ClassName __FilterToConsumerBinding -ErrorAction SilentlyContinue
}
Das zeigt nur aktive Objekte und verlässt sich auf den WMI-Dienst eines möglicherweise kompromittierten Hosts. Nutzen Sie es daher für die Triage und analysieren Sie zusätzlich das gesicherte Repository.
Verwandte Begriffe
WMI Parser gibt den Namespace jedes Objekts an, das über den Index gefunden wird. Was Sie über root\subscription hinaus prüfen sollten, zeigt die Checkliste für die Untersuchung von WMI-Persistenz.