Aller au contenu

Persistance

Référentiel WMI et SCCM RecentlyUsedApps

Fiche référentiel WMI : OBJECTS.DATA, filtres, consommateurs et liaisons d'événements, WMI-Activity 5857–5861, fichiers MOF et CCM_RecentlyUsedApps.

Emplacement
C:\Windows\System32\wbem\Repository\OBJECTS.DATA
Prouve
Une persistance WMI sans fichier a été posée ; sur un client SCCM, quels programmes ont tourné et par qui
Horodatages
Aucune heure de création sur les abonnements ; dates $SI du dépôt (NTFS, UTC) ; LastUsedTime CCM en CIM DATETIME avec décalage UTC
Rétention
Abonnements persistants jusqu'à suppression, traces dans les pages libres d'OBJECTS.DATA ; journal WMI-Activity petit, en rotation rapide
Accès
Administrateur ; fichiers du dépôt ouverts par le service WMI : collecte via VSS ou NTFS brut (KAPE WBEM) ; requêtes à chaud via Get-CimInstance
Type
Base de données
Windows
XPVista / 78 / 8.11011
Cible KAPE
WBEMMOFEventLogs
Velociraptor
Windows.Triage.Targets:WBEMMOFEventLogs

Présentation

Windows Management Instrumentation (WMI) conserve ses classes et ses instances dans le référentiel CIM, un ensemble de fichiers de base de données situés sous wbem\Repository. Deux éléments de cette base intéressent l'enquêteur :

  • Les abonnements permanents aux événements, technique de persistance sans fichier bien connue. Un __EventFilter (une requête WQL qui décrit le déclencheur), un consommateur d'événements (ce qu'il faut lancer) et un __FilterToConsumerBinding (qui relie les deux) sont stockés sous forme d'objets. Une fois la liaison créée, le service WMI exécute le consommateur en SYSTEM à chaque déclenchement du filtre, sans rien dans les clés Run, les services ou les tâches planifiées.
  • Les données de mesure logicielle de SCCM. Sur les clients Configuration Manager, la classe CCM_RecentlyUsedApps de l'espace de noms root\ccm\SoftwareMeteringAgent recense les exécutables lancés, avec l'utilisateur, le nombre de lancements et la date de dernière utilisation. C'est une source solide de preuve d'exécution qui survit à la suppression du binaire.

Emplacement

ÉlémentEmplacementRemarques
Référentiel CIM (Vista et suivants)C:\Windows\System32\wbem\Repository\ : OBJECTS.DATA, INDEX.BTR, MAPPING1.MAP, MAPPING2.MAP, MAPPING3.MAPTous les fichiers sont nécessaires pour analyser correctement les objets
Référentiel CIM (XP / 2003)C:\Windows\System32\wbem\Repository\FS\ (plus MAPPING.VER)
Abonnements aux événementsEspace de noms root\subscription (vérifiez aussi root\default et les autres)Classes __EventFilter, sous-classes de __EventConsumer, __FilterToConsumerBinding
Mesure SCCMEspace de noms root\ccm\SoftwareMeteringAgent, classe CCM_RecentlyUsedAppsUniquement sur les clients ConfigMgr
Journal d'activité WMIMicrosoft-Windows-WMI-Activity/Operational (événements 5857 à 5861)Absent de Windows 7 / Server 2008 R2
MOF à récupération automatiqueSOFTWARE : Microsoft\Wbem\CIMOM, valeur Autorecover MOFs ; copies dans C:\Windows\System32\wbem\AutoRecover\MOF compilés avec -autorecover ou #pragma autorecover

Ce que l'artefact prouve

  • Une persistance : un filtre, un consommateur et une liaison, avec la commande ou le script exécuté, même sans fichier déposé.
  • Une exécution sur les clients SCCM : nom de l'exécutable, dossier, dernier utilisateur, nombre de lancements, date de dernière utilisation et informations de version du fichier.
  • Des événements d'enregistrement : le 5861 consigne une nouvelle liaison permanente avec la requête du filtre et le détail du consommateur, quand le journal existe.
  • Elle ne donne pas de date de création documentée pour les objets d'abonnement, ni leur auteur. Associez-la aux journaux d'événements, à Sysmon (événements 19, 20, 21) et aux créations de processus.

Champs clés

Objet / champSignification
__EventFilter.Name, .Query, .EventNamespaceDéclencheur : requête WQL de type minuterie, ouverture de session ou démarrage de processus
CommandLineEventConsumer.CommandLineTemplate / ExecutablePathProgramme lancé par le consommateur (enfant de WmiPrvSE.exe)
ActiveScriptEventConsumer.ScriptText / ScriptFileName, ScriptingEngineVBScript ou JScript exécuté par scrcons.exe
Autres consommateursLogFileEventConsumer, NTEventLogEventConsumer, SMTPEventConsumer (rarement malveillants)
__FilterToConsumerBinding.Filter / .ConsumerRéférences qui relient un filtre à un consommateur
CCM_RecentlyUsedApps.ExplorerFileName, FolderPathNom et dossier de l'exécutable
LastUserName, LaunchCount, LastUsedTimeDernier utilisateur, nombre de lancements, date du dernier lancement
FileDescription, ProductName, CompanyName, FileSize, OriginalFileNameMétadonnées de version, utiles pour les outils renommés

Horodatages

HorodatagePositionné quandFormatPièges
Objets d'abonnementAucune date de création documentéen/aDatez-les avec le 5861, Sysmon 19 à 21 et les horodatages des fichiers du référentiel
Modification $SI de OBJECTS.DATA / INDEX.BTRÉcriture dans le référentielNTFS, UTCBouge avec l'activité WMI normale : simple borne grossière
CCM_RecentlyUsedApps.LastUsedTimeL'agent de mesure met l'enregistrement à jourChaîne DATETIME CIM avec suffixe de décalage UTCLisez le décalage ; dernier lancement uniquement
WMI-Activity 5857 à 5861Fournisseur chargé, erreur, activité d'abonnement, nouvelle liaison permanenteEVTX, UTCJournal de petite taille ; le 5861 peut être la seule trace d'un enregistrement
$SI / $FN d'un fichier MOFFichier déposé pour compilationNTFS, UTCLes attaquants suppriment souvent le .mof après mofcomp

Rétention et effacement

  • Les abonnements persistent jusqu'à la suppression des objets (par exemple avec Remove-WmiObject ou Remove-CimInstance). Les objets supprimés peuvent subsister dans des pages inutilisées de OBJECTS.DATA jusqu'à leur écrasement ; une recherche de chaînes dans le fichier brut peut les faire ressortir.
  • CCM_RecentlyUsedApps conserve ses enregistrements tant que le client SCCM est installé ; les copies plus anciennes du référentiel dans les clichés instantanés peuvent compléter l'historique.
  • Le journal WMI-Activity Operational est petit et tourne vite sur un système chargé.
  • Quand WMI reconstruit un référentiel corrompu, il recompile tous les MOF listés dans Autorecover MOFs : un abonnement installé depuis un MOF à récupération automatique réapparaît après la reconstruction.

Collecte

  • Cible KAPE : WBEM (tout le dossier Repository), MOF (tous les *.MOF du volume, ce qui est lent) et EventLogs pour le canal WMI-Activity.
  • Velociraptor (Windows.Triage.Targets) : WBEM, MOF, EventLogs. Analyse en direct : Windows.Persistence.PermanentWMIEvents (liaisons avec leurs filtres et consommateurs, dans tous les espaces de noms) ; Windows.System.WMIQuery peut interroger CCM_RecentlyUsedApps sur un client en direct.
  • Commandes natives : les fichiers du référentiel sont maintenus ouverts par le service WMI ; collectez-les depuis un cliché instantané ou avec un outil de copie brute, et interrogez les objets en direct avec PowerShell.
Get-CimInstance -Namespace root\subscription -ClassName __EventFilter
Get-CimInstance -Namespace root\subscription -ClassName __EventConsumer
Get-CimInstance -Namespace root\subscription -ClassName __FilterToConsumerBinding
Get-CimInstance -Namespace root\ccm\SoftwareMeteringAgent -ClassName CCM_RecentlyUsedApps
wevtutil epl Microsoft-Windows-WMI-Activity/Operational E:\case\WMI-Activity.evtx

Outils d'analyse

  • python-cim / flare-wmi (Mandiant, open source) : analyse un référentiel hors ligne (OBJECTS.DATA, INDEX.BTR, MAPPING*.MAP) ; des scripts d'exemple listent la persistance et les enregistrements CCM_RecentlyUsedApps.
  • WMI_Forensics (David Pany, open source) : PyWMIPersistenceFinder.py retrouve les liaisons par recherche dans OBJECTS.DATA ; CCM_RUA_Finder.py extrait les enregistrements CCM_RecentlyUsedApps en TSV.
  • Velociraptor : Windows.Persistence.PermanentWMIEvents.
  • Autoruns (Sysinternals, gratuit) : onglet WMI sur un système en direct.
  • EvtxECmd (Eric Zimmerman) : événements WMI-Activity en CSV.
  • RegRipper : le plugin wbem lit la clé CIMOM, dont Autorecover MOFs.

Conseils d'investigation

  • Chaque liaison de root\subscription mérite un examen ; les légitimes sont rares (quelques agents d'éditeurs) et faciles à référencer sur un parc.
  • Cherchez les CommandLineEventConsumer qui lancent powershell.exe, cmd.exe ou des LOLBins, et tout ActiveScriptEventConsumer.
  • Les filtres sur la durée de fonctionnement ou à intervalle (Win32_PerfFormattedData_PerfOS_System, __IntervalTimerInstruction) et ceux sur l'ouverture de session ou le démarrage de processus sont des déclencheurs courants.
  • Une arborescence WmiPrvSE.exe -> powershell.exe ou une activité de scrcons.exe signale un consommateur qui se déclenche ; confirmez avec le Prefetch de SCRCONS.EXE.
  • mofcomp.exe dans le Prefetch ou un MOF hors de wbem suggère des abonnements installés à partir d'un fichier MOF.
  • Sur les clients SCCM, analysez CCM_RecentlyUsedApps même hors affaire WMI : on y trouve souvent des outils d'attaque disparus du disque, d'Amcache et du Prefetch.
  • WMI à distance (wmic /node, Invoke-WmiMethod) est un canal de mouvement latéral : corrélez avec les ouvertures de session réseau dans les journaux d'événements.

Artefacts liés

Termes du glossaire

Guides

Tous les artefacts sur une page : aide-mémoire